大模型迭代拖尾和其他性能优化

迭代拖尾和其他性能优化

迭代拖尾的性能优化

  • 解析性能数据之后,如果该阶段耗占比较高,可能是集合通信耗时比较长。

  • 通过参数索引设置 AllReduce 融合策略。仅支持ReduceOp.SUM和HCCL_WORLD_GROUP/NCCL_WORLD_GROUP。

  • 没有默认值。如果不设置,则关闭算子融合。

  • 具体可参考:all_reduce_fusion_config设置allreduce融合策略

其他方面的性能优化

这里主要涉及代码或环境层面的优化。

代码优化:如关闭一些不必要的信息获取;关闭一些不必要的日志打印

  • 关闭summary

  • summary用于收集tensor信息,后续进行可视化,如可视化网络loss结果。

但正常流程不需要一直收集数据,所以可提过排查脚本,增加开关,在需要的时候再利用summary收集需要的信息;正常不开启。

  • 降低推理频率

  • 一般网络都会使用边训练边推理,来更好的评估网络,但频繁的推理会造成性能劣化。

所以可通过增加拉起推理的steps数来降低推理频率来优化后处理性能。

  • 关闭dump

  • dump主要用于分析精度问题,及进行溢出检测,正常流程不需要开启dump。

可env | grep "DUMP"查看是否开启dump,如果开启,需要排查脚本,并关闭相关环境变量。

  • 降低日志级别

  • 过多的日志打印会造成性能劣化。

mindspore默认warning级别,export GLOG_v=2即可。

TODO:增加晟腾日志及驱动日志环境变量

  • 优化CPU资源

  • 性能测试,最好保证机器独占。top指令查看,关闭其他程序。