利用NVIDIA组件提升GPU推理的吞吐

本实践中,唯品会AI平台与NVIDIA团队合作,结合NVIDIATensorRT和NVIDIAMerlinHierarchicalKV(HKV)将推理的稠密网络和热Embedding全置于GPU上进行加速,吞吐相比CPU推理服务提升高于3倍。

应对GPU推理上的难题

唯品会(NYSE:VIPS)成立于2008年8月,总部设在中国广州,旗下网站于同年12月8日上线。唯品会主营业务为互联网在线销售品牌折扣商品,涵盖名品服饰鞋包、美妆、母婴、居家、生活等全品类。

在使用GPU打开推理算力天花板过程中,遇到了如下问题:

稠密网络,如何获取更好的GPU推理性能;

Embeddingtable如何使用GPU加速查询。

为了解决上面的问题,我们选择使用了NVIDIATensorRT和MerlinHierarchicalKV。具体原因如下:

稠密网络使用TensorRT推理,通过TensorRT和自研Plugin方式获取更好的推理性能;

HierarchicalKV是一个高性能GPUTable实现,我们将热Embedding缓存在GPU中,冷Embedding则通过内存和分布式KV存储,加速查表过程。

GPU推理服务设计方案

图1.GPU推理服务工作流程图

如上图所示,支持GPU推理服务,可以分为如下几步:

TensorPS(自研训练框架)

支持离线和实时训练;

离线训练:生成天级全量模型,完成后同步给Odin;

实时训练:生成小时级别的全量模型和分钟级别的增量模型,完成后同步给Odin;

2.Odin(模型协调者)

(离线/实时)单机模型的全量模型:触发TensorRTConverter;

(离线/实时)分布式模型的全量模型:同时触发TensorRTConverter和Reshard;

(离线/实时)单机/分布式模型的增量模型:触发TensorRTConverter;

3.TensorRTConverter(模型转换器)

将Dense网络转换成TensorRTEngine;

转化完成,如果是全量模型,向模型管理API汇报全量版本;如果是增量模型,向模型管理API汇报增量版本;

4.Reshard(参数分片模块)

对模型参数分片后,向模型管理API汇报版本;

分片后参数,同步到分布式在线参数服务Atreus;

5.Thor(自研推理服务)

单机模型:通过模型管理API获取全量模型版本,拉取模型并启动推理服务Thor;

分布式模型:需要部署分布式参数服务Atreus和推理服务Thor;

如果开启了实时模型特性,Thor会定时通过模型管理API获取增量版本,拉取并更新增量模型;

6.Atreus(自研分布式在线参数服务)

仅用于分布式模型,可支持TB级参数;

如果开启了实时模型特性,Atreus会定时通过模型管理API获取增量版本,拉取并更新增量参数。

GPU模型推理

图2.前向计算流程图

如上图所示,前向计算可以分为如下几步:

H2D拷贝(CPU->GPU);

Embedding层,使用GPUTablelookup(GPU);

Dense层,使用TensorRT+自研Plugin推理(GPU);

D2H拷贝(GPU->CPU)。

稠密网络使用TensorRT在GPU上计算

图3.稠密网络TensorRT推理优化

如上图所示:

稠密网络使用TensorRT推理,结合自定义Plugin实现推理性能优化。

利用HierarchicalKV实现GPUTablelookup

图4.基于HierarchicalKV的GPUTable

如上图所示,查表过程可以分为如下几步:

将keys拷贝到GPU;

将keysconcat成一个大的mergedkeys,减少后续查表次数;

mergedkeys查GPUTable,输出mergedvalues,并输出未命中missedkeys和missedindices;

拷贝missedkeys到CPU;

查询Atreus(分布式参数服务器),获取missedvalues;

missedvalues拷贝到GPU;

将missedvalues更新到mergedvalues;

将mergedvalues输出Split成多个Tensor(和keys一一对应);

对missedkeys进行去重;

去重之后,异步更新GPUTable。

TensorRTConverter实现GPU模型转换

图5.TensorRTConverter转换流程

如上图所示,TensorRTConverter可以分为如下几步:

FreezeCPU模型;

切分模型Graph成Sparse和Dense两个子图,Sparse图在GPU上执行,Dense图经过图优化后使用TensorRT推理;

Dense图转化成ONNX模型;

优化ONNX模型,把图中OP替换成自定义的高性能TensorRTPlugin;

转换ONNX模型成TensorRTEngine;

合并Sparse图和TensorRTEngine生成GPU模型。

自研CUDAKernel,提高性能

GPUTable加速查表

基于HierarchicalKV增强了find接口,支持获取未命中keysindices等信息,在高命中率情况下有更好的性能,并贡献给社区:

voidfind(constsize_typen,constkey_type*keys,//(n)value_type*values,//(n,DIM)key_type*missed_keys,//(n)int*missed_indices,//(n)int*missed_size,//scalarscore_type*scores=nullptr,//(n)cudaStream_tstream=0)const

2.GPU支持CSR(Compressedsparserow)格式的序列特征

根据统计,序列特征有85%+的数据都是填充值,使用CSR格式压缩序列特征可以大幅度减小序列特征大小。考虑到搜推序列数据的特殊性(填充值都在序列尾部),这里仅使用value和offset两个序列表示原始稀疏矩阵,如下图:

图6.CSR的稀疏矩阵

通过Fusion的方式,减少Lookup过程CUDAKernel数量,提升推理性能。

图7.Lookup过程优化对比

优化前:N个输入对应N个LookupCUDAKernel;

优化后:通过提前合并,将CUDAKernel数量减少为3个(Concat、Lookup和Split)。

通过Fusion的方式,减少CSR处理过程CUDAKernel数量,提升推理性能,下图以ReduceSum举例。

图8.CSR处理优化流程

优化前:N对输入对应N个ReduceSumCUDAKernel;

优化后:通过提前合并,将CUDAKernel数量减少为4个(2个Concat,1个ReduceSum和1个Split)。

3.H2D,合并CPU->GPU内存拷贝

搜推模型中有较多的特征输入,GPU推理中需要将这些Tensor从CPU拷贝到GPU,频繁小内存的cudaMemcpy会导致性能下降,最佳实践是将这些Tensor打包在一块连续内存中,将整个大内存H2D拷贝到GPU。

4.Tile算子融合

搜推模型中有超过200个Tile,大量的KernelLaunch会带来GPU推理性能恶化,最佳实践是进行KernelFusion,在一个大的算子中执行多个小Kernel,从而充分发挥GPU的并发优势。

持续在搜推广场景中GPU加速

唯品会AI平台一直追求性能上的极致,未来将会持续与NVIDIA技术团队合作,继续探索使用HierarchicalKV在训练超大型模型上的GPU性能优化,在提升GPU性能方面进行不断地探索和实践,也会对GenerativeRecommenders进行探索和实践。

THE END
1.目前主流的人工智能学习框架有哪些? 支持分布式训练和 GPU 加速。 使用场景: PyTorch 在学术界和工业界都非常受欢迎,尤其适合快速迭代的研究项目和需要灵活性的生产环境。 Keras Keras 最早是作为一个独立的深度学习框架推出的,后来成为 TensorFlow 的高级 API。它以易用性著称,是初学者学习深度学习的首选。 https://blog.csdn.net/Xhz181888/article/details/144437120
2.微软开发首个AI认知训练框架训练效率提升300%人工智能根据上海市精神卫生中心与微软亚洲研究院联合研究,利用多模态大模型开发了“忆我”(ReMe)个性化认知训练框架。该框架基于Azure OpenAI服务,并在易用性、界面友好性、功能专业性和入门难易度等多个维度进行设计。 “忆我”框架支持文字、图像、语音等多种模态的输入输出,以对话机器人的形式为用户提供全新的认知训练体验https://ai.zol.com.cn/901/9016520.html
3.火箭发射:一种有效轻量网络训练框架像点击率预估这样的在线实时响应系统对响应时间要求非常严格,结构复杂,层数很深的深度模型不能很好的满足严苛的响应时间的限制。为了获得满足响应时间限制的具有优良表现的模型,我们提出了一个新型框架:训练阶段,同时训练繁简两个复杂度有明显差异的网络,简单的网络称为轻量网络(light net),复杂的网络称为助推器网络(bohttps://www.51cto.com/article/563252.html
4.字节最新复杂召回模型,提出深度检索DR框架解决超大规模推荐系统中在本文中,我们提出了一个端到端的模型框架深度检索DR。DR将所有的候选集编码到离散的隐式空间中,随着其他的网络参数一起学习。模型训练完成后的在线服务阶段,则通过beam search的方式获取最相关的候选集。实验证明了DR可以接近线性的计算复杂度,同时取得了与暴力算法相当的效果。https://cloud.tencent.com/developer/article/1698045
5.科学网—[转载]群视角下的多智能体强化学习方法综述依靠分布式训练框架IMPALA,DeepMind在开发星际争霸AlphaStar时,采用了集中式训练分布式执行的范式设计了三大类智能体对象:主智能体(main agent)为正在训练的智能体及历史数据,采用优先级虚拟自对弈的方式来选取;联盟利用者(league exploiter)能打败联盟中的所有智能体,按照有优先级虚拟自对弈的方式与全联盟的对手进行训练;https://blog.sciencenet.cn/home.php?mod=space&uid=3472670&do=blog&id=1422698
6.计算机学院七篇论文入选数据库领域顶级会议VLDB2023文章“Galvatron: Efficient Transformer Training over Multiple GPUs Using Automatic Parallelism”提出了一套面向大规模Transformer模型的自动并行训练框架。相比于现有工作,该工作主要有三方面优势:1)可以支持更多的并行维度,并且具备面对差异化的模型结构和不同集群硬件条件下的自适应调优能力;2)面对庞大的搜索空间,设计https://news.pku.edu.cn/jxky/3347dc1aea5547b28f167b4110d74f8e.htm
7.TinyMaix:超轻量级推理框架即将支持 MaixHub 在线模型训练 在Arduino ATmega328上运行 mnist demo 实例 mnist demo 0000000000000000000000000000 0000000000000000000000000000 0000000000000000000000000000 000000000077AFF9500000000000 000000000AFFFFFFD10000000000 00000000AFFFD8BFF70000000000 00000003FFD2000CF80000000000 00000004FD10007FF40000000000 00000000110000http://en.wiki.sipeed.com/news/others/tinymaix_cnx/tinymaix_cnx.html
8.2019机器之心人工智能年度奖项正式公布:关注创业先锋,聚焦产品一流科技推出的分布式深度学习训练框架 OneFlow,是完全独立自主研发的面向大模型大数据大规模的流式计算框架,目前已经达到市场产品级应用水平。并于 2019 年落地了诸多代表性案例客户,包括头部互联网公司以及高校、研究院所、人工智能园区与政务服务等行业的核心机构。案例主要覆盖海量图像识别、自然语言处理大模型应用,广告https://www.zhuanzhi.ai/document/2abfb47db9cd9ab70b4144f329e147b8
9.朱庆华宋珊珊风险视角下生成式人工智能的司法应用路径智能作为促进人类发展的“工具”价值定位,有效识别法律算法化与算法法律化的冲突和风险,从而确立风险控制模式下技术介入司法的边界,据此以技术弥补智能司法应用功能应然性发挥不足困境,探索“司法数据—法律监督—辅助办案—社会治理”多维司法应用构面,并从“伦理原则—法律规则—技术方法”三个层面完善应用场域的框架策略https://www.jfdaily.com/sgh/detail?id=1247369
10.CVPR2021有的放矢,用图像分割与像素投票找到预定义的地标点在定义了真实地标分割图和真实方向投票图后,我们可以监督所提出的 VS-Net 预测这两个图。经过训练,VS-Net 可以预测查询图像的分割图和投票图,我们可以据此建立精确的二维到三维的对应关系,以实现稳健的视觉定位。 基于原型的在线学习三元监督投票分割网络: https://www.sensetime.com/cn/technology-new-detail/41164696?categoryId=48
11.华为机器学习人工智能详解MindSporeAI计算训练推理框架实践当当乐学者图书专营店在线销售正版《深度学习与MindSpore实践 华为机器学习人工智能详解 MindSpore AI计算训练推理框架实践 卷积神经网络实现指南 深度学习实例书籍》。最新《深度学习与MindSpore实践 华为机器学习人工智能详解 MindSpore AI计算训练推理框架实践 卷积神经http://product.dangdang.com/1649993316.html