diff --git a/docs/mindspore/source_zh_cn/design/images/dryrun.png b/docs/mindspore/source_zh_cn/design/images/dryrun.png new file mode 100644 index 0000000000000000000000000000000000000000..5abc00e007740c6c637d9e62b07df6b8675a231b Binary files /dev/null and b/docs/mindspore/source_zh_cn/design/images/dryrun.png differ diff --git a/docs/mindspore/source_zh_cn/design/multi_level_compilation.md b/docs/mindspore/source_zh_cn/design/multi_level_compilation.md index 2ca8537e1ec66af083b97fd81831d7c662b47060..163b9aa35f6c2476fd802da33071dcba733aea65 100644 --- a/docs/mindspore/source_zh_cn/design/multi_level_compilation.md +++ b/docs/mindspore/source_zh_cn/design/multi_level_compilation.md @@ -104,7 +104,16 @@ O0模式的图优化较少,基础的优化主要为后端LazyInline和No-task ### DryRun -MindSpore的DryRun功能能够在本地环境中模拟大集群中每个rank的内存消耗情况,从而在不依赖实际大集群资源的情况下,进行高效的设备内存模拟。这一功能对于大规模深度学习模型的开发和调试具有重要意义,尤其是在资源受限或开发初期阶段,能够显著提升开发效率和资源利用率。 +在大规模深度学习模型的训练过程中,用户写完网络脚本后,需要多轮试运行,调整并行策略、重计算、负载均衡等相关超参,该流程会消耗大量的device时间,造成资源浪费。MindSpore的Dry Run功能能够在本地环境中模拟大集群中每个rank的内存消耗情况,从而在不依赖实际大集群资源的情况下,进行高效的设备内存和计算性能模拟。因此,dryrun功能对于大规模深度学习模型的开发和调试具有重要意义,尤其是在资源受限或开发初期阶段,能够显著提升开发效率和资源利用率。 + +![dryrun](./images/multi_level_compilation/dryrun.png) + +用户可以根据自己的需求,通过使能环境变量 export MS_SIMULATION_LEVEL=0/1/2/3,设置模拟运行的级别。 +0:模型编译,仅占用CPU资源。用户可以观察到脚本和模型配置是否存在编译问题,如并行策略和设置卡数不匹配、数据集和模型输入长度不匹配等。编译完成后,也可以根据各个模块的编译时间针对性优化。 +1:在0的基础上增加了算子的输入和输出显存统计,仅占用CPU资源。用户可以结合根据统计结果进行显存分析,优化并行策略、调整负载均衡和重计算等与显存相关的超参。 +2:在1的基础上增加了算子的工作内存统计,占用CPU资源与需要模拟的卡数。 +3:在2的基础上增加了计算算子的运行统计,占用CPU资源与需要模拟的卡数。在显存分析的基础上,增加了当前卡的计算算子执行,用户可以结合profile分析计算算子耗时。 +如下图所示,用户可以在不占用大集群的情况下,通过使能不同的模拟级别,观察到图编译与运行时的运行结果,从而修改网络脚本,达到符合预期的性能。 ![jit_level_dryrun](./images/multi_level_compilation/jit_level_dryrun.png)