zoukankan      html  css  js  c++  java
  • MindSpore模型精度调优实践

    MindSpore模型精度调优实践

    引论:在模型的开发过程中,精度达不到预期常常让人头疼。为了帮助用户解决模型调试调优的问题,为MindSpore量身定做了可视化调试调优组件:MindInsight。还梳理了针对常见精度问题的调试调优指南,将以“MindSpore模型精度调优实战”系列文章的形式分享出来,希望能帮助用户轻松定位精度问题,快速优化模型精度。

    本文将分析精度问题的常见现象和原因,并给出一个整体的调优思路。本文分享假设脚本已经能够运行并算出loss值。如果脚本还不能运行,请先参考相关报错提示进行修改。

    精度问题的常见现象和原因

    模型精度问题和一般的软件问题不同,定位周期一般也更长。在通常的程序中,程序输出和预期不符意味着存在bug(编码错误)。但是对一个深度学习模型来说,模型精度达不到预期,有着更复杂的原因和更多的可能性。由于模型精度要经过长时间的训练才能看到最终结果,定位精度问题通常会花费更长的时间。

    常见现象

    精度问题的直接现象一般体现在loss(模型损失值)和metrics(模型度量指标)上。loss现象一般表现为(1)loss跑飞,出现NAN,+/- INF,极大值(2)loss不收敛、收敛慢(3)loss为0等。模型metrics一般表现为模型的accuracy、precision等metric达不到预期。

    精度问题的直接现象较容易观察,借助MindInsight等可视化工具,还可以在梯度、权重、激活值等张量上观察到更多现象。常见现象如:(1)梯度消失(2)梯度爆炸(3)权重不更新(4)权重变化过小(5)权重变化过大(6)激活值饱和等。

    常见原因

    有果必有因,在现象的背后,是精度问题的原因,可以简单分为超参问题、模型结构问题、数据问题、算法设计问题等类别:

    超参问题

    例如

    学习率设置不合理,

    loss_scale参数不合理,

    权重初始化参数不合理等。

    模型结构问题

    例如

    算子使用错误(使用的算子不适用于目标场景),

    权重共享错误(共享了不应共享的权重),

    权重冻结错误(冻结了不应冻结的权重),

    节点连接错误(应该连接到计算图中的block未连接),

    loss函数错误,

    优化器算法错误(如果自行实现了优化器)等。

    数据问题

    例如

    数据缺失值过多,

    每个类别中的样本数目不均衡,

    数据中存在异常值,

    未对数据进行归一化,

    数据处理参数不正确等。

    算法设计问题

    算法本身设计有缺陷导致精度无法达到预期。

    相同现象存在多个可能原因导致精度问题定位难

    以loss不收敛为例(下图),任何可能导致激活值饱和、梯度消失、权重更新不正确的问题都可能导致loss不收敛。例如错误地冻结了部分权重,使用的激活函数和数据不匹配(使用relu激活函数,输入值全部小于0),学习率过小等原因都是loss不收敛的可能原因。

     

     图 1 相同现象存在多个可能原因导致精度问题定位难

    调优思路概述

     

     图 2精度问题调优思路概述

    针对上述精度问题的现象和原因,常用的几个调优思路如下:检查代码和超参、检查模型结构、检查输入数据、检查loss曲线。若上述思路都未发现问题,可以让训练执行到最后,检查精度(主要是模型metrics)是否达到预期。

    其中,检查模型结构和超参重在检查模型的静态特征;检查输入数据和loss曲线则是将静态特征和动态训练现象结合检查;检查精度是否达到预期则是对整体精度调优过程重新审视,并考虑调整超参、解释模型、优化算法等调优手段。

    为了帮助用户高效实施上述的精度调优思路,MindInsight提供了配套的能力,如下图。后面会展开介绍精度调优的准备工作,每个调优思路的细节,以及如何使用MindInsight的功能实践这些调优思路。

     

     图 3精度问题定位思路及MindInsight对应能力

     

    人工智能芯片与自动驾驶
  • 相关阅读:
    推荐:Markdown编辑软件 --- 小书匠
    GoldenDict词典配置
    ivew admin
    FineUI学习网址
    博客主题说明网址
    Xshell,Xftp免费版下载方法
    linux 常用命令及操作
    Oracle数据库随机取某条记录的一个字段值
    service和ingress
    centos7离线安装docker (二进制)
  • 原文地址:https://www.cnblogs.com/wujianming-110117/p/14385545.html
Copyright © 2011-2022 走看看