APP下载

微软用ONNX Runtime加速IntelliCode整行程式码完成模型推理

消息来源:baojiabao.com 作者: 发布时间:2026-02-13

报价宝综合消息微软用ONNX Runtime加速IntelliCode整行程式码完成模型推理

由于要执行大型Transformer模型存在诸多挑战,包括多层架构可能会消耗大量的内存和GPU计算时间,因此微软采用开源的ONNX Runtime,来解决大型Transformer模型在生产环境中的限制,因此得以在Visual Studio和Visual Studio Code提供整行程式码完成功能。

GPT-2和GPT-3等大规模Transformer模型是好用的自我监督Transformer语言模型,可用于翻译、问答、摘要和文字生成等自然语言处理任务,而微软移植这些模型,开发了GPT-C模型,以深度学习来支援IntelliCode的程式码完成功能,在Visual Studio和Visual Studio Code中,提供整行程式码完成建议。

将GPT-C模型部署在云端有诸多限制

微软为了满足大型Transformer模型计算能力的需求,一开始的目标是利用Azure机器学习服务,以及GPU虚拟机器丛集,部署生产环境用GPT-C模型,不过,这样的作法却遇到了一些挑战,首先是要将模型部署在云端上,就必须将用户的程式码,经过网络传输以进行推理,但是这样的方式增加了暴露敏感资料的风险。

而且当断开网络连接或是离线模式下,就无法继续提供程式码建议,这个限制要求开发人员在工作期间,必须保持互联网连接,对于在互联网连接条件不好的地区工作的人,可能不是一个好办法。

另外,典型的语言模型目标是要使用集束搜寻(Beam Search)解码算法来搜寻最佳解,而GPT-C也不例外,但这种情境却会产生很大的内存开销,导致较高的延迟和服务成本,官方提到,一个12层的生成Transformer模型,需要使用374 MB内存,每次推理呼叫需要使用约80毫秒的GPU时间,当所有用户的运算都集中到云端上运算,过于庞大的资源消耗使得这个方法不切实际。

采用ONNX Runtime在客户端高效执行GPT-C

由于上述原因,微软放弃在云端上部署模型的念头,而改使用ONNX Runtime来解决执行GPT-C模型的问题。ONNX(Open Neural Network Exchange)以及ONNX Runtime在加速和简化Transformer模型,扮演重要的角色,ONNX是一种机器学习模型的开发标准格式,使用诸如PyTorch与TensorFlow等各种框架训练的模型,可以简单地转换为ONNX格式。

而ONNX Runtime则是以ONNX标准为基础开发,是一种最佳化推理引擎,可在不同的硬件和操作系统上,高效率执行ONNX模型,由于ONNX框架的互通性,ONNX Runtime提高了模型训练到推理的开发效率,透过各种最佳化技术,ONNX Runtime能够跨硬件平台,以最佳效能执行各种模型。

要以低成本提供IntelliCode程式码完成体验,微软决定要直接在客户端部署GPT-C模型,也就是说,GPT-C模型模型要能够高效率地在CPU上运作,并且支援广泛的客户端装置。微软提到,他们把GPT-C模型放到ONNX Runtime上执行,可以明显减少原本要用到的370 MB内存,最终仅需要80 MB。

ONNX Runtime最佳化Transformer模型执行

ONNX Runtime支援Transformer最佳化,跟PyTorch比起来,在CPU上可处理大序列长度,并且达到超过2倍效能加速。PyTorch提供了内建的ONNX汇出程式,可以将PyTorch模型汇出为ONNX,微软提到,最重要的是,ONNX Runtime拥有GPT2转换工具,因此GPT-C Transformer模型可以简单地从PyTorch转换到ONNX。

除了使用ONNX Runtime来缩减运算资源外,集束搜寻也是部署的重要部分,该模组会评分并且排名ONNX Runtime模型推理步骤中的张量输出,当评分和排名完成后,模型会从集束搜寻模组中撷取张量输出,并执行另一轮的推理。一开始,微软的集束搜寻模组是以C#和Typescript程式语言实作,但由于这类程式语言效能很低,导致GPT-C推理回应时间表现不佳,每次完成推理都需要CPU时间1秒钟。

为了要提高客户端执行GPT-C模型的效能,微软扩展GPT2转换工具,以支援GPT-2模型原生一步(One-step)集束搜寻,在微软改进了训练和部署GPT-2模型后,使得具有原生一步集束搜寻功能的GPT-2模型,可以在ONNX Runtime上获得完全的硬件加速。

微软测试了经最佳化后的GPT-C ONNX模型,在CPU和GPU上的效能,使用英特尔Core i7-8650U CPU执行模型,与初始客户端GPT-C相比,效能提高了4倍,每次推理约为300毫秒,而在GPU上,使用Nvidia V100-PCIE-16GB GPU以及FP16配置,ONNX Runtime在内存效率和效能都有明显提升,与PyTorch相比分别达5倍和4倍。

2021-07-07 09:56:00

相关文章