在深度学习任务中,虽然可以通过堆叠参数、设计更复杂的结构来提高模型的表征能力,但这也会导致模型的计算量增加,训练时间延长,大大降低模型的产出效率。这篇文章根据博主的经验简单介绍一些加快模型训练速度的方法,以及为什么需要关注模型的训练速度。

加快深度学习模型训练速度的方法

1. 合理的超参数设计

  • BatchSize。每次迭代batch的大小是影响每次推理速度的主要因素,而batchsize并非越大越好,一个经验性的可选数值是32、64、128,一般来说,每个batch的大小一旦超过64,继续增大batch带来的性能收益就微乎其微了,因此可以通过实验尝试一下这三个数值,在达到同样的性能前提下让batch尽可能的小,这也会给显存留下更大的空间,进而可以尝试更多的模型设计方式。
  • epoch、学习率策略。迭代次数和学习率这两个参数需要放在一起讲,我们在挑选这两个参数时,需要每100次迭代(或者其他)保存一次模型,然后把这些模型的精度曲线、loss、和当前的学习率画到一张图像中。从图像中就可以发现,在某些学习率设置下,可能训练几个epoch模型的性能就不会继续增加了,loss也不会降低,因此找到这个平衡点之后就可以将当前学习率下的后续epoch舍弃掉,进一步降低学习率训练。一个经验性的总结是:更小的学习率通常只需要更少的epoch。因此,可以通过修改学习率和训练epoch的策略来达到相同精度的前提下降低训练时间。

2. 权值共享

  • 每轮迭代的推理速度和模型的参数量、计算量息息相关,而通过设置参数权值共享,可以降低总的参数量和计算量,另外如tensorflow,pytorch等深度学习框架都有针对权值共享的推理优化,所以会有相对明显的加速效果。

3. 升级相关软件包

  • 如将cuda、tensorflow、pytorch进行升级,一般来说越新越好。旧版cuda可能只是针对一些显卡做了适配,但是新版cuda会针对一些新的算子、显卡做针对性优化,如常见的Tesla V系列显卡,采用cuda11的推理速度就明显快于cuda8、9。tensorflow、pytorch等框架也是同理。并且这些软件包都是向下兼容的,因此不用过于担心代码移植问题。

4. 多卡训练、数据并行

  • 在采用NVIDIA GPU进行训练的时候,可以通过$ watch -n 0.1 nvidia-smi命令时刻观察GPU显存和利用率情况,只有当GPU 利用率处于高位的时候GPU才是在高效的工作,否则大部分时间都是在闲置,而这一般是由于数据读取过慢导致的。可以通过自己实现多线程读数据或者采用tensorflow、pytorch等框架提供的并行读数据的方法让GPU保持较高利用率,从而减少GPU等待时间,降低整体训练耗时。

5. 混合精度训练

  • 通常参数都是采用float32进行计算的,而将参数保存为float16格式理论上能加快一倍的训练速度并且节省一倍的模型大小,同时精度损失不会太多,这就是混合精度训练方法。具体细节可以参照常见的深度学习框架提供的混合精度训练包。

加快模型训练速度的价值

最后简单说一下为什么应该关注模型训练速度。

  • 提高效率。不管是对于科研还是比赛,亦或者是实际的工作,模型的产出速度都极大的影响了实验的效率,有人需要一周才能出一个模型,而通过上述策略加快模型训练速度,可以将该时间降低到1天或者更快,这其中的价值不言自明。
  • 省钱。不管是企业还是高校实验室,GPU显卡或是买来的,或是租来的。如果采用的是腾讯云的GPU服务器,腾讯云和阿里云常被选择的企业级的GPU服务器价格通常是20,000~30,000/月,按照20,000/月计算每小时租金为28元,如果产出一个模型需要7天,那么一个模型的成本是4,704元,按照每10个模型产出一个有效模型来算,那么一个有效模型的成本就是47,040元,如果将模型训练时间缩短三倍,那么一个有效模型成本就缩短到了15,680元,节省31,360元,按照100个研究员/工程师每个月产出两个有效模型,每100个研究员/工程师一个月就节省了6,272,000元,也就是六百多万,不得不说AI部门的运营成本是真滴高。
  • 提高效率,节省时间。对于在校生做研究、打比赛来说,提高效率和模型产出,就能有更多实验数据和做更多尝试,或许paper就发出来了,比赛就拿名次了。对于企业来说,本质上还是省钱,把用人成本、运营成本都算上,提高效率就是大把大把的省钱。

所以,做实验的时候一定要考虑好效率问题,提高模型的训练速度。

博主会持续更新一些深度学习相关的基础知识以及工作中遇到的问题和感悟,喜欢请关注、点赞、收藏,感谢大家。

【深度学习基础知识 - 21】加快模型训练速度的方法相关推荐

  1. 基于人脸的常见表情识别(1)——深度学习基础知识

    基于人脸的常见表情识别(1)--深度学习基础知识 神经网络 1. 感知机 2. 多层感知机与反向传播 卷积神经网络 1. 全连接神经网络的2大缺陷 2. 卷积神经网络的崛起 卷积神经网络的基本网络层 ...

  2. 【深度学习】基于PyTorch的模型训练实用教程之数据处理

    [深度学习]基于PyTorch的模型训练实用教程之数据处理 文章目录 1 transforms 的二十二个方法 2 数据加载和预处理教程 3 torchvision 4 如何用Pytorch进行文本预 ...

  3. 【人工智能与深度学习】基于能量的模型中的对比方法

    [人工智能与深度学习]基于能量的模型中的对比方法 回顾 在自我监督学习中的对比法 Contrastive embedding 自我监督的结果(MoCo,PIRL,SimCLR) SimCLR 降噪自动 ...

  4. 深度学习基础知识每日更 upupup

    深度学习基础知识点总结 提示:菜鸟入门日记,若总结有错误,各路大佬多多指教! 文章目录 深度学习基础知识点总结 Looking for my friends 一.零散知识点 1.网络拼接和相加的区别 ...

  5. 深度学习基础知识(八):神经网络基础之导数

    这个专栏主要是想和大家分享一下深度学习的基础知识,主要是以吴恩达老师深度学习课程内容作为基础,并补充了很多其他内容希望让整体内容更加容易理解和系统化.如果想要了解具体专栏里面有什么内容的话,可以看一看 ...

  6. 【深度学习基础知识 - 25】提升模型泛化能力的方法

    提升模型泛化能力的方法 从数据角度上来说.可以通过数据增强.扩充训练集等方法提高泛化能力. 在训练策略上,可以增加每个batch size的大小,进而让模型每次迭代时见到更多数据,防止过拟合. 调整数 ...

  7. 深度学习基础知识整理

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/kwame211/article/details/81165381 本文是在七月的BAT机器学习面试1 ...

  8. 深度学习基础知识(人工智能)

    导读:人工智能时代已经到来,AlohaGO的击败李世石成为了围棋界的神话,让许多人震惊不已.那么AlphaGo是怎么产出的呢?它是源自于人工智能的深度学习. 这是小编的其他文章,希望对大家有所帮助,点 ...

  9. 【深度学习基础知识 - 07】BN的原理和作用

    Batch Normalization也是深度学习中的一个高频词汇,这篇文章将会对其做一个简单介绍. 目录 1. BN的原理 2. BN的作用 3. BN层的可学习参数 4. infer时BN的处理 ...

最新文章

  1. Halcon初学者知识【19】带paint_的系列算子
  2. 人工智能:第一章 绪 论
  3. 【机器视觉】 Halcon批量加载图像
  4. Microsoft Windows Workflow Foundation 入门:开发人员演练
  5. 如何安装 SAP Commerce Cloud,以便让 SAP Spartacus 使用
  6. css textarea行数_限制textarea中的行数并使用jQuery显示行数
  7. BigDecimal数据加法返回值接收
  8. linux中文输入法 ibus
  9. 编译安装nginx-1.6.0
  10. SolidWorks工程图比例 1:1 配置
  11. Themida和Winlicense加壳软件脱壳教程
  12. 使用STM32,接触USB功能
  13. vscode配置esp32开发环境:ESP-IDF VS Code Extension 没有 Using Existing Setup
  14. The PyTorch-Kaldi Speech Recognition Toolkit
  15. KDC+NFS 服务配置
  16. 咳咳,建模大神教你如何用ZBrush雕刻肌肉上课时间到了
  17. 安卓学习笔记3.1 线性布局
  18. python-介绍泊松分布(poisson分布)
  19. NOR flash 坏块处理方法
  20. 网络安全必备的五款免费网络漏洞扫描器

热门文章

  1. pip安装的模块cmd及VsCode中可以使用,PyCharm中不能使用
  2. 【电力电子技术】DC-DC变换电路
  3. ghost硬盘对拷25058错误
  4. Xcode Cloud
  5. android从入门到精通明日科技 光盘
  6. Kingfisher加载不出带逗号的图片url
  7. SHELL加法运算及I++
  8. 随机过程基础6--高斯过程1
  9. PAT1032 挖掘机技术哪家强
  10. 功能安全function safety 和SOTIF区别