案例简介
腾讯公司深耕模型量化开发,且长期与 NVIDIA 团队合作,成功将深度学习模型精度从 FP32 压缩到 FP16 以及 INT8。现在,该技术再次获得了新的重要突破。腾讯团队利用全新设计的 QAT 训练算法 Auto48,以及 INT4 推理能力,实现业界首次无损 INT4 在 NLP 领域落地使用的技术突破。服务上线后,不仅极大提升了微信中的搜索能力,在之前的基础上更进一步为公司节省了约 30% 的计算资源,其中 NVIDIA T4、A10 GPU 及 TensorRT 即为本案例的应用核心。
Case Introduction
With the help from INT8 inference capability of NVIDIA TensorRT inference engine and knowledge-distillation-based QAT training, Tencent Wechat search is speeded up greatly. About 70% computing resources are saved. The major products utilized in the case is NVIDIA T4 GPU and TensorRT SDK.
The speed of Tencent Wechat search has been potentially improved by using Auto48, which is a novel QAT training algorithm developed by Tencent combined with int4 inference engine. The results indicate that about [x] resource can be saved without performance degradation. The major products utilized in the case is NVIDIA T4 and A10 GPU.
客户简介及应用背景
腾讯微信是目前国内最大的社交平台及通讯工具之一。随着微信生态环境的优化,其功能也越来越丰富,搜索也成为其越来越重要的入口,这个入口可以用来搜索微信内部的功能、信息,以及搜索互联网上的内容,目前微信搜一搜月活跃用户已超过 7 亿。而在搜索业务当中微信团队使用了大量的神经网络模型,包括自然语言理解、匹配排序等等,这些模型的训练和推理也都大量依赖于 NVIDIA GPU,尤其在推理方面,NVIDIA GPU 及相应的解决方案皆满足了业务所需的延迟和吞吐要求。
客户挑战
搜索业务由多个子模块构成,包括查询理解、匹配、搜索排序等等。由于搜索的业务特点,这些任务对线上服务的延迟和吞吐都十分敏感。而在最近几年,随着算力的提升以及算法的创新,众多大型复杂的神经网络模型也开始应用在这些任务上。一方面,现有的模型(例如 BERT/GPT)带来的成本压力显著;另一方面,超大规模(十/百亿参数)模型带来的精度提升使得大模型应用需求持续升温。因此,这些大模型需要的计算资源和业务上的高要求对推理端的软硬件都是很大的挑战,必须针对具体的硬件做极致的优化。现有的对于大模型的推理加速技术,比如模型压缩、剪枝、低精度计算等等,都被证明能够一定程度上实现性能加速、节约资源。然而,这些技术可能会带来精度下降等负面影响,限制了这些技术的广泛应用。因此,如何在保证精度效果以及服务吞吐延迟需求的情况下,高效地对这些模型进行推理成为了业务上的巨大挑战。NVIDIA GPU 以及 TensorRT 给这一场景提供了解决方案。
应用方案
为了满足线上服务的需求,并且尽可能地节约成本,微信搜一搜选择使用 NVIDIA T4 GPU 以及 TensorRT+CUTLASS 实现来进行线上大模型的推理。
- 线上服务对于吞吐和延迟有很高的要求,微信搜一搜选择使用 NVIDIA T4 GPU 以及 TensorRT 推理引擎来做线上推理服务,利用 NVIDIA 基于 TensorRT 实现的 INT8 BERT,可以很方便地在 INT8 精度下实现满足需求的线上推理功能。利用 TensorRT 提供的“校准”(Calibration)功能结合量化感知训练(Quantization Aware Training, QAT),可以方便地将 Float 精度模型转换为 INT8 低精度模型,实现低精度推理。通过低精度推理,模型的单次推理时间大大缩短 30%。这个方案在线上取得了很好的效果。
- 在此基础上,微信搜一搜希望进一步加快推理速度,节约计算资源,以便更好地服务用户,节约成本。更低的低精度推理成为了很好的选择。NVIDIA GPU 从图灵(Turing)架构开始就有了 INT4 Tensor Core,其计算吞吐量最高可达 FP16 精度的 4 倍。并且低精度推理可以同时使用其他技术比如剪枝、蒸馏等相结合做进一步提升。微信搜一搜线上大量使用 NVIDIA T4 GPU,非常适合应用 INT4 推理,且 CUTLASS 对 INT4 GEMM 也有良好的支持。
- 然而当进一步将数据类型从 INT8 降低到 INT4 的时候,如果使用相同的 QAT 算法时,模型的精度会发生显著的下降(超过 2%)。因此,微信搜一搜设计了全新的训练算法—— Auto48。Auto48 是一套全新的自动化模型量化工具,能够帮助用户自动生成自定义压缩率下,性能最优的量化模型。在 QAT 算法的启发下,Auto48 设计了全新的动态压缩算法来极大地减小高压缩率(INT4)带来的压缩误差,并且结合了更有效的知识蒸馏相关技术,使得量化后的模型准确度得到了显著的提高。进一步的,Auto48 还支持 INT8+INT4 混合精度的压缩,这使得用户可以自由的在压缩率和精度之间做权衡,甚至实现无损压缩。TensorRT 对于导入 QAT 训练好的模型进行 INT8 低精度推理已经有了很好的支持。T4 GPU 在硬件上支持 INT4 Tensor Core,使用 CUTLASS 可以方便地构建出满足多种需求的 INT4 GEMM 算子。这些算子不仅降低了推理时间,还保证了算子的功能的灵活性和扩展性。基于 Auto48 训练的模型,不仅得到了最佳性能,而且精度没有损失,线上服务只需做少许改动即可,极大地简化了部署的流程。
通过这样的方案,微信搜一搜中的一些关键任务,比如查询理解等自然语言理解任务,可以在精度没有损失的情况下,达到 1.4 倍的加速效果,平均单句推理时间达到了 0.022ms。任务相应的计算资源节省了约 30%。近期微信搜一搜在部分任务上线了 INT4 模型服务,该服务相较于之前的 INT8 模型服务有显著的性能提升,在流量高峰时平均响应时间降低了 21%,超时率降低了 70%。这个方案大大优化了微信搜一搜业务的性能,降低了部署成本。
使用效果及影响
使用 NVIDIA T4 GPU 以及 TensorRT 推理引擎进行 INT4 低精度推理,极大提升了微信搜一搜相关任务的速度,进一步提升了用户体验,节约了公司成本。
INT4 与 INT8 服务请求耗时和失败率对比
(图片来源于腾讯授权)
Engineers Dickzhu and Huili said: “We have implemented INT4 quantized model inference acceleration and potentially speedup the core tasks of WeChat Search, such as Query Understanding and Results Ranking. The conventional limitation of NLP model complexity has been broken-through by our solution with our poposed algorithm Auto48. Consequently, we have achieved significant reduction in allocated computational resources using superb performance optimization methods.” 工程师朱健琛和李辉表示:“我们成功地实现了 INT4 的量化加速模型,并且在微信搜索核心任务(例如 query 理解和打分)上,显著的提高了这些模型的推理速度。通过使用我们提出的 Auto48 算法,我们成功打破了NLP 模型的复杂性带来的限制。这种先进的优化手段可以极大地减少计算资源的需求。”