TensorRT 和 Triton 助力微信加速视觉应用,提高可靠性

by 英伟达中国

简介
• 本案例中通过NVIDIA T4 GPU,TensorRT和Triton, 帮助微信OCR降低整体耗时46%, 并将系统的失败率降低81%,同时降低了高达78%的服务器数量。
• 本案例主要应用到 NVIDIA GPU ,TensorRT和Triton。

客户简介
腾讯微信是一款跨平台的通讯工具。支持通过手机网络发送语音、图片、视频和文字等。截至2021年6月,微信在全球拥有超过12亿活跃用户,是国内活跃用户最多的社交软件。
微信识物是一款主打物品识别的 AI 产品,通过相机拍摄物品,更高效、更智能地获取信息。2020 年,微信识物拓展了更多识别场景,上线了微信版的图片搜索。打开微信扫一扫,左滑切换到“识物”功能,对准想要了解的物品正面,可以获取对应的物品信息,包括物品百科、相关资讯、相关商品。
2021年1月, 微信发布的微信8.0,版本更新支持图片文字提取的功能。用户在聊天界面和朋友圈中长按图片就可以提取图片中文字,然后一键转发、复制或收藏。

挑战
微信识物包含检测、图像召回、信息提炼等环节,OCR主要包括识别和检测,这两种应用都有非常大的计算量,在用Pytorch进行模型的推理时,一方面时延特别大,导致用户体验受损;另一方面,显存占用很大,单张NVIDIA T4上部署的模型数比较少,导致推理请求的并发数上不去,请求失败的概率太高,只能通过增加机器的方式来提高并发能力,业务部署成本较高。再次,使用的模型经常变化,而业务需要更换后的模型能够快速地加速和上线部署。

方案
基于以上挑战,腾讯微信选择了采用NVIDIA 的TensorRT对模型进行推理加速,并利用NVIDIA Triton推理服务器在T4 GPU上进行在线部署,在提升用户体验的同时,大幅降低了服务成本。

1、 通过使用TensorRT对微信识物和OCR的模型进行加速,在都使用FP32的情况下,与Pytorch相对,时延降低50%左右。
2、 在OCR的识别和检测阶段,使用TensorRT结合NVIDIA T4 GPU 的FP16 Tensor Core,在保证精度的同时,识别的时延进一步降低了50%,检测降低了20%。
3、 在微信识物的分类和检测任务中,通过使用NVIDIA T4 GPU 的int8 Tensor Core,并结合QAT,在满足精度要求的前提下,进一步大幅提升了性能。
4、 通过使用FP16和int8 低精度模式,在大幅降低推理时延的同时,大大减少了显存的占用,在FP16模式下,单模型显存占用仅占FP32模式的40%–50%, 而在int8模式下,单模型显存占用仅占FP32模式的30%左右。在提高单张T4卡上部署的模型数量的同时,大幅提高了单GPU的推理请求并发能力。
5、 Triton的dynamic batch和多实例等特性,帮助微信将在满足时延要求的同时,提高了系统整体的并发能力,将系统失败降低了81%。
6、 TensorRT可以对模型进行快速的加速,Triton则可以对加速后的模型进行快速的部署,满足了业务对修改后的模型进行快速部署的需求,同时也大大减少了工程人员的工作量。

效果
通过使用NVIDIA的TensorRT对微信识物和OCR的模型进行加速,在降低单次推理时延50%以上的同时,节约了多达64%的显存。结合Triton的dynamic batch和多实例的功能,OCR的整体时延降低了46%,系统失败率降低了81%。大大提高了用户的体验,并且服务器的数量减少了多达78%,极大降低了服务的成本。