Nvidia 7月20日发布了新一代的深度学习推论软件开发组件TensorRT 8,比起前一代TensorRT 7,TensorRT 8能将推论时间缩短一半、推论准确性提升一倍,Nvidia宣称,以TensorRT 8优化超大Transformer模型BERT-Large,并部署在V100上执行,只要1.2毫秒就能完成推论,比TensorRT 7快2.5倍。而大幅提升性能的关键,就是TensorRT 8组件中的稀疏性(Sparsity)与量化感知训练(Quantization aware training,QAT)两大功能,前者通过减少运算来加速推论,后者则让模型能以INT8精度来进行推论,却不会损失推论的准确性(accuracy)。
TensorRT是Nvidia在2016年底推出的深度学习推论软件开发组件,主要包含两部分,分别是用来进行调校的深度学习推论优化工具,以及能执行深度学习推理应用程序的Runtime,用户可以将训练好的神经网络输入TensorRT中,产出经过优化的推理引擎。可支持包括TensorFlow、Pytorch、ONNX在内的多种深度学习框架,可优化的神经网络包括CNN、RNN与Transformer。可部署在数据中心、边缘端、嵌入式平台等任何Nividia的平台中。
Nvidia最新发布的TensorRT 8,更强调在语言相关应用的性能进展,能将模型推论速度加快一倍,尤其在一些需要大量参数的模型上,如搜索引擎、广告推荐、聊天机器人、对话式AI等应用,Nvidia解释,因为这类模型通常具有更大量的参数,更不易在边缘端进行推论,尤其在训练完模型并部署到边缘设备时,可能面临内存与算力不足问题,此时,开发者可能就得缩减模型的大小来进行推论,但准确率也随之下降,若要维持准确率不变,就可能产生运算速度不足的问题。
因此,Nvidia在TensorRT 8通过了两大关键功能,来加快模型推论的性能。一为稀疏性(Sparsity),这是Nvidia去年在Ampere架构GPU中添加的一项技术,主张模型中并非每个权重都同等重要,若将不影响准确率表现的权重调整为零,就能在尽可能维持模型准确度不变的同时,减少不必要的运算,进而减少内存和带宽的用量,来加快模型推论速度。Nvidia在过去一篇博客文章中更比喻,稀疏性的作用,就像是玩乐高积木时,抽走几块积木后,仍可以不影响整体高度。
另一项功能则是量化感知训练。由于更低精度的模型,可以加速模型推论的时间,这项技术目的要将主要以浮点(Floating Point)来进行计算的模型(大多为FP32),以更低精度单位INT8来进行模型推论,并尽可能维持推论的准确性。这项技术可以显著减少运算与存储资源的消耗,提升处理核心(Tensor Core)的推论性能。
Nvidia开发者博客也曾介绍,这项技术需要在模型训练过程中,就通过修改训练图(training graph)来模拟低精度的行为,引入量化误差作为训练损失的一部分。也就是说,QAT是通过在模型训练期间对量化误差进行建模,借此来减轻部署时,降低精度对于模型推论准确性的影响。
TensorRT推出后下载近250万次,用户来自医疗保健、汽车、金融和零售等领域的27,500家企业,前一代TensorRT 7,更被运用在Nvidia几个月前提交给MLPerf的推论评比中,以软件辅助硬件提升模型运算性能,Nvidia表示,这项软件是Nvidia GPU运算平台在各项评比名列前茅的一大助力。
TensorRT不只可以用来优化基于Transformer的模型性能,也可用于其他从计算机视觉、医疗图片、推荐系统、对话式AI、语音识别、语义理解、语音生成(Text to Speech)等应用的模型。比如GE Healthcare,就将TensorRT用在超音波的机器视觉推论上。