【2023 · CANN训练营第一季】MindSpore模型快速调优攻略 第二章——MindSpore调试调优
1.生态迁移
生态迁移工具使用示例
生态迁移工具技术方案
不同框架间模型定义前端表达差别巨大(相同算子的API技术难点 、
算子功能、模型构建方式差别较大);
对于同一框架,不管前端表达差异如何,最终对应的计算
图是相似的。因此提出:基于模型的迁移方案
onnx介绍:
生态迁移工具迁移案例分享
教程步骤:
- ONNX模型导出;
- ONNX模型验证;
- MindConverter进行模型脚本和权重迁移;
- MindSpore模型验证;
2.模型精度调优
MindSpore调试器是为图模式训练提供的调试工具,可以用来查看并分析计算图节点的中间结果。
操作流程:
• 以调试器模式启动MindInsight,等待训练连接;
mindinsight start --port {PORT} --enable-debugger True --debugger-port {DEBUGGER_PORT}
• 配置相关环境变量,运行训练脚本;
export ENABLE_MS_DEBUGGER=1 export MS_DEBUGGER_PORT={DEBUGGER_PORT}
• 训练连接成功,在MindInsight调试器界面设置监测点;
• 在MindInsight调试器界面分析训练执行情况。
在MindSpore图模式的训练过程中,用户无法从Python层获取到计算图中间节点的结果,使得训练调试变得很困难。使用MindSpore调试器,用户可以:
• 在MindInsight调试器界面结合计算图,查看图节点的输出结果;
• 设置监测点,监测训练异常情况(比如检查张量溢出),在异常发生时追踪错误原因;
• 查看权重等参数的变化情况。
• 使用调试器功能对训练现场进行检查
– 配置“检查权重变化过小”监测点,检查权重是否变化过小;
– 配置“检查未变化权重”监测点,检查权重是否不更新;
– 配置“检查梯度消失”监测点,定位异常的梯度;
– 配置“检查张量溢出”监测点,定位NAN/INF出现位置;
– 配置“检查过大张量”监测点,定位出现大值的算子;
– 配置“检查权重变化过大”、“检查梯度消失”、“检查梯度过大”监测点,定位异常的权重或梯度;
3.模型性能调优
性能调优工具Profiler介绍
Profiler为MindSpore提供了性能调优能力,在算子性能、迭代性能、数据处理性能等方面提供了易用、丰富的调试功能,帮助用户快速定位性能瓶颈点,提升网络性能。
Profiler工具为用户提供的能力可以分成两部分:
MindSpore侧在训练脚本中为用户提供性能数据收
集的启动接口和数据分析接口,最终生成性能数据
文件;
MindInsight侧为用户提供可视化界面,将通过多个
维度展示性能数据以及统计分析结果。
使用方法:
- 训练开始阶段初始化Profiler,开始性能收集;
- 训练结束后使用analyse方法解析性能数据。
注意:
目前Profiler已经支持GPU场景,GPU下的使用方法和
Ascend的使用方法一致;
GPU初始化Profiler时只有output_path参数有效;
- 启动MindInsight可视化界面:
mindinsight start --port 9001 --summary-base-dir ./
- 通过浏览器访问MindInsight交互式界面:
<your server ip address>:9001/
- 停止MindInsight可视化服务:
mindinsight stop --port 9001
本章总结
• 生态迁移工具的能力与基本使用:
mindconverter --help
• 精度调试器的能力与基本使用;
mindinsight start --port {PORT} --enable-debugger True --debugger-port {DEBUGGER_PORT}
• 性能调试器的能力与基本使用;
训练脚本中添加:profiler = Profiler(), …, profiler.analyse()
• ONNX模型的基本概念:
– Graph, Node, Value Info, Initializer;
- 点赞
- 收藏
- 关注作者
评论(0)