华为云AI开发平台ModelArts性能调优总体原则和思路_云淘科技
PyTorch在昇腾AI处理器的加速实现方式是以算子为粒度进行调用(OP-based),即通过Python与C++调用CANN层接口Ascend Computing Language(AscendCL)调用一个或几个亲和算子组合的形式,代替原有GPU的实现方式,具体逻辑模型参考此处。
在PyTorch模型迁移后进行训练的过程中,CPU只负责算子的下发,而NPU负责算子的执行,算子下发和执行异步发生,性能瓶颈在此过程中体现。在PyTorch的动态图机制下,算子被CPU一个个下发到NPU上执行。一方面,理想情况下CPU侧算子下发会明显比NPU侧算子执行更快,此时性能瓶颈主要集中在NPU侧;另一方面,理想情况下NPU侧算子计算流水线一直执行,不会出现NPU等待CPU算子下发即NPU空转的场景,如果存在,则CPU侧算子下发存在瓶颈。
图1 Host算子下发和Device算子执行
综上所述,性能优化的总体原则为:减少Host算子下发时间、减少Device算子执行时间。
训练代码迁移完成后,如存在性能不达标的问题,可参考下图所示流程进行优化。建议按照单卡、单机多卡、多机多卡的流程逐步做性能调优。
图2 性能调优总体思路
父主题: PyTorch迁移性能调优
同意关联代理商云淘科技,购买华为云产品更优惠(QQ 78315851)
内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家