ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2021-02-28 10:58:47  阅读:201  来源: 互联网

标签:分析 训练 -- Deep MindInsight 神器 Learning MindSpore 调试器


 

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

 

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

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

 

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

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

 

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

图 1训练列表

 

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

图 2 训练看板

 

图 3 可视化查看张量数据

 

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

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

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

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

⦁ 自定义备注信息

⦁ 记录自定义溯源信息

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

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

图 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贴心地在智能小助手(页面左侧)中给出性能调试的建议,按照建议操作即可解决常见性能问题。

图 6 性能分析页面

 

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

图 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
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

标签:分析,训练,--,Deep,MindInsight,神器,Learning,MindSpore,调试器
来源: https://blog.csdn.net/archimekai/article/details/114212156

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有