NVIDIA TensorRT和GPU软件栈助力腾讯AI LAB打造生动的虚拟人

by 英伟达中国

案例简介

•    本案例中通过使用NVIDIA T4 GPU和TensorRT,OpenGL,CUDA, CUDA/OpenGL interoperability等GPU软件技术栈,助力腾讯AI LAB虚拟人项目在人脸生成阶段达到了超过3倍的加速。

•    本案例主要应用到 NVIDIA T4 GPU,TensorRT, OpenGL,CUDA, CUDA/OpenGL interoperability等AI加速平台。

Case Introduction

  • major products utilized in the case are NVIDIA T4 GPU, and NVIDIA AI software stack — TensorRT, CUDA, OpenGL, CUDA/OpenGL interoperability, etc.

客户简介及应用背景

腾讯AI LAB致力于打造产学研用一体的 AI 生态,主要的研究方向包括计算机视觉、语音识别、自然语言处理和机器学习,结合腾讯场景与业务优势,在社交AI,游戏AI,内容AI及平台AI等领域取得了显著的成果,技术被应用于微信、QQ、天天快报和QQ音乐等上百个腾讯产品。其中围棋AI “绝艺” 多次获得世界人工智能围棋大赛的冠军。

腾讯AI LAB打造的虚拟人,具有自然,生动且饱含情绪的表情,其背后由一套腾讯 AI Lab 自研的复杂系统支撑,系统首先要从文本中提取不同信息,包括表情、情感、重音位置、和激动程度等;之后,这些信息被输入到模型中生成,再同步生成语音、口型和表情参数,最终才有了虚拟人自然生动的表现。

客户挑战

根据虚拟人物需要表达的语言和情感,生成自然生动的人脸,是打造虚拟人重要的一个阶段。需要先渲染人脸的纹理图和渲染图,并将它们输入到深度学习模型中,最终生成自然生动的人脸。在这个过程中,需要用到OpenGL、OpenCV、CUDA、TensorFlow等软件技术,腾讯原有的方案有很多CPU与GPU的数据交互,且有很多计算型的操作通过CPU来实现,效率非常低下, 无论是吞吐还是延时都不满足要求,具体体现在:

  1. OpenGL在GPU上渲染好图像绘制到framebuffer后,需要先用glReadPixels拷贝数据到CPU,再用cudaMemcpy将数据从CPU拷回到GPU以进行深度学习模型的推理,这里有两次不必要的CPU与GPU之间的数据传输。
  2. 颜色空间转换,深度学习推理的前后处理等操作在CPU上完成,效率非常低下.

应用方案

NVIDIA 技术在虚拟人项目的渲染和推理阶段均提供了强大的支持。在渲染阶段,NVIDIA 助力提升了颜色空间转换效率,降低整体延时,主要体现在:

  1. 用NVIDIA CUDA/OpenGL interoperability 代替腾讯之前使用glReadPixels在CUDA和OpenGL之间拷贝数据的方案,大幅减少了CPU和GPU之间的数据拷贝,从而降低了整体的延时。
  2. 把原来在CPU上做的颜色空间转换的操作,迁移到NVIDIA T4 GPU上用CUDA kernel实现,利用GPU的并行优势,大大提高了颜色空间转换的效率,进一步降低了整体的延时。
  3. 将多帧的mesh组成一个batch分别绘制到framebuffer的不同区域,在提高OpenGL并行度的同时,给下一阶段的深度学习模型的推理提供了更大的输入数据的batch size,充分发挥NVIDIA T4 GPU高并发计算的优势,进一步提高GPU的利用率,从而提高整体的吞吐。

在推理阶段,NVIDIA助力提高推理整体吞吐,降低推理延时,主要体现在以下几点:用NVIDIA TensorRT替换TensorFlow对模型推理进行加速,并利用NVIDIA T4 GPU上的FP16 Tensor Core可以极大提高矩阵乘等操作速度的特性,在最终视觉效果几乎不变的情况下,进一步提升推理的吞吐,降低推理延时。

  1.  用NVIDIA TensorRT替换TensorFlow对模型推理进行加速,并利用NVIDIA T4 GPU上的FP16 Tensor Core可以极大提高矩阵乘等操作速度的特性,在最终视觉效果几乎不变的情况下,进一步提升推理的吞吐,降低推理延时。
  2.  在NVIDIA T4 GPU上利用CUDA kernel 替代原始流程中在CPU上使用OpenCV实现 Mat-to-Tensor 和 Tensor-to-Mat 等格式转换操作,并使用OpenCV-CUDA版替换OpenCV-CPU版的部分操作(如Resize等),充分发挥GPU相对于CPU更高的并发优势,在加速这些操作的同时减少GPU到CPU的数据传输通信量,提高格式转换效率,降低端到端的推理延时。
  3. 通过Pipeline的方式,使GPU和CPU上的操作进行overlap,并结合NVIDIA的MPS技术提高单卡上多个进程同时处理多个数据流的同时提高整体的吞吐。

使用效果及影响

在虚拟人项目中,NVIDIA CUDA技术大幅提升了渲染速度,NVIDIA TensorRT 方便快速地加速深度学习模型的推理,结合MPS技术,实现了单卡多路推流,使整体推理效率达到了原来的三倍!性能的大幅提升,既提升了GPU的利用率,又降低了AI技术的使用成本。