在SQuAD数据集上,报告了The Optimal BERT Surgeon(oBERT)与其他方法的推理性能加速比较。oBERT的性能是在c5.12xlarge AWS实例上使用DeepSparse引擎测量的。
现代世界是由通过文本发生的不断沟通组成的。想想消息应用程序、社交网络、文件和协作工具,或书籍。这种交流为那些希望利用它来改善用户体验的公司产生了大量的可操作数据。例如,本博客底部的视频显示了用户如何使用NLP神经网络--BERT,跟踪整个Twitter的加密货币的普遍情绪。通过许多新的贡献,BERT大大改善了NLP任务的先进性,如文本分类、标记分类和问题回答。不过,它是以一种非常 "过度参数化 "的方式做到这一点的。其500MB的模型大小和缓慢的推理禁止许多有效的部署场景,特别是在边缘。而且,云部署变得相当昂贵,相当快。
BERT的低效率特性并非没有被注意到。许多研究人员一直在追求降低其成本和规模的方法。一些最活跃的研究是模型压缩技术,如较小的架构(结构化剪枝)、蒸馏、量化和非结构化剪枝。一些比较有影响的论文包括。
-
DistilBERT使用知识蒸馏法将知识从BERT基础模型转移到6层版本。
-
TinyBERT实现了一个更复杂的蒸馏设置,以更好地将知识从基线模型转移到4层版本。
-
运动修剪应用了幅度和梯度信息的组合,以去除多余的参数,同时用蒸馏法进行微调。
DistilBERT训练图解
TinyBERT训练图解
BERT是高度过度参数化的
我们在最近的论文中表明,BERT是高度过度参数化的。 最佳的BERT外科医生.90%的网络可以被移除,而对模型及其准确性的影响微乎其微!
真的,90%?是的!我们在Neural Magic的研究团队与奥地利IST合作,通过实施二阶修剪算法--最优BERT Surgeon,将之前最好的70%的稀疏度提高到90%。该算法使用泰勒扩展来近似计算每个权重对损失函数的影响--这一切意味着我们确切地知道哪些权重在网络中是多余的,可以安全地删除。当把这种技术与训练时的蒸馏结合起来时,我们能够达到90%的稀疏度,同时恢复到99%的基线准确率
在12层BERT-base-uncased模型和问题解答SQuAD v1.1数据集上,相对于目前最先进的非结构化剪枝方法的性能概述。
但是,结构化修剪的BERT版本是否也是过度参数化?在试图回答这个问题时,我们删除了多达3/4的层,以创建我们的6层和3层稀疏版本。我们首先用蒸馏法重新训练这些压缩模型,然后应用最优的BERT Surgeon修剪。在这样做的过程中,我们发现这些已经压缩的模型中80%的权重可以被进一步删除而不影响准确性。例如,我们的3层模型删除了BERT中1.1亿个参数中的8100万个,同时恢复了95%的准确性,创建了我们的最佳BERT Surgeon模型(oBERT)。
鉴于高水平的稀疏性,我们用oBERT模型引入,我们使用DeepSparse 引擎测量了推理性能--这是一个免费提供的、稀疏性感知的推理引擎,其设计目的是提高商品CPU上稀疏神经网络的性能,比如你的笔记本电脑里的那些。下图显示了一个修剪过的12层网络的速度超过了DistilBERT,一个修剪过的3层网络的速度超过了TinyBERT。通过DeepSparse Engine和oBERT的结合,高精度的NLP CPU部署现在可以在几毫秒内完成(几=个位数)。
更好的算法使得在任何地方都能进行高性能和高效的深度学习
在应用结构化剪枝和最佳BERT Surgeon剪枝技术后,我们包括量化感知训练,以利用DeepSparse引擎对X86 CPU的稀疏量化支持。将量化和我们的稀疏模型与DeepSparseVNNI支持的4块修剪相结合,形成了一个量化的、80%稀疏的12层模型,实现了99%的恢复目标。所有这些技术的组合就是我们所说的 "复合稀疏化"。
在CPU和GPU上对oBERT的批处理量为1、序列长度为128的延迟推理进行比较。
其结果是在现成的CPU上为BERT模型提供GPU级别的性能。有了稀疏量化的OBERT 12层模型,4核英特尔MacBook现在比T4 GPU更有性能,8核服务器在延迟敏感的应用中比V100更好。在使用3层和6层模型时,甚至可以实现进一步的提速,而精度却略低。
"4核英特尔MacBook现在比T4 GPU更有性能,8核服务器在延迟敏感的应用中胜过V100。"
让复合稀疏化为你工作
Twitter自然语言处理视频,比较了oBERT与未经优化的基线模型的性能改进。
本着与研究界合作并促成持续贡献的精神,创建oBERT模型的源代码通过SparseML开源,模型可在SparseZoo上免费获得。此外,DeepSparse Twitter的加密例子在DeepSparse repo中是开源的。试着用它在你的硬件上高效地追踪加密货币趋势或任何其他趋势吧最后,我们已经推送了简单的使用案例演练,以强调将这项研究应用于你的数据所需的基本流程。
Mark Kurtz(@markurtz_)是Neural Magic的机器学习总监,也是一位经验丰富的软件和机器学习领导者。马克精通工程和机器学习的整个堆栈,并对模型优化和高效推理充满热情。