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

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

3天内不再提示

NVIDIA 助力 DeepRec 为 vivo 推荐业务实现高性能 GPU 推理优化

NVIDIA英伟达 来源:未知 2023-01-18 00:55 次阅读

本案例中,vivo 人工智能推荐算法组自研的推荐服务平台,使用阿里巴巴开源大规模稀疏模型训练和预测引擎 DeepRec,在稀疏模型训练(稀疏功能、I/O 优化)和高性能推理框架层面,实现其搜广推各类业务场景下,算法开发和上线的全链路优化。

其中,在 GPU 线上推理服务优化上,vivo 使用 DeepRec 提供的 Device Placement Optimization,以及 NVIDIA CUDA multi-stream,MPS (Multi-Process Service) / Multi-context 和 NVIDIA GPU 计算专家团队在 multi-stream 基础上开发的 MergeStream 功能,显著提升了线上推理服务的 GPU 有效利用率。

vivo 人工智能推荐算法组的业务包含了信息流、视频、音乐、广告等搜索/广告/推荐各类业务,基本涵盖了搜广推各类型的业务。

为了支撑上述场景的算法开发上线,vivo 自研了集特征数据、模型开发、模型推理等流程于一体的推荐服务平台。通过成熟、规范的推荐组件及服务,该平台为 vivo 内各推荐业务(广告、信息流等)提供一站式的推荐解决方案,便于业务快速构建推荐服务及算法策略高效迭代。

8ae3f162-9685-11ed-bfe3-dac502259ad0.png

图片来源于 vivo

vivo 人工智能推荐算法组在深耕业务同时,在积极探索适用于搜索/广告/推荐大规模性稀疏性算法训练框架。分别探索了 TensorNet/XDL/TFRA 等框架及组件,这些框架组件在分布式、稀疏性功能上做了扩展,能够弥补 TensorFlow 在搜索/广告/推荐大规模性稀疏性场景不足,但是在通用性、易用性以及功能特点上,这些框架存在各种不足。

作为 DeepRec 最早的一批社区用户,vivo 在 DeepRec 还是内部项目时,就与 DeepRec 开发者保持密切的合作。经过一年积累与打磨,vivo 见证了 DeepRec 从内部项目到开源再到后续多个 release 版本的发布。在合作中,DeepRec 赋能 vivo 各个业务增长,vivo 也作为 DeepRec 深度用户,将业务中的需求以及使用中的问题积极回馈到 DeepRec 开源社区。

DeepRec (https://github.com/alibaba/DeepRec) 是阿里巴巴集团提供的针对搜索、推荐、广告场景模型的训练/预测引擎,在分布式、图优化、算子、Runtime 等方面对稀疏模型进行了深度性能优化,提供了丰富的高维稀疏特征功能的支持。基于 DeepRec 进行模型迭代不仅能带来更好的业务效果,同时在 Training/Inference 性能有明显的性能提升。

8af35bca-9685-11ed-bfe3-dac502259ad0.png

图片来源于阿里巴巴

通过业务实践,在稀疏模型训练层面,vivo 使用 DeepRec 提供的基于 Embedding Variable (https://deeprec.readthedocs.io/zh/latest/Embedding-Variable.html) 的动态 Embedding 功能和特征准入 (https://deeprec.readthedocs.io/zh/latest/Feature-Filter.html)/淘汰功能(https://deeprec.readthedocs.io/zh/latest/Feature-Eviction.htm),解决了使用 TensorFlow 原生 Embedding Layer 的三个痛点,包括可拓展性差,hash 冲突导致模型训练有损,无法处理冗余的稀疏特征;并在内部尝试对训练数据存储格式做 I/O 优化。

8b12c62c-9685-11ed-bfe3-dac502259ad0.png

图片来源于阿里巴巴

使用动态 Embedding 和特征准入/淘汰功能实现的收益如下:

  1. 静态 Embedding 升级到动态 Embedding:使用 DeepRec 的动态 Embedding 替换 TensorFlow 的静态 Embedding 后,保证所有特征 Embedding 无冲突,离线 AUC 提升 0.5%,线上点击率提升 1.2%,同时模型体积缩小 20%。

  2. ID 特征的利用:在使用 TensorFlow 时,vivo 尝试过对 ID 特征进行 hash 处理输入模型,实验表明这种操作对比基线具有负收益。这是由于 ID 特征过于稀疏,同时 ID 具有唯一指示性,hash 处理会带来大量的 Embedding 冲突。基于动态 Embedding,使用 ID 特征离线 AUC 提升 0.4%,线上点击率提升 0.6%。同时配合 global step 特征淘汰,离线 AUC 提升 0.1%,线上点击率提升 0.5%。

8b1ae924-9685-11ed-bfe3-dac502259ad0.png

Embedding Variable 流程示意图

图片来源于阿里巴巴

在 I/O 优化上,目前 vivo 内部使用的是 TFRecord 数据格式存储训练数据,存在占用存储空间大,非明文存储的两个缺陷。而 DeepRec 的 Parquet 是一种列式存储的数据格式,能够节省存储资源,加快数据读取速度。使用 Parquet Dataset 支持读取 Parquet 文件,开箱即用,无需额外安装第三库,使用简单方便。同时,Parquet Dataset 能够加快数据读取速度,提高模型训练的 I/O 性能。

vivo 内部尝试使用 Parquet Dataset 来替换现有 TFRecord,提高训练速度 30%,减少样本存储成本 38%,降低带宽成本。同时,vivo 内部支持 hive 查询 Parquet 文件,算法工程师能够高效快捷地分析样本数据。

在高性能推理框架层面,由于在业务逐渐发展过程中,广告召回量增长 3.5 倍,同时目标预估数增加两倍,推理计算复杂度增加,超时率超过 5%,严重影响线上服务可用性以及业务指标。因此,vivo 尝试探索升级改造现有推理服务,保证业务可持续发展。vivo 借助 DeepRec 开源的诸多推理优化功能,在 CPU 推理改造以及 GPU 推理升级方面进行探索,并取得一定收益。

客户挑战

在 CPU 推理优化层面,vivo 在使用 DeepRec 提供的基于 ShareNothing 架构的 SessionGroup 后,明显缓解了直接使用 TensorFlow 的 C++ 接口调用 Session::Run 而导致的 CPU 使用率低的问题,在保证 latency 的前提下极大提高了 QPS,单机 QPS 提升高达 80%,单机 CPU 利用率提升 75%。

但是经过 SessionGroup 的优化,虽然 CPU 推理性能得到改善,超时率依旧无法得到缓解。鉴于多目标模型目标塔数较多、模型中使用 Attention、LayerNorm、GateNet 等复杂结构、特征多,存在大量稀疏特征三点原因,vivo 尝试探索 GPU 推理来优化线上性能。

应用方案

Device Placement Optimization

通常,对于稀疏特征的处理一般是将其 Embedding 化,由于模型中存在大量的稀疏特征,因此 vivo 的广告模型使用大量的 Embedding 算子。从推理的 timeline 可以看出,Embedding 算子分散在 timeline 的各个阶段,导致大量的 GPU kernel launch 以及数据拷贝,因此图计算非常耗时。

8b33e488-9685-11ed-bfe3-dac502259ad0.png

图片来源于阿里巴巴

Device PlacementOptimization 完全将 Embedding Layer placed 到 CPU 上,解决了Embedding Layer 内部存在的 CPU 和 GPU 之间大量数据拷贝的问题。

8b5f48a8-9685-11ed-bfe3-dac502259ad0.png

图片来源于阿里巴巴

Device Placement Optimization 性能优化明显,CPU 算子(主要是 Embedding Layer)的计算集中在 timeline 的最开端,之后 GPU 主要负责网络层的计算。相较于 CPU 推理,Device Placement Optimization P99 降低 35%。

NVIDIA CUDA Multi-Stream 功能

在推理过程中,vivo 发现单流执行导致 GPU 的利用率不高,无法充分挖掘 GPU 算力。DeepRec 支持用户使用 multi-stream 功能,多 stream 并发计算,提升 GPU 利用率。多线程并发 launch kernel 时,存在较大的锁开销,极大影响了 kernel launch 的效率,这里的锁与 CUDA Driver 中的 Context 相关。因此可以通过使用 MPS/Multi-context 来避免 launch 过程中锁开销,从而进一步提升 GPU 的有效利用率。

8b6af25c-9685-11ed-bfe3-dac502259ad0.png

图片来源于阿里巴巴

此外,模型中存在大量的 H2D 以及 D2H 的数据拷贝,在原生代码中,计算 stream 和拷贝 stream 是独立的,这会导致 stream 之间存在大量同步开销,同时对于在 Recv 算子之后的计算算子,必须等到 MemCopy 完成之后才能被 launch 执行,MemCopy 和 launch 难以 overlap 执行。基于以上问题,NVIDIA GPU 计算专家团队在 multi-stream 功能基础上进一步优化,开发了 MergeStream 功能,允许 MemCopy 和计算使用相同的 stream,从而减少上述的同步开销以及允许 Recv 之后计算算子 launch 开销被 overlap。

8b7d30f2-9685-11ed-bfe3-dac502259ad0.png

图片来源于阿里巴巴

vivo 在线上推理服务中使用了 multi-stream 功能,P99 降低 18%。更进一步地,在使用 MergeStream 功能后,P99 降低 11%。

编译优化 - BladeDISC

BladeDISC(https://github.com/alibaba/BladeDISC)是阿里集团自主研发的、原生支持存在动态尺寸模型的深度学习编译器。DeepRec 中集成了 BladeDISC,通过使用 BladeDISC 内置的 aStitch 大尺度算子融合威廉希尔官方网站 对于存在较多访存密集型算子的模型有显著的效果。利用 BladeDISC 对模型进行编译优化,推理性能得到大幅度提升。

BladeDISC 将大量访存密集型算子编译成一个大的融合算子,可以大大减少框架调度和 kernel launch 的开销。区别于其他深度学习编译器的是,BladeDISC 还会通过优化 GPU 不同层次存储(特别是 SharedMemory)的使用来提升了访存操作和 Op 间数据交换的性能。图中可以看到,绿色是 Blade DISC优化合并的算子替代了原图中大量的算子。

8ba7736c-9685-11ed-bfe3-dac502259ad0.png

图片来源于阿里巴巴

8bb0fad6-9685-11ed-bfe3-dac502259ad0.png

图片来源于阿里巴巴

另外,由于线上模型比较复杂,为了进一步减少编译耗时、提升部署效率,vivo 启用了 BladeDISC 的编译缓存功能。开启此功能时,BladeDISC 仅会在新旧版本模型的 Graph 结构发生改变时触发编译,如果新旧模型仅有权重变更则复用之前的编译结果。经过验证,编译缓存在保证正确性的同时,几乎掩盖了编译模型的开销,模型更新速度与之前几乎相同。在使用 BladeDISC 功能后,线上服务 P99 降低 21%。

使用效果及影响

DeepRec 提供大量的解决方案可以帮助用户快速实施 GPU 推理。经过一系列优化,相较于 CPU 推理,GPU 推理 P99 降低 50%,GPU 利用率平均在 60% 以上。此外,线上一张 NVIDIA T4 Tensor Core GPU 的推理性能超过两台 Xeon 6330 112Core 的 CPU 机器,节省了大量的机器资源。

基于 CPU 的分布式异步训练存在两个问题:一是异步训练会损失训练精度,模型难以收敛到最佳;二是随着模型结构逐渐复杂,训练性能会急剧下降。未来,vivo 打算尝试基于 GPU 的同步训练来加速复杂模型训练。DeepRec 支持两种 GPU 同步框架:NVIDIA Merlin Sparse Operation Kit (SOK) 和 HybridBackend。后续 vivo 将尝试这两种 GPU 同步训练来加速模型训练。

NVIDIA 计算专家团队也与 DeepRec 威廉希尔官方网站 团队深入合作,为在稀疏功能层面的 Embedding Variable GPU 支持、在同步训练层面的 Merlin SOK 集成,以及图优化层面的 Embedding 子图 Fusion 功能开发提供威廉希尔官方网站 支持。

Embedding Variable GPU 支持介绍 https://deeprec.readthedocs.io/zh/latest/Embedding-Variable-GPU.html

DeepRec 设计并提供了一套支持动态 Embedding 语义的 Embedding Variable,在特征无损训练的同时以最经济的方式使用内存资源,使得超大规模特征的模型更容易增量上线。进一步地,因为 GPU 具有强大的并行计算能力,对于 Embedding Variable 底层的 Hash Table 查找、插入等操作也具有明显的加速作用。同时,对于模型计算部分若使用 GPU,则使用 GPU 上的 Embedding Variable 也可避免 Host 和 Device 上的数据拷贝,提高整体性能。因此增加了 Embedding Variable 的 GPU 支持。

GPU 版本的 Embedding Variable 通过 NVIDIA cuCollection 作为底层 Hash Table 的实现,可以明显加速 Embedding 相关的操作,而且使用方便,在具有 NVIDIA GPU 的环境中会自动启用,也可以手动放置在合适的 GPU 设备上。性能测试显示 GPU 版本相比于 CPU 版本,Embedding 部分会有 2 倍以上的加速。

分布式训练集成 Merlin SOK 介绍 https://deeprec.readthedocs.io/zh/latest/SOK.html

DeepMerlin SOK 是 NVIDIA Merlin 团队基于 Merlin SOK 提供的针对神经网络中稀疏操作的加速插件库,使用 DeepMerlin SOK 可对 DeepRec 中相关的 Embedding 操作进行加速和分布式训练的支持。

该 SOK 的设计理念就是希望同时兼容灵活性和高性能。在灵活性方面,使用 SOK 不会对用户使用 DeepRec 本身的功能有影响,可以和 DeepRec 提供的 Embedding Variable 完全兼容,也会集成到 DeepRec 的高级接口方便用户的使用。在高性能方面,SOK 主要从两方面去考虑,一方面,在算法设计上,通过 reduce 操作来减少搬运的数据量,另一方面,在实现上,主要通过算子融合威廉希尔官方网站 ,融合多表的查询和通信,提供稀疏操作的性能。性能测试显示 SOK 能够提供接近于线性的扩展能力,在 8 GPU 下相比 1 GPU 能够达到 6.5 倍的加速效果。

Embedding 子图 Fusion 功能介绍 https://deeprec.readthedocs.io/zh/latest/Fused-Embedding.html

DeepRec 及 TensorFlow 原生的 embedding lookup 相关 API,如 safe_embedding_lookup_sparse,会创建比较多细碎的算子,且部分算子只有 CPU 实现。因此在 GPU 上执行时容易出现 kernel launch bound 的问题以及额外 H2D & D2H 拷贝,造成低 GPU 利用率,降低执行速度。

针对此场景,NVIDIA 计算专家团队与 DeepRec 合作,共同定制开发了支持在 NVIDIA GPU 上执行的 Embedding 子图 Fusion 功能,并对 GPU 高算力高吞吐的特点进行了针对性优化:提供一组接口以及相关 Fusion 算子,通过算子融合,减少需要 launch 的 kernel 数量,优化访存,提供高性能的实现,达到加速执行的目的。

Embedding Fusion 功能易用,从 Python 层面提供接口及开关,用户无需修改代码即可快速使用。加速效果方面,单独从 Embedding 模块看,GPU Embedding Fusion 可以提供 2 倍左右的加速。从整体模型来看,加速效果取决于 Embedding 模块的耗时占比。在几个测试模型上,此功能可以提供 1.2 倍左右的整体性能加速。

点击“阅读原文”扫描下方海报二维码,即可免费注册 GTC 23,切莫错过这场 AI 和元宇宙时代的威廉希尔官方网站 大会


原文标题:NVIDIA 助力 DeepRec 为 vivo 推荐业务实现高性能 GPU 推理优化

文章出处:【微信公众号:NVIDIA英伟达】欢迎添加关注!文章转载请注明出处。


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

    关注

    22

    文章

    3773

    浏览量

    91026

原文标题:NVIDIA 助力 DeepRec 为 vivo 推荐业务实现高性能 GPU 推理优化

文章出处:【微信号:NVIDIA_China,微信公众号:NVIDIA英伟达】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    解锁NVIDIA TensorRT-LLM的卓越性能

    Batching、Paged KV Caching、量化威廉希尔官方网站 (FP8、INT4 AWQ、INT8 SmoothQuant 等) 以及更多功能,确保您的 NVIDIA GPU 能发挥出卓越的推理性能
    的头像 发表于 12-17 17:47 140次阅读

    助力AIoT应用:在米尔FPGA开发板上实现Tiny YOLO V4

    受限的设备上运行,尤其在低功耗、实时检测的边缘计算设备中表现出色。相比传统 GPU,FPGA 能在小面积和低功耗下实现类似的推理性能,非常契合 AIoT 应用。像米尔 ZU3EG 这样的 FPGA
    发表于 12-06 17:18

    全新NVIDIA NIM微服务实现突破性进展

    全新 NVIDIA NIM 微服务实现突破性进展,可助力气象威廉希尔官方网站 公司开发和部署 AI 模型,实现对降雪、结冰和冰雹的预测。
    的头像 发表于 11-21 10:07 203次阅读

    AMD与NVIDIA GPU优缺点

    在图形处理单元(GPU)市场,AMD和NVIDIA是两大主要的竞争者,它们各自推出的产品在性能、功耗、价格等方面都有着不同的特点和优势。 一、性能
    的头像 发表于 10-27 11:15 666次阅读

    NVIDIA助力丽蟾科技打造AI训练与推理加速解决方案

    丽蟾科技通过 Leaper 资源管理平台集成 NVIDIA AI Enterprise,企业和科研机构提供了一套高效、灵活的 AI 训练与推理加速解决方案。无论是在复杂的 AI 开发任务中,还是在高并发
    的头像 发表于 10-27 10:03 214次阅读
    <b class='flag-5'>NVIDIA</b><b class='flag-5'>助力</b>丽蟾科技打造AI训练与<b class='flag-5'>推理</b>加速解决方案

    Wolfspeed碳化硅助力实现高性能功率系统

    Wolfspeed碳化硅助力实现高性能功率系统
    发表于 10-24 10:51 0次下载

    GPU高性能服务器配置

    GPU高性能服务器作为提升计算速度和效率的关键设备,在各大应用场景中发挥着越来越重要的作用。在此,petacloud.ai小编为你介绍GPU高性能服务器的配置要点。
    的头像 发表于 10-21 10:42 200次阅读

    澎峰科技高性能大模型推理引擎PerfXLM解析

    自ChatGPT问世以来,大模型遍地开花,承载大模型应用的高性能推理框架也不断推出,大有百家争鸣之势。在这种情况下,澎峰科技作为全球领先的智能计算服务提供商,在2023年11月25日发布了针对大语言
    的头像 发表于 09-29 10:14 471次阅读
    澎峰科技<b class='flag-5'>高性能</b>大模型<b class='flag-5'>推理</b>引擎PerfXLM解析

    IaaS+on+DPU(IoD)+下一代高性能算力底座威廉希尔官方网站 白皮书

    数据中心的第三颗“主力芯片”,主要通过其专用处理器优化数据中心的网络、存储、安全等处理性能助力服务器运行效率显著提升,有效降低成本。因此,在新型数据中心建设时,围绕 DPU 构建数据中心网络的基础设施
    发表于 07-24 15:32

    进一步解读英伟达 Blackwell 架构、NVlink及GB200 超级芯片

    冷却威廉希尔官方网站 ,提高计算密度,减少占地面积,并通过高带宽、低延迟的GPU通信,有效减少数据中心的碳足迹和能源消耗。相较于传统的NVIDIA H100风冷基础设施,GB200在相同功耗下实现25倍的
    发表于 05-13 17:16

    NVIDIA全面加快Meta Llama 3的推理速度

    Meta 最新开源大语言模型采用 NVIDIA 威廉希尔官方网站 构建,其经过优化后可在云、数据中心、边缘和 PC 的 NVIDIA GPU 上运行。
    的头像 发表于 04-23 09:52 457次阅读

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

    本实践中,唯品会 AI 平台与 NVIDIA 团队合作,结合 NVIDIA TensorRT 和 NVIDIA Merlin HierarchicalKV(HKV)将推理的稠密网络和热
    的头像 发表于 04-20 09:39 721次阅读

    降本增效:NVIDIA路径优化引擎创下多项世界纪录!

    NVIDIA cuOpt 路径优化引擎助力川崎重工实现铁路安全,支持 SyncTwin 实现制造优化
    的头像 发表于 04-03 11:17 435次阅读

    NVIDIA 发布全新交换机,全面优化万亿参数级 GPU 计算和 AI 基础设施

    NVIDIA 软件实现了跨  Blackwell GPU、新交换机和 BlueField-3 SuperNIC 的分布式计算,大幅提升了 AI、数据处理、高性能计算和云工作负载的
    发表于 03-19 10:05 333次阅读
    <b class='flag-5'>NVIDIA</b> 发布全新交换机,全面<b class='flag-5'>优化</b>万亿参数级 <b class='flag-5'>GPU</b> 计算和 AI 基础设施

    Torch TensorRT是一个优化PyTorch模型推理性能的工具

    那么,什么是Torch TensorRT呢?Torch是我们大家聚在一起的原因,它是一个端到端的机器学习框架。而TensorRT则是NVIDIA高性能深度学习推理软件工具包。Torch TensorRT就是这两者的结合。
    的头像 发表于 01-09 16:41 1729次阅读
    Torch TensorRT是一个<b class='flag-5'>优化</b>PyTorch模型<b class='flag-5'>推理性能</b>的工具