如何加速训练和预测?增大模型吧

2020 年 5 月 11 日 AINLP

相关阅读推荐:更小的模型!迈向更快更环保的NLP

模型训练可能很慢

在深度学习中,使用更多计算,例如增加模型大小,数据集大小或训练步骤,通常会导致更高的准确性。尤其是考虑到像BERT这样的无监督预训练方法最近取得成功之后,这种方法可以将训练扩展到非常大的模型和数据集。不幸的是,大规模训练在计算上非常昂贵。因此,实践中的目标通常是在不超出硬件预算和训练时间的情况下获得尽可能的高精度。

对于大多数训练预算来说,非常大的模型似乎不切实际。取而代之的是,要使训练效率最大化,首选策略是使用具有较小hidden size或较少层的模型,因为这些模型运行速度更快且使用的内存更少。

更大的模型训练更快

但是,在最近的论文,Train Large, Then Compress: Rethinking Model Size for Efficient Training and Inference of Transformers[1]中,指出减小模型大小的这种常规做法实际上与最佳计算效率的训练策略恰恰相反。在有限预算条件下训练Transformer模型时,要大幅度增加模型大小,但要尽早停止训练。换句话说,这篇论文通过展示在牺牲收敛性的同时增加模型大小,来重新思考模型必须被训练直到收敛的隐含假设。出现此现象的原因是,与较小的模型相比,较大的模型会在较少次的梯度更新中收敛到较低的测试误差。此外,这种收敛性的增长远远超过了使用较大模型的额外计算成本。因此,在考虑训练时间时,较大的模型可以更快地获得更高的精度。

在下面的两条训练曲线中证明了这种趋势。

  • 在左侧,绘制了RoBERTa的验证误差。在给定的时间内,较深的RoBERTa模型比较浅的模型具有更低的困惑度(论文表明,较宽的模型也是如此)。这种趋势也适用于机器翻译任务。
  • 在右侧,当训练英语-法语Transformer机器翻译模型时,绘制了验证的BLEU分数(越高越好)。在相同的训练时间下,更深,更宽的模型比小的模型获得更高的BLEU分数。

有趣的是,对于RoBERTa的预训练,增加模型的宽度和深度都会导致更快的训练。对于机器翻译,较宽的模型优于较深的模型。因此建议在更深之前尝试增加宽度。

此外,论文还建议首先增加模型大小,而不是批量大小。具体而言,一旦批次大小接近临界范围,增加批次大小只会在固定训练时间上带来微不足道的改善。因此,在资源有限的情况下,建议在此关键区域内使用固定批处理大小,然后再使用较大的模型大小。

预测效率

尽管较大的模型训练效率更高,但是它们也增加了推理的计算和存储要求。这是有问题的,因为推理的总成本比大多数实际应用中的训练成本要大得多。但是,对于RoBERTa,论文作者证明了这种折衷可以与模型压缩相协调。特别是,大型模型比小型模型对模型压缩更健壮 因此,可以通过训练非常大的模型然后对其进行大量压缩来获得两全其美的效果。

作者使用「量化」「修剪」的压缩方法。量化以低精度格式存储模型权重;修剪会将某些神经网络权重设置为零。两种方法都可以减少推理延迟和存储模型权重的内存需求。

首先以相同的总时间对不同尺寸的RoBERTa模型进行预训练。然后,在下游文本分类任务(MNLI)上微调这些模型,并应用修剪或量化。结果发现,对于给定的测试时间预算,最好的模型是训练得非常大然后压缩严重的模型

例如,考虑最深模型的修剪结果(下图左图中的橙色曲线)。在不修剪模型的情况下,它可以达到很高的精度,但是使用大约2亿个参数(因此需要大量的内存和计算量)。但是,可以对该模型进行严重修剪(沿着曲线向左移动的那些点),而不会显著降低精度。这与较小的模型形成鲜明对比,例如,粉红色表示的6层模型,其修剪后精度会大大降低。量化也出现类似趋势(下图右图)。总体而言,对于大多数测试预算(在x轴上选取一个点),最好的模型是非常大但压缩程度很高的模型。

随便唠唠

增加Transformer模型的大小可以提高训练和推理的效率,即应该先训练大然后严重压缩。这一发现引发了许多其他有趣的问题,例如,为什么大型模型收敛更快,压缩效果更好,是否跟彩票假说有什么猫腻(更小的模型!迈向更快更环保的NLP)。这些等等问题在论文中有给出初步研究,此外在作者(@Eric_Wallace_)的Twitter发文中也被大家热烈讨论。  

本文参考资料

[1]

Train Large, Then Compress: Rethinking Model Size for Efficient Training and Inference of Transformers: https://arxiv.org/abs/2002.11794              https://bair.berkeley.edu/blog/2020/03/05/compress/

- END -


推荐阅读

AINLP年度阅读收藏清单

学自然语言处理,其实更应该学好英语

斯坦福大学NLP组Python深度学习自然语言处理工具Stanza试用

DistilBERT Understanding

太赞了!Springer面向公众开放电子书籍,附65本数学、编程、机器学习、深度学习、数据挖掘、数据科学等书籍链接及打包下载

数学之美中盛赞的 Michael Collins 教授,他的NLP课程要不要收藏?

自动作诗机&藏头诗生成器:五言、七言、绝句、律诗全了

模型压缩实践系列之——bert-of-theseus,一个非常亲民的bert压缩方法

这门斯坦福大学自然语言处理经典入门课,我放到B站了

征稿启示 | 稿费+GPU算力+星球嘉宾一个都不少

关于AINLP

AINLP 是一个有趣有AI的自然语言处理社区,专注于 AI、NLP、机器学习、深度学习、推荐算法等相关技术的分享,主题包括文本摘要、智能问答、聊天机器人、机器翻译、自动生成、知识图谱、预训练模型、推荐系统、计算广告、招聘信息、求职经验分享等,欢迎关注!加技术交流群请添加AINLPer(id:ainlper),备注工作/研究方向+加群目的。


登录查看更多
0

相关内容

大模型是基于海量多源数据打造的预训练模型,是对原有算法模型的技术升级和产品迭代,用户可通过开源或开放API/工具等形式进行模型零样本/小样本数据学习,以实现更优的识别、理解、决策、生成效果和更低成本的开发部署方案。
[ICML-Google]先宽后窄:对深度薄网络的有效训练
专知会员服务
33+阅读 · 2020年7月5日
【CVPR 2020-商汤】8比特数值也能训练卷积神经网络模型
专知会员服务
25+阅读 · 2020年5月7日
专知会员服务
44+阅读 · 2020年3月6日
【Amazon】使用预先训练的Transformer模型进行数据增强
专知会员服务
56+阅读 · 2020年3月6日
【Google】利用AUTOML实现加速感知神经网络设计
专知会员服务
28+阅读 · 2020年3月5日
模型压缩究竟在做什么?我们真的需要模型压缩么?
专知会员服务
27+阅读 · 2020年1月16日
深度神经网络模型压缩与加速综述
专知会员服务
127+阅读 · 2019年10月12日
已删除
将门创投
6+阅读 · 2019年6月10日
7个实用的深度学习技巧
机器学习算法与Python学习
16+阅读 · 2019年3月6日
Google:数据并行对神经网络训练用时的影响
谷歌BERT模型深度解析
AINLP
42+阅读 · 2018年11月15日
入门 | 深度学习模型的简单优化技巧
机器之心
9+阅读 · 2018年6月10日
[学习] 这些深度学习网络调参技巧,你了解吗?
菜鸟的机器学习
7+阅读 · 2017年7月30日
Sparse Sequence-to-Sequence Models
Arxiv
5+阅读 · 2019年5月14日
Arxiv
7+阅读 · 2018年6月1日
Arxiv
3+阅读 · 2018年6月1日
VIP会员
相关VIP内容
相关资讯
已删除
将门创投
6+阅读 · 2019年6月10日
7个实用的深度学习技巧
机器学习算法与Python学习
16+阅读 · 2019年3月6日
Google:数据并行对神经网络训练用时的影响
谷歌BERT模型深度解析
AINLP
42+阅读 · 2018年11月15日
入门 | 深度学习模型的简单优化技巧
机器之心
9+阅读 · 2018年6月10日
[学习] 这些深度学习网络调参技巧,你了解吗?
菜鸟的机器学习
7+阅读 · 2017年7月30日
Top
微信扫码咨询专知VIP会员