有没有什么可以节省大量时间的 Deep Learning 效率神器?

 

在Deep Learning的过程中,处处都有挑战: 训练过程难以观察、多次实验管理分析手段原始效率低、人肉调参费时费力、精度性能问题难定位等。推荐使用MindSpore生态下的可视化调试调优工具——MindInsight,MindInsight中集成了精度调优、性能调优、脚本迁移等功能,帮助你高效管理实验,快速定位问题。

 

⦁ 方便地观察训练过程,高效对实验进行记录和分析

在MindSpore中训练,只需要修改几行代码即可使用SummaryCollector轻松观察训练过程,管理分析多次实验记录:

有没有什么可以节省大量时间的 Deep Learning 效率神器?

 

每次进行训练时,SummaryCollector都会自动在上面指定的summary_base_dir1目录中创建一个以exp_打头,带有时间戳的文件夹,例如exp_210217_143821。

然后在相同目录中启动MindInsight: mindinsight start --summary-base-dir ./summary_base_dir1。即可在MindInsight给出的网址上可视化查看训练过程,对多次实验记录进行分析。

 

在MindInsight首页,可以查看训练列表:

有没有什么可以节省大量时间的 Deep Learning 效率神器?

图 1训练列表

 

点击“训练看板”按钮,可以可视化某次训练的训练过程,支持对标量、图像、直方图(参数分布图)、计算图、数据图等数据的可视化。特别地,MindInsight支持可视化通过TensorSummary算子记录下来的张量数据,能够在网页上查看张量的具体取值。

有没有什么可以节省大量时间的 Deep Learning 效率神器?

图 2 训练看板

 

有没有什么可以节省大量时间的 Deep Learning 效率神器?

图 3 可视化查看张量数据

 

点击“溯源分析”按钮,可以高效地分析实验记录。我们支持:

⦁ 通过平行坐标轴可视化实验记录

⦁ 按某个属性对实验记录进行排序

⦁ *地通过平行坐标轴或表格进行筛选

⦁ 自定义备注信息

⦁ 记录自定义溯源信息

⦁ 对参数进行分析,帮你画出参数和优化目标的散点图,合理选择最优的参数取值。

有没有什么可以节省大量时间的 Deep Learning 效率神器?

图 4溯源分析页面

 

MindInsight还支持自动对超参进行搜索,通过 mindoptimizer --config ./config.yaml --iter 10 命令即可执行超参搜索。当前支持基于高斯过程的超参搜索算法,更多搜索算法正在开发中。

 

数据收集教程:收集Summary数据 - MindSpore master documentation

训练看板教程:查看训练看板 - MindSpore master documentation

溯源分析教程:查看溯源和对比看板 - MindSpore master documentation

超参搜索教程: 使用mindoptimizer进行超参调优 - MindSpore master documentation

 

⦁ 快速定位精度问题

在模型的开发过程中,精度达不到预期常常让人头疼。MindSpore提供了配套的精度调优指导文档和调试器等工具,帮助用户快速发现精度问题。

 

精度调优指导:

第一篇:MindSpore模型精度调优实战(一)精度问题的常见现象、原因和简要调优思路_MindSpore_昇腾论坛_华为云论坛

第二篇:MindSpore模型精度调优实战(二)精度调试调优思路_MindSpore_昇腾论坛_华为云论坛

 

调试器是为图模式训练提供的调试工具,可以用来查看并分析计算图节点的中间结果。调试器为大家提供了以下能力:

1. 丰富的训练信息检查能力。支持对权重、激活、梯度、张量等进行检查,提前发现训练问题。

2. 支持重新检查。优化检查规则后支持对当前数据进行重新检查,不漏过可疑点。

3. 开箱即用。自动推荐监测点,帮助用户发现常见精度问题。展示调优建议和张量关系图,帮助理清问题定位思路,快速定位问题。

有没有什么可以节省大量时间的 Deep Learning 效率神器?

图 5 使用调试器定位张量溢出问题

 

调试器的使用方法也很简单:

⦁ 以调试模式启动MindInsight(调试器页面通过MindInsight呈现);

mindinsight start --enable-debugger True –debugger-port 50051

⦁ 配置相关环境变量,以调试模式运行训练脚本;

export ENABLE_MS_DEBUGGER=True

export MS_DEBUGGER_HOST=127.0.0.1

export MS_DEBUGGER_PORT=50051

设置model.train中的dataset_sink_mode为False

运行训练脚本 python train.py

⦁ 训练开始,在MindInsight调试器界面设置监测点,分析训练执行情况。

 

调试器教程:使用调试器 - MindSpore master documentation

 

⦁ 快速定位性能问题

MindSpore提供性能分析组件,可以快速定位网络训练过程中的性能瓶颈。我们将一次迭代中的时间分为迭代间隙、前向与反向执行、迭代拖尾三个阶段。简单(不一定准确)地来讲,三个阶段的含义如下:

⦁ 迭代间隙:获取数据用时,主要体现数据准备性能

⦁ 前向与反向执行:计算图执行用时,主要体现算子计算性能

⦁ 迭代拖尾:梯度聚合及参数更新用时,主要体现并行计算划分

 

基于这三个阶段,我们分别提供了迭代轨迹分析、数据准备分析、算子性能分析、timeline分析等组件。通过数据准备分析组件,可以定位性能瓶颈发生在哪个数据准备阶段;通过算子性能分析组件,可以定位哪个算子计算慢;通过timeline分析组件,可以对训练过程的执行情况进行细粒度分析,例如分析流切分方法是否合理,并行计算划分是否合理等。

 

你可能会问,看不懂性能数据怎么办?不用担心,MindInsight贴心地在智能小助手(页面左侧)中给出性能调试的建议,按照建议操作即可解决常见性能问题。

有没有什么可以节省大量时间的 Deep Learning 效率神器?

图 6 性能分析页面

 

性能分析的使用也是很轻松的,只需要在训练脚本中加入两行代码即可,如下:

有没有什么可以节省大量时间的 Deep Learning 效率神器?

图 7使用性能分析

 

性能分析教程: 性能调试(Ascend) - MindSpore master documentation

 

⦁ 快速迁移脚本

有同学可能不少模型是基于PyTorch、TensorFlow等框架开发的,基于我们提供的MindConverter工具,大部分模型只要进行简单的迁移就能在MindSpore中使用。MindConverter是一款用于将PyTorch、TensorFlow脚本或者ONNX文件转换到MindSpore脚本的工具。结合转换报告的信息,用户只需对转换后的脚本进行微小的改动,即可快速将PyTorch、TensorFlow框架的模型脚本或者ONNX文件迁移到MindSpore。

 

MindConverter支持基于PyTorch、TensorFlow、ONNX图结构生成MindSpore训练脚本,以PyTorch为例,使用方式如下:

mindconverter --model_file /home/user/model.pth --shape 1,3,224,224 \

--output /home/user/output \

--report /home/user/output/report \

--project_path /home/user/project/model_training

 

MindConverter还支持基于抽象语法树技术对PyTorch模型脚本进行转换,使用方式如下:

mindconverter --in_file /home/user/model.py \

--output /home/user/output \

--report /home/user/output/report

脚本迁移教程:使用工具迁移第三方框架脚本 - MindSpore master documentation

 

 

看到MindSpore提供了这么多好用的功能,相信大家已经跃跃欲试想要体验MindSpore了吧。欢迎访问MindSpore官网 MindSpore官网 了解更多信息。也可以访问此链接直接开始入门: https://www.mindspore.cn/tutorial/training/zh-CN/master/quick_start/quick_start.html

作者:walker2atc
链接:https://www.zhihu.com/question/384519338/answer/1739202908
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

上一篇:MindSpore模型验证


下一篇:MindSpore论坛活动——奖品免费领,祝大家开工大吉!