更新时间:2024-12-30 GMT+08:00
训练网络迁移总结
- 确保算法在GPU训练时,持续稳定可收敛。避免在迁移过程中排查可能的算法问题,并且要有好的对比标杆。如果是NPU上全新开发的网络,请参考PyTorch迁移精度调优排查溢出和精度问题。
- 理解GPU和NPU的构造以及运行的差别,有助于在迁移过程中分析问题并发挥NPU的优势。由于构造和运行机制的差别,整个迁移过程并非是完全平替,GPU在灵活性上有其独特的优势,而NPU上的执行目前还是依赖于算子的下发,对于NPU构造的理解是昇腾训练迁移中必备的知识,只有对于昇腾有基础理解,配合一些诊断工具,面对复杂问题时,才能进行进一步诊断与定位,进而发挥NPU的能力。
- 性能调优可以先将重点放在NPU不亲和的问题处理上,确保一些已知的性能问题和优化方法得到较好的应用。通用的训练任务调优、参数调优可以通过可观测数据来进行分析与优化,一般来说分段对比GPU的运行性能会有比较好的参考。算子级的调优某些情况下如果是明显的瓶颈或者性能攻坚阶段,考虑到门槛较高,可以联系华为工程师获得帮助。
- 精度问题根因和表现种类很多,会导致问题定位较为复杂,一般还是需要GPU上充分稳定的网络(包含混合精度)再到NPU上排查精度问题。常见的精度调测手段,包含使用全精度FP32,或者关闭算子融合开关等,先进行排查。对于精度问题,系统工程人员需要对算法原理有较深入的理解,仅从工程角度分析有时候会非常受限,同时也可联系华为工程师进行诊断与优化。
父主题: GPU训练业务迁移至昇腾的通用指导