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对应能力
MindSpore模型精度调优实践的更多相关文章
- MindSpore模型精度调优实战:如何更快定位精度问题
摘要:为大家梳理了针对常见精度问题的调试调优指南,将以"MindSpore模型精度调优实战"系列文章的形式分享出来,帮助大家轻松定位精度问题,快速优化模型精度. 本文分享自华为云社 ...
- MindSpore模型精度调优实战:常用的定位精度调试调优思路
摘要:在模型的开发过程中,精度达不到预期常常让人头疼.为了帮助用户解决模型调试调优的问题,我们为MindSpore量身定做了可视化调试调优组件:MindInsight. 本文分享自华为云社区<技 ...
- [转载]Java 应用性能调优实践
Java 应用性能调优实践 Java 应用性能优化是一个老生常谈的话题,笔者根据个人经验,将 Java 性能优化分为 4 个层级:应用层.数据库层.框架层.JVM 层.通过介绍 Java 性能诊断工具 ...
- 软件性能测试分析与调优实践之路-Web中间件的性能分析与调优总结
本文主要阐述软件性能测试中的一些调优思想和技术,节选自作者新书<软件性能测试分析与调优实践之路>部分章节归纳. 在国内互联网公司中,Web中间件用的最多的就是Apache和Nginx这两款 ...
- 软件性能测试分析与调优实践之路-Java应用程序的性能分析与调优-手稿节选
Java编程语言自从诞生起,就成为了一门非常流行的编程语言,覆盖了互联网.安卓应用.后端应用.大数据等很多技术领域,因此Java应用程序的性能分析和调优也是一门非常重要的课题.Java应用程序的性能直 ...
- elasticsearch5.3.0 bulk index 性能调优实践
elasticsearch5.3.0 bulk index 性能调优实践 通俗易懂
- JVM性能调优实践——JVM篇
前言 在遇到实际性能问题时,除了关注系统性能指标.还要结合应用程序的系统的日志.堆栈信息.GClog.threaddump等数据进行问题分析和定位.关于性能指标分析可以参考前一篇JVM性能调优实践-- ...
- PB 级大规模 Elasticsearch 集群运维与调优实践
PB 级大规模 Elasticsearch 集群运维与调优实践 https://mp.weixin.qq.com/s/PDyHT9IuRij20JBgbPTjFA | 导语 腾讯云 Elasticse ...
- 软件性能测试分析与调优实践之路-JMeter对RPC服务的性能压测分析与调优-手稿节选
一.JMeter 如何通过自定义Sample来压测RPC服务 RPC(Remote Procedure Call)俗称远程过程调用,是常用的一种高效的服务调用方式,也是性能压测时经常遇到的一种服务调用 ...
随机推荐
- Linux中数据库的安装和配置(MySQL与Maria DB)
目录 MySQL和Maria DB的介绍 MySQL和Maria DB的安装 yum源安装MySQL(Centos6.5+Mysql5.1) 源码包安装MySQL yum源安装Maria DB 源码包 ...
- POJ1325二分匹配或者DINIC(最小路径覆盖)
题意: 有k个任务,两个机器,第一个机器有n个模式,第二个机器有m个模式,每个任务要么在第一个机器的一个模式下工作,要么在第二个机器的一个模式下工作,机器每切换一个模式需要重启一次,两个 ...
- PowerShell-2.解决禁止本地执行脚本
现象 直接找到XXX.ps1右键 使用PowerShell运行没反应,然后打开PowerShel把脚本推进去显示这个: 原因是因为脚本执行权限默认是Restricted,这个是禁止执行任何本地脚本. ...
- 【技巧】使用xshell和xftp连接centos连接配置
说明:xshell用来执行指令,xftp用来上传和下载文件. ① 这是xshell连接属性: ②.这是xftp连接属性 附件:这里给个xshelll和xftp的免安装的破解版本地址.侵删. 度娘链接: ...
- 取消本地SVN文件夹与服务器的关联
方法一. 1.新建文本文档,添加内容如下: Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Fold ...
- 注解配置定时器Scheduling
注解配置定时器配置 package com.demo; import org.springframework.context.annotation.Configuration; import org. ...
- 什么是redis的缓存雪崩, 穿透, 击穿?
目前的互联网系统没有几个不使用缓存的, 但是只要使用缓存的话就会面临这几个问题, 如使用redis缓存技术, 可能会遇到缓存的雪崩, 穿透, 以及击穿. 首先来看一个简单的正常缓存流程: 如用户访问J ...
- CSS中margin负值巧布局
margin负值实现细边框 我们先准备五个div盒子,并设置好浮动和2px的实线黑色边框,看看效果 中间的边框线挨在了一起致使边框变粗成了4px,这时使用margin负值就可以解决这个问题 <s ...
- 常用加密算法学习总结之数字证书与TLS/SSL
数字证书 对于一个安全的通信,应该有以下特征: 完整性:消息在传输过程中未被篡改 身份验证:确认消息发送者的身份 不可否认:消息的发送者无法否认自己发送了信息 显然,数字签名和消息认证码是不符合要求的 ...
- [Python] 网络
1.应用概念 应用层(Application Layer):将原始信息进行规范化描述,进而通过标准化接口与传输层对接 传输层(Transport Layer):实现信息的切分和重组,以及应用程序间的对 ...