0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

NVIDIA英伟达企业解决方案 来源:NVIDIA英伟达企业解决方案 2024-04-20 09:39 次阅读

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

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

应对GPU推理上的难题

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

唯品会 AI 平台服务于公司搜索、推荐、广告等业务团队,提供公司级一站式服务平台。搜索、推荐、广告等业务旨在通过算法模型迭代,不断优化用户购买体验,从而提升点击率和转化率等业务指标,最终实现公司销售业绩增长。

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

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

Embedding table 如何使用 GPU 加速查询。

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

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

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

GPU推理服务设计方案

AI 平台支持搜索、推荐、广告等所有算法业务,提供大规模分布式训练、推理、实时模型等基础引擎平台,打造属于唯品会自己的 AI 基础能力引擎。

2e0d15c2-fe53-11ee-a297-92fbcf53809c.png

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

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

TensorPS(自研训练框架)

支持离线和实时训练;

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

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

2. Odin(模型协调者)

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

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

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

3. TensorRTConverter(模型转换器

将 Dense 网络转换成 TensorRT Engine;

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

4. Reshard(参数分片模块)

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

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

5. Thor(自研推理服务)

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

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

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

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

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

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

GPU模型推理

2e226206-fe53-11ee-a297-92fbcf53809c.png

图 2. 前向计算流程图

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

H2D 拷贝(CPU -> GPU);

Embedding 层,使用 GPU Table lookup(GPU);

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

D2H 拷贝(GPU -> CPU)。

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

2e2c1652-fe53-11ee-a297-92fbcf53809c.png

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

如上图所示:

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

利用HierarchicalKV实现GPUTablelookup

2e435862-fe53-11ee-a297-92fbcf53809c.png

图 4. 基于 HierarchicalKV 的 GPU Table

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

将 keys 拷贝到 GPU;

将 keys concat 成一个大的 merged keys,减少后续查表次数;

merged keys 查 GPU Table,输出 merged values,并输出未命中 missed keys 和 missed indices;

拷贝 missed keys 到 CPU;

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

missed values 拷贝到 GPU;

将 missed values 更新到 merged values;

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

对 missed keys 进行去重;

去重之后,异步更新 GPU Table。

TensorRTConverter实现GPU模型转换

2ead3fca-fe53-11ee-a297-92fbcf53809c.png

图 5. TensorRT Converter 转换流程

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

Freeze CPU 模型;

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

Dense 图转化成 ONNX 模型;

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

转换 ONNX 模型成 TensorRT Engine;

合并 Sparse 图和 TensorRT Engine 生成 GPU 模型。

自研CUDAKernel,提高性能

GPUTable加速查表

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

void find(const size_type n, 
      const key_type* keys,           // (n)
      value_type* values,            // (n, DIM)
      key_type* missed_keys,          // (n)
      int* missed_indices,           // (n)
      int* missed_size,             // scalar
      score_type* scores = nullptr,       // (n)
      cudaStream_t stream = 0) const

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

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

2ed09934-fe53-11ee-a297-92fbcf53809c.png

图 6. CSR 的稀疏矩阵

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

2ed9d26a-fe53-11ee-a297-92fbcf53809c.png

图 7. Lookup 过程优化对比

优化前:N 个输入对应 N 个 Lookup CUDA Kernel;

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

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

2eea9b90-fe53-11ee-a297-92fbcf53809c.png

图 8. CSR 处理优化流程

优化前:N 对输入对应 N 个 ReduceSum CUDA Kernel;

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

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

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

4.Tile算子融合

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

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

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



审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • NVIDIA
    +关注

    关注

    14

    文章

    4934

    浏览量

    102794
  • CSR
    CSR
    +关注

    关注

    3

    文章

    118

    浏览量

    69592
  • GPU芯片
    +关注

    关注

    1

    文章

    303

    浏览量

    5776

原文标题:利用 NVIDIA Merlin HierarchicalKV 实现唯品会在搜推广场景中的 GPU 推理实践

文章出处:【微信号:NVIDIA-Enterprise,微信公众号:NVIDIA英伟达企业解决方案】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    NVIDIA-SMI:监控GPU的绝佳起点

    nvidia-smi可执行文件位于虚拟机管理程序上。如果在同一部署中您选择在GPU上使用作为传递,那么GPU正在寻找访客上的NVIDIA驱动程序,因此
    发表于 09-04 15:18

    NVIDIA 在首个AI推理基准测试中大放异彩

    和TensorRT软件的成熟程度。它们让用户能够更加轻松地将所有的NVIDIA GPU应用于数据中心、边缘等领域。MLPerf定义了五项推理基准,涵盖了三个现有的人工智能应用:图像分类、目标检测和翻译。每项基准
    发表于 11-08 19:44

    Nvidia GPU风扇和电源显示ERR怎么解决

    问题最近在Ubuntu上使用Nvidia GPU训练模型的时候,如果机器锁屏一段时间再打开的时候鼠标非常卡顿,或者说显示界面非常卡顿,使用nvidia-smi查看发现,训练模型的GPU
    发表于 12-30 06:44

    在Ubuntu上使用Nvidia GPU训练模型

    问题最近在Ubuntu上使用Nvidia GPU训练模型的时候,没有问题,过一会再训练出现非常卡顿,使用nvidia-smi查看发现,显示GPU的风扇和电源报错:解决方案自动风扇控制在
    发表于 01-03 08:24

    充分利用Arm NN进行GPU推理

    Arm拥有跨所有处理器的计算IP。而且,无论您要在GPU,CPU还是NPU上进行ML推理,都可以在一个通用框架下使用它们:Arm NN。Arm NN是适用于CPU,GPU和NPU的开源推理
    发表于 04-11 17:33

    NVIDIA宣布其AI推理平台的重大更新

    软件的新功能,该软件为所有AI模型和框架提供跨平台推理;同时也包含对NVIDIA TensorRT的更新,该软件优化AI模型并为NVIDIA GPU上的高性能
    的头像 发表于 11-12 14:42 1906次阅读

    NVIDIA Triton推理服务器简化人工智能推理

    GKE 的 Triton 推理服务器应用程序是一个 helm chart 部署程序,可自动安装和配置 Triton ,以便在具有 NVIDIA GPU 节点池的 GKE 集群上使用,包括
    的头像 发表于 04-08 16:43 2174次阅读
    <b class='flag-5'>NVIDIA</b> Triton<b class='flag-5'>推理</b>服务器简化人工智能<b class='flag-5'>推理</b>

    使用NVIDIA GPU助力美团CTR预测服务升级

      通过 NVIDIA T4 深度优化方案,成功为美团 CTR 模型创造更多应用机会,不仅极大地提升了系统吞吐量,更进一步地提升了整个模型训练的速度与降低训练成本,落实 AI 框架在
    的头像 发表于 04-13 15:15 781次阅读

    利用NVIDIA Triton推理服务器加速语音识别的速度

    网易互娱 AI Lab 的研发人员,基于 Wenet 语音识别工具进行优化和创新,利用 NVIDIA Triton 推理服务器的 GPU Batch Inference 机制加速了语音
    的头像 发表于 05-13 10:40 1843次阅读

    NVIDIA Triton助力腾讯PCG加速在线推理

      借助NVIDIA Triton 推理框架,配合 DALI/FIL/Python 等Backend,以及 TensorRT,整体推理服务的吞吐能力最大
    的头像 发表于 05-20 15:25 2300次阅读
    <b class='flag-5'>NVIDIA</b> Triton助力腾讯PCG加速在线<b class='flag-5'>推理</b>

    NVIDIA助力阿里巴巴天猫精灵大幅提升服务运行效率

    NVIDIA Triton 推理服务器在 NVIDIA T4 GPU 上进行高效部署,帮助阿里巴巴天猫精灵流式 TTS 服务将吞吐
    的头像 发表于 07-14 10:05 1072次阅读

    腾讯云TI平台利用NVIDIA Triton推理服务器构造不同AI应用场景需求

    腾讯云 TI 平台 TI-ONE 利用 NVIDIA Triton 推理服务器构造高性能推理服务部署平台,使用户能够非常便捷地部署包括 TNN 模型在内的多种深度学习框架下获得的 AI
    的头像 发表于 09-05 15:33 1887次阅读

    蚂蚁链AIoT团队与NVIDIA合作加速AI推理

    蚂蚁链 AIoT 团队与 NVIDIA 合作,将量化感知训练(QAT)技术应用于深度学习模型性能优化中,并通过 NVIDIA TensorRT 高性能推理 SDK 进行高效率部署, 通过 INT8
    的头像 发表于 09-09 09:53 1130次阅读

    NVIDIA GPU 加速 WPS Office AI 服务,助力打造优质的用户体验

    案例介绍 金山办公与 NVIDIA 团队合作,通过 NVIDIA Tensor Core GPU、TensorRT 提升图像文档识别与理解的推理
    的头像 发表于 06-29 21:35 616次阅读
    <b class='flag-5'>NVIDIA</b> <b class='flag-5'>GPU</b> 加速 WPS Office AI 服务,助力打造优质的用户体验

    利用NVIDIA产品技术组合提升用户体验

    本案例通过利用NVIDIA TensorRT-LLM加速指令识别深度学习模型,并借助NVIDIA Triton推理服务器在NVIDIA V1
    的头像 发表于 01-17 09:30 650次阅读