利用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.train和offlinetrain需要交互的训练是online吗离线学习适用于处理大数据和复杂模型,需要所有训练数据在训练前可用,训练完成后模型才用于预测。在线学习则侧重实时性,数据以流式到达,模型会随新数据不断更新。两种方式常结合使用,如离线训练后在线微调。在线学习关注当前数据,离线学习则能看到全局。 摘要由CSDN通过智能技术生成 https://blog.csdn.net/qq_45104603/article/details/126052925
2.关于训练神经网路的诸多技巧Tricks(完全总结版)很多人都说训练神经网络和炼金术师炼药的过程相像,难以破解其中的黑盒子。其实不然,在训练的时候我们依然可以通过大量的技巧去最大化我们的训练效果,从而帮助我们的任务取得不错的精度,这些技巧是训练神经网络不可缺少的一环。 本文尽可能说明训练过程中所需要的各种小技巧,会有不完善的地方,限于篇幅每个点不会说很https://cloud.tencent.com/developer/article/2346565
3.如何构建高效的离线机器学习模型训练平台?袋鼠社区此外,离线训练还能够有效减少对网络带宽的依赖,提升训练的稳定性和效率。 二、离线机器学习模型训练平台的核心组成部分1. 硬件环境: 离线机器学习训练平台的硬件环境是基础,包括计算机硬件(CPU、GPU等)、存储设备(HDD、SSD)和网络设施等。合适的硬件配置对模型训练速度和性能起着至关重要的作用。比如,GPU在处理大型https://www.dtstack.com/bbs/article/15769
4.相比于离线训练,在线训练的好处有什么?问答离线训练毕竟使用的是 T-1 或者 T-2 的数据去做的,没有对线上实时产生的行为数据进行利用,对于数据的时效性利用相对较差。 比如说,有这样的一个场景,今天我的整个平台只对 14 岁以下的少女做某个运营活动,而平台上充斥了大量的年龄段的客户,整个平台的交互行为都变了,这个时候你的模型还是 T-1 去做的,将https://developer.aliyun.com/ask/446535
5.模型也可以上网课?!一文看懂服务型蒸馏训练方案同时由于Teacher模型可以弹性调度,不用担心高峰时线上实例被抢占造成的任务失败。相当于把teacher对训练卡的资源需求转移到了在线GPU卡上,在v100等离线训练资源受限的情况下,使用在线卡对训练进行加速,以节约宝贵的训练资源。 此外,在离线集群上,结合调度策略,还可以将Teacher模型部署到集群碎片资源,或者如k40等使用率https://www.thepaper.cn/newsDetail_forward_8071575
6.谁说RL智能体只能在线训练?谷歌发布离线强化学习新范式为了避免 distribution mismatch,强化学习的训练一定要在线与环境进行交互吗?谷歌的这项最新研究从优化角度,为我们提供了离线强化学习研究新思路,即鲁棒的 RL 算法在足够大且多样化的离线数据集中训练可产生高质量的行为。 为了避免 distribution mismatch,强化学习的训练一定要在线与环境进行交互吗?谷歌的这项最新研究从优化https://www.51cto.com/article/614512.html
7.深度学习模型在线训练排序策略离线排序模型华为云帮助中心为你分享云计算行业信息,包含产品介绍、用户指南、开发指南、最佳实践和常见问题等文档,方便快速查找定位问题与能力成长,并提供相关资料和解决方案。本页面关键词:深度学习模型 在线训练。https://support.huaweicloud.com/topic/985668-2-S
8.科学网—[转载]群视角下的多智能体强化学习方法综述基于学习(深度学习、强化学习)设计的迭代式问题求解方法是离线策略学习的基础范式。由于环境及对手的非平稳性,离线训练的蓝图策略通常很难直接运用于在线对抗。在线博弈对抗过程与离线利用模拟多次对抗学习博弈过程不同,博弈各方处于策略解耦合状态,与离线批(batch)式策略学习方法不同,在线博弈对抗策略的求解本质是一个流https://blog.sciencenet.cn/home.php?mod=space&uid=3472670&do=blog&id=1422698
9.蚂蚁金服核心技术:百亿特征实时推荐算法揭秘备注:弹性特征带来一个显著的优势:只要用足够强的L1稀疏性约束,在单机上就能调试任意大规模的特征训练,带来很多方便。我们的hashmap实现是KV化的,key是特征,value是vector的首地址。 离线训练优化 经过这样的改造后,在离线批量学习上,带来了以下变化: 在线训练优化 https://maimai.cn/article/detail?fid=1010621115&efid=mIQCHnkj0zjxlpygUmo5mg
10.构建容器镜像部署nnae软件(支持离线推理在线推理训练)本文档基于镜像树结构来构建容器镜像,具有可扩展性。 镜像树示意图如图1所示。 图1镜像树示意图 表1 昇腾基础镜像树说明 镜像名 说明 ascendbase-train 安装系统组件及python第三方依赖等。 ascend-train 安装深度学习引擎包nnae(支持离线推理、在线推理、训练)等。 https://www.hiascend.com/document/detail/zh/mindx-dl/2046/dluserguide/toolboxug/toolboxug_000121.html
11.机器学习术语表:机器学习基础知识MachineLearningGoogle动态模型(或在线模型)是一种模型, 。 动态训练(或在线训练)是训练 频繁或持续不断 动态推理(即在线推理)是 根据需求生成预测。 动态模型 #fundamentals 一个模型经常出现(甚至可能会持续) 重新训练。动态模型是一个“终身学习者”那个 适应不断演变的数据。动态模型也称为在线模型。 https://developers.google.cn/machine-learning/glossary/fundamentals?hl=zh-cn
12.基于Kmeans聚类的CSI室内定位AET对于单个天线对得到fin,对于m个天线的每个天线对使用Kmeans算法,得到训练向量: 2.2 在线定位阶段 在线定位阶段采用与离线训练阶段相同的方法提取到m个天线对的指纹: 将提取到的指纹与训练阶段建立的数据库中的指纹作比较,即将获取到的第i个天线对的指纹矩阵与数据库中的第i个天线对的指纹矩阵,进行两个指纹矩阵中任http://www.chinaaet.com/article/3000057028
13.粗排优化探讨得物技术离线在线一致性分析 待补充实际效果 四 样本设计 粗排相较于精排样本选择偏差(SSB)的问题更加严重,借鉴召回经验,可以通过适当采样减少偏差。采样设计的目的也是希望离线训练样本尽可能与线上分布一致。 样本选择方法 负样本可选范围: 曝光未点击样本; 全库除转化外样本; https://blog.itpub.net/70027824/viewspace-3000851/
14.推荐模型离线评测效果好,线上效果却不佳的原因推荐系统里非常常见,并且往往非常的隐蔽的一种数据分布不一致的情况被称之为冰山效应,也就是说离线训练用的是有偏的冰山上的数据,而在线上预估的时候,需要预测的是整个冰山的数据,包括大量冰面以下的数据!我们看下面这张图。左边是我们的Baseline,绿色的表示正样本,红色表示负样本,灰色部分表示线上由于推荐系统的“https://www.jianshu.com/p/34489b31c783
15.微软亚洲研究院解密:AISuphx是如何成为麻将十段的?科技当初始的手牌发到麻将AI手中时,通过模拟来调整离线训练好的策略,使其更适应这个给定的初始手牌。微软亚洲研究院的实验表明,相对麻将隐藏信息集的平均大小10的48+次方倍而言,模拟的次数不需要很大,pMCPA也并不需要为这一局手牌收集所有可能后续状态的统计数据。由于pMCPA是一种参数化的方法,所以微调更新后的策略可以帮https://www.whb.cn/zhuzhan/kjwz/20200412/340072.html
16.推荐算法中的在线学习和离线学习有何区别,各自的优缺点是什么在线学习和离线学习是推荐算法中常见的训练方式,各自有不同的优缺点。在实际应用中可以根据需求选择合适的方式或结合两者优势。https://www.mbalib.com/ask/question-ec5c1bbee149c6534d0a725ffdb15235.html
17.2019机器之心人工智能年度奖项正式公布:关注创业先锋,聚焦产品2019 年,天泽智云发布无忧机加解决方案,基于 CPS 信息物理系统架构,融合高频振动数据和加工运行数据,结合机理、数据的智能分析,离线训练算法模型,在线评估刀具健康状态,实现刀具失效预警、刀具寿命预测和主轴健康管理。截止 2019 年 12 月底,已服务 2 家机床厂商,为其增强产品竞争力,提升服务价值;助力 4 家制造商将https://www.zhuanzhi.ai/document/2abfb47db9cd9ab70b4144f329e147b8