微软开源ONNX加速BERT AI模型

手机 2020-02-04 17:02:26

微软的Azure机器学习团队最近公开了他们对ON NX运行时库的贡献,以提高自然语言处理(NLP)模型BERT的性能。通过优化,模型在SQUAD基准上的推理延迟加快了17倍。

高级项目经理艾玛·宁在一篇博客文章中概述了结果。与来自Bing的工程师合作,Azure研究人员开发了一个用于理解网络搜索查询的浓缩BERT模型。为了提高模型的响应时间,团队在C中重新实现了模型..微软现在通过将这些优化提供给ON NX运行时,这是一个用于加速神经网络推理操作的开源库,来公开这些优化。据宁说,

使用ONNX运行时,AI开发人员现在可以轻松地在CPU和GPU硬件上生产高性能的大型变压器模型,使用微软使用的相同技术为客户服务。

BERT是由谷歌AI开发的NLP模型,谷歌去年宣布,他们的搜索引擎正在使用该模型帮助处理大约十分之一的搜索查询。BERT对于处理较长的查询或短词(如标准搜索引擎中经常忽略的“for”和“to”)与查询的含义特别相关的查询很有用。Bing去年也开始在搜索引擎中使用深度学习的NLP模型。然而,BERT是一个复杂的模型,这意味着通过它处理搜索查询(也就是推理)在计算上是昂贵的,而且相对缓慢。冰发现,即使是一个浓缩的三层版本,也需要20个CPU核心才能实现77ms的延迟,这已经接近了用户注意到延迟的极限。要在Bing的规模上处理查询量,使用此模型将需要数千台服务器。

BERT推理确实得益于GPU的并行性,Bing发现Azure GPU VM上的推理延迟下降到20ms。为了进一步改进,团队与NVIDIA合作,使用TensorRT CAPI和CUDA库重新实现模型。该优化模型实现了9ms的延迟。通过使用混合精度和张量核,延迟提高到6ms。

深度学习推理性能是一个主要问题,对于Web搜索以及移动和边缘设备,手工实现模型对于大多数寻求提高性能的实践者来说并不是一个有吸引力的解决方案。推断加速工具,如TensorFlowLite和PyTorchMobile,现在是深度学习框架的标准组件。这些工具通过自动重新编写模型代码来提高性能,以利用设备特定的硬件加速和优化库。这个过程非常类似于高级编程语言的优化编译器使用的过程,并且类似地需要对正在优化的模型进行抽象表示。对于这样的表示,ON NX是一个开放的标准,ON NX运行时是标准的实现。

从重新实现BERT中吸取经验教训,Bing和Azure Devs更新了ON NX运行时代码,以自动优化任何BERT模型,以便在CPU和GPU上进行推理。当在三层BERT模型上使用时,CPU性能提高了17倍,GPU性能提高了3倍..必应开发人员还发现ON NX运行时更容易使用,并减少了优化新模型的时间。

在GitHub上的ON NX运行时的最新版本中,可以获得BERT模型优化。

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时候联系我们修改或删除,多谢