部署NVIDIAT4GPUVIVIVO推荐系统:支持1亿用户智能服务

 行业动态     |      2022-05-16 10:18:57    |      沥拓

  案例介绍及其应用背景。

  VIVOAI中间平台的最终目标是为2.6亿+VIVO用户提供终极智能服务,而NVIDIA则为VIVO推荐系统提供强大的计算支持,实际优化。

  推荐系统的大规模部署带来了许多工程挑战,借助NVIDIATensort,TritonandMPS(Multi-Processservice)和单张T4GPU推理卡,其性能优于78核CPU服务器,成本也降低了75%。

  团队实践并比较了三种不同的工程方案,其中性价比最高的通用GPU方案充分发挥了MPS和Tensorflow的性能,创造性地解决了推荐场景的问题,包括:如何满足频繁的算法迭代需求,如何开发不支持的操作插件,如何提高低效的推理服务性能。

  VIVOAI平台致力于打造一个完整的人工智能中间平台,打造一个全面的行业领先的大型分布式机器学习平台,应用于内容推荐、商业实现、搜索等业务场景,为2.6亿+VIVO用户提供极致的智能服务。

  VIVOAI中间平台始终服务于企业对智能深度发展的需求,并在数据中心平台的基础上增加了集成智能服务的概念。并以数据采集、存储、特征处理、分析、模型构建、培训、评储、特征处理、分析、模型构建、培训和评估,使其高度组成、配置和自动化。

  Figure1.AI中台系统架构图(VIVO研究所授权的图片)

  在整个AI中间平台架构中,推荐中间平台是最重要的核心,也是最具商业价值的部分。它不仅需要承载数亿VIVO用户,还包括每天数千万的数据。本文从推荐系统工程的角度解读了以下三个方面:VIVO的智能推荐系统是如何运行的?在实际应用场景中遇到了哪些挑战?如何加快推荐系统的部署?

  Figure2.推荐中台系统架构(VIVO研究所授权的图片)

  经过验证,该方案可以有效解决GPU在推荐业务中的通用性问题;同时,GPU可以更有效地使用。目前,它已经在一些推荐业务中实施。在压力测量和性能方面,单张T4GPU推理卡的性能优于78核CPU服务器,约6台以上。在成本方面,VIVO自主研发的通用GPU方案在Tensort方案的基础上实现了更高的QPS和更低的延迟,可以节省约75%的成本!

  本案主要应用于NVIDIAT4GPU及相关工具,包括NVIDATensort、Triton、MPS等。

  客户简介

  VIVO是一家全球移动互联网智能终端公司,以设计驱动创造伟大产品,打造以智能终端和智能服务为核心的科技公司。致力于为消费者打造智能手机产品,拥有极致的摄影、免费游戏和高保真音乐。根据《2020年胡润中国十大消费电子企业报告》,VIVO以1750亿元排名第三。

  客户挑战

  在工程实践中,VIVO推荐系统面临的第一个问题是如何平稳地将各种推荐业务逻辑从CPU平台迁移到GPU平台。鉴于目前有多种推荐业务场景,包括应用商店、移动浏览器、负屏幕信息流等。每个场景都有自己的算法模型和业务流程。考虑到当前业务的无损迁移,如何将各种分散的智能服务整合到一个统一的推荐平台是一个巨大的挑战。

  长期以来,CPU一直是支持和推荐业务场景的主流硬件平台。然而,VIVO工程团队发现,在推理服务中,CPU的性能始终达不到要求的标准,不仅计算能力弱,而且响应延迟和QPS在应对复杂模型时也无法满足实时性和高并发性的需求。

  此时客户尝试使用NVIDIAGPU实现推荐业务的推理服务,有效解决CPU计算能力和性能的瓶颈,期待更大的成本优势。经过大量的工程实践,结果表明,一台基于NVIDIAT4GPU的推理服务器的性能可以相当于24台CPU机器。毫无疑问,GPU的整体性能具有性能和成本优势。因此,客户也认为,公司甚至行业都已经认为,使用GPU作为推荐业务场景的推理平台。

  应用方案

  由于GPU芯片体系结构的独特性,很难有效利用GPU的计算能力,而不需要优化原始的TensorFlow模型。为了解决这个问题,VIVO工程团队投入了大量的人力和时间来优化和转换推荐的模型。首先设计的是Tensorrt方案,即使用NVIDIA推理加速工具Tensorrt,结合Triton的serving模式,最大化GPU的整体收益。

  具体来说,通过Onnx将训练导出的Tensorflow模型转换为Tensorrt模型,然后使用NVIDIA提供的推理服务框架Triton加载TensorRT模型。业务代码使用VIV封装Triton的JNI接口,将业务请求输入TensorRT模型进行推理计算。

  Figure3(VIV研究所授权的图片)

  测量结果表明,该方案获得了预期的在线收益。性能方面,单张T4GPU推理卡,性能优于78核CPU服务器,约6台以上。以下面的场景为例,在相同的精排服务请求中,QPS为600,BatchSize为3000,不同方案的成本,Tensort方案可以节省约14%的成本:

  方案CU机器数量GPU机器数量相比CPU方案成本。

  -

  ?

  NVIDIA机器学习团队为了进一步提高线上收益,最大限度地提高GPU利用率,与VIVO合作,不断优化现有效果,探索更多技术方案的可行性。

  经过深入讨论,我们发现目前的方案(triton+tensort)确实可以有效利用GPU,但也存在一些问题。比如很多推荐的业务场景,算法模型迭代更新频率高,工程开发周期无法满足频繁更新的需求。此外,一些推荐的模型不受算子的支持,需要手动开发tensorrtplugin,短时间内无法上线。一般来说,这种开发过程的通用性不够好,很难有效地支持算法的连续迭代。

  因此,我们迫切需要实现一套机制,既要保证GPU的推理性能,又要有良好的通用性。经过多次工程尝试,我们提出了适合自己的推荐系统推理加速方案,即VIVO自主开发的通用GPU方案。

  该方案通过多个过程+MPS+Tensorflowruntime的方式有效提高了GPU的使用率,并且在某些场景中不需要转换Tensorrt模型。该方案的主要设计目标是:

  多流程模型,管理和保护模型服务流程,有序更新模型。

  在本地TensorFlow中添加不支持GPU的算子。

  加载模型时,动态替换不支持GPU的原始算子。

  Figure4.自研通用GPU方案示意图(VIVO研究所授权的图片)

  此外,考虑到VIVO算法部门和工程部门在具体工程实践中需要同步开发,如何解耦算法工程团队和推理加速团队的开发任务,从而推出可配置的推理引擎服务,提高迭代开发效率。

  Figure5.自研可配置推理引擎示意图(VIVO研究所授权的图片)

  方案效果及影响。

  经过验证,该方案可以有效解决GPU在推荐业务中的通用性问题;同时,GPU可以更有效地使用。目前,它已经在一些推荐的业务中实施。经过压力测试,VIVO自主研发的通用GPU方案在Tensort方案的基础上实现了更高的QPS和更低的延迟,可以节省约75%的成本!