基于昇腾910的loss差异分析
硬件环境(Ascend/GPU/CPU): Ascend 910MindSpore版本: mindspore=2.1执行模式(PyNative/ Graph):GraphPython版本: Python=3.8.15操作系统平台: linux。
1 系统环境
硬件环境(Ascend/GPU/CPU): Ascend 910
MindSpore版本: mindspore=2.1
执行模式(PyNative/ Graph):Graph
Python版本: Python=3.8.15
操作系统平台: linux
2 loss差异分析
2.1 精度对齐依赖的功能
2.1.1 确定性计算
如何判断每次训练的loss差异是随机导致还是确定性计算导致:确定性计算差异基本小于0.0001。
确定性计算开启方式:
a. 如果是自己编包,设置export GE_GE_DETERMINACY_SWITCH=1(当前验证有效);
b. 可以试一下官方开启方式;
如何确认开启了确定性计算:在cce日志中可以确认确定性计算开启的情况,注意如果是确定性计算相关的修复版本的so替换,替换后需要删除算子编译缓存,否则不生效。
(确定性计算、GE算子修改后均需要清算子缓存 ~/atc_data/kernel_cache/)
2.1.2 融合算子开关控制
算子融合分为图融合和UB融合,提供“ALL”:“off”用于关闭全部的算子融合能力,但是目前发现图融合配置全关后会报错,UB融合可以使用all off。
在脚本执行路径下找到fusion_result.json文件,查看发生了哪些算子融合。修改算子融合配置:
sudo vim /usr/local/Ascend/ascend-toolkit/6.3.RC2/opp/built-in/fusion_pass/config/fusion_config.json
修改完之后重新运行脚本即可。
2.1.3 ge图和dump数据
保存ge图是通过环境变量控制:
export DUMP_GE_GRAPH=2
export DUMP_GRAPH_LEVEL=3
export DUMP_GRAPH_PATH= /onecard/ge_graph
dump数据:
在dump_data.json中修改dump数据的路径及配置,注意dump之前检查路径下的剩余空间,不要小于300G空闲存储。然后设置dump环境变量:
export MINDSPORE_DUMP_CONFIG=./dump_data.json
鲲鹏昇腾开发者社区是面向全社会开放的“联接全球计算开发者,聚合华为+生态”的社区,内容涵盖鲲鹏、昇腾资源,帮助开发者快速获取所需的知识、经验、软件、工具、算力,支撑开发者易学、好用、成功,成为核心开发者。
更多推荐



所有评论(0)