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对应能力

MindSpore模型精度调优实践相关推荐

  1. MindSpore模型精度调优实战:如何更快定位精度问题

    摘要:为大家梳理了针对常见精度问题的调试调优指南,将以"MindSpore模型精度调优实战"系列文章的形式分享出来,帮助大家轻松定位精度问题,快速优化模型精度. 本文分享自华为云社 ...

  2. 基于Fabric的性能测试与调优实践

    1  Fabric 性能测试现状 通俗的来讲,区块链是一种按照时间顺序将数据区块以顺序相连的方式组合成的一种链式数据结构,并以密码学方式保证的不可篡改和不可伪造的分布式账本.比特币(Bitcoin). ...

  3. 软件性能测试分析与调优实践之路-Java应用程序的性能分析与调优-手稿节选

    Java编程语言自从诞生起,就成为了一门非常流行的编程语言,覆盖了互联网.安卓应用.后端应用.大数据等很多技术领域,因此Java应用程序的性能分析和调优也是一门非常重要的课题.Java应用程序的性能直 ...

  4. 【转载】软件性能测试分析与调优实践之路-Web中间件的性能分析与调优总结

    本文主要阐述软件性能测试中的一些调优思想和技术,节选自作者新书<软件性能测试分析与调优实践之路>部分章节归纳. 在国内互联网公司中,Web中间件用的最多的就是Apache和Nginx这两款 ...

  5. 【转载】软件性能测试分析与调优实践之路-性能分析调优思想与调优技术总结

    本文主要阐述软件性能测试中的一些调优思想和技术,节选自作者新书<软件性能测试分析与调优实践之路>部分章节归纳. 一.  性能分析与调优思想 1.性能分析调优模型 性能测试除了为获取性能指标 ...

  6. 软件性能测试分析与调优实践之路-性能分析调优思想与调优技术总结

    来源:https://www.cnblogs.com/laoqing/p/13660768.html 本文主要阐述软件性能测试中的一些调优思想和技术,节选自作者新书<软件性能测试分析与调优实践之 ...

  7. R语言使用caret包对GBM模型参数调优(自定义调优的评估指标,例如ROC指标):抽取预测标签及类概率、抽样ROC的指标并绘制密度图

    R语言使用caret包对GBM模型参数调优(自定义调优的评估指标,例如ROC指标):抽取预测标签及类概率.抽样ROC的指标并绘制密度图 目录 R语言使用caret包对GBM模型参数调优(自定义调优的评 ...

  8. 实时数仓入门训练营:Hologres性能调优实践

    简介:<实时数仓入门训练营>由阿里云研究员王峰.阿里云高级产品专家刘一鸣等实时计算 Flink 版和 Hologres 的多名技术/产品一线专家齐上阵,合力搭建此次训练营的课程体系,精心打 ...

  9. B站Up主上传质量调优实践

    Up主上传的大量优质视频内容使得bilibili(B站)深受年轻用户的喜爱.bilibili视频云高级研发经理 唐君行在LiveVideoStack线上交流分享中详细介绍了B站为提供更流畅.稳定用户体 ...

最新文章

  1. PE文件和COFF文件格式分析——导出表
  2. 【 Linux 】Vim的基本配置以及出现问题解决(su认证失败)
  3. C#获取当前程序运行路径的方法集合
  4. ecu故障现象_【案例】柴油电喷车维修故障案例
  5. micropython是啥 知乎_micropython入门教程
  6. linux系统环境与文件权限
  7. linux 查找并删除
  8. linux创建线程pthread_create函数
  9. 如何在点击事件中取得复选框选中的单元格值
  10. 拓端tecdat|R语言线性分类判别LDA和二次分类判别QDA实例
  11. 网站上点击自定义按钮发起QQ聊天的解决方案
  12. Matlab如何滤出高音,基于Matlab滤波器及均衡器设计
  13. matlab中几种取整函数的用法(fix, floor, ceil, round)
  14. 【Luat-esp32c3】4.3 文件系统——加载jpeg图片并拆包
  15. XXL-JOB任务调度
  16. Java基础知识Day08---Scaner类
  17. 新版本游戏试玩APP搭建教程,附上试玩APP源码
  18. android 6.0 SystemUI源码分析(1)-SystemUI介绍
  19. 解决Sqoop导出数据报错Can‘t parse input data 和 NoSuchElementException
  20. 搭建开发环境 | 工欲善其事,必先利其器(C、C++、Java、Python)

热门文章

  1. 2022-2028年中国领带行业投资分析及前景预测报告
  2. OpenCV 笔记(09)— 常用的数据结构和函数(Vec、Point、Scalar、Size、Rect、cvtColor)
  3. Python 中 (,|)和(and,or)之间的区别 逻辑判断
  4. LeetCode简单题之好对数的数目
  5. 王道考研 计算机网络笔记 第四章:网络层
  6. Qt实现 指针式时钟+动态时钟 (详细注释)
  7. 部署可扩展的目标检测管道:推理过程(下)
  8. 自动调度GPU的卷积层
  9. Single Shot Multibox Detection (SSD)实战(下)
  10. CUDA C++编程接口:编译