• 【2023 · CANN训练营第一季】MindSpore模型快速调优攻略 第二章——MindSpore调试调优


    1.生态迁移

    image.png

    生态迁移工具使用示例

    image.png

    生态迁移工具技术方案

    不同框架间模型定义前端表达差别巨大(相同算子的API技术难点 、
    算子功能、模型构建方式差别较大);
    对于同一框架,不管前端表达差异如何,最终对应的计算
    图是相似的。因此提出:基于模型的迁移方案
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jZ1Xkxst-1685069610205)(https://bbs-img.huaweicloud.com/blogs/img/20230526/1685068836900161981.png)]
    image.png

    onnx介绍:

    image.png

    生态迁移工具迁移案例分享

    image.png
    教程步骤:

    1. ONNX模型导出;
    2. ONNX模型验证;
    3. MindConverter进行模型脚本和权重迁移;
    4. 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侧为用户提供可视化界面,将通过多个
    维度展示性能数据以及统计分析结果。
    image.png

    使用方法:

    1. 训练开始阶段初始化Profiler,开始性能收集;
    2. 训练结束后使用analyse方法解析性能数据。

    注意:
     目前Profiler已经支持GPU场景,GPU下的使用方法和
    Ascend的使用方法一致;
     GPU初始化Profiler时只有output_path参数有效;

    1. 启动MindInsight可视化界面:
      mindinsight start --port 9001 --summary-base-dir ./
    2. 通过浏览器访问MindInsight交互式界面:
      :9001/
    3. 停止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;

  • 相关阅读:
    关于汽车html网页设计完整版,10个以汽车为主题的网页设计与实现
    PT_二维随机变量:正态分布的可加性
    人非圣贤孰能无过,Go lang1.18入门精炼教程,由白丁入鸿儒,Go lang错误处理机制EP11
    【数据结构】顺序表详解
    为什么分类问题不能使用mse损失函数,更容易理解版本
    信息技术基础认知与实践-Python
    Android multiple back stacks导航的几种实现
    测试开发人均年薪30w+?软件测试工程师如何进阶拿到高薪?
    04、JavaWeb启程——数据库
    【17. 双链表】
  • 原文地址:https://blog.csdn.net/qq_45257495/article/details/130882367