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

**迭代拖尾的性能优化**

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

· 通过参数索引设置 AllReduce 融合策略。仅支持ReduceOp.SUM和HCCL\_WORLD\_GROUP/NCCL\_WORLD\_GROUP。

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

· 具体可参考：[all\_reduce\_fusion\_config设置allreduce融合策略](https://www.mindspore.cn/docs/zh-CN/r2.0/api_python/mindspore/mindspore.set_auto_parallel_context.html?&highlight=all_reduce_fusion_config)

**其他方面的性能优化**

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

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

· 关闭summary

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

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

· 降低推理频率

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

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

· 关闭dump

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

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

· 降低日志级别

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

mindspore默认warning级别，export GLOG\_v=2即可。

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

· 优化CPU资源

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

