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

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

3天内不再提示

HugeCTR系列第2部分:训练大型深度学习推荐模型

星星科技指导员 来源:NVIDIA 作者:Vinh Nguyen 2022-04-02 14:30 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

在 Merlin HugeCTR 博文系列的第一部分,我们讨论了训练大型深度学习推荐系统所面临的挑战,以及 HugeCTR 如何解决这些问题。

深度学习推荐系统可能包含超大型嵌入表,这些嵌入表可能会超出主机或 GPU 显存。

我们专为推荐系统设计了 HugeCTR。

这是一个专门用于在 GPU 上训练和部署大型推荐系统的框架。

它为在多个 GPU 或节点上分配单个嵌入表提供了不同的策略。

HugeCTR 是 NVIDIA Merlin] 的主要训练引擎,后者是一种 GPU 加速框架,旨在为推荐系统工作提供一站式服务,从数据准备、特征工程、多 GPU 训练到本地或云中的生产级推理。

训练性能和可扩展性一直是 HugeCTR 的突出特性,为 MLPerf 训练 v0.7 推荐任务中的 NVIDIA 获奖作品提供支持,但我们近期采纳了早期采用者和客户的反馈,以帮助改进易用性。

这篇博文将着重讨论我们在易用性方面的持续承诺和近期改进。

HugeCTR 是一种定制的深度学习框架,使用 CUDA C++ 编写,专用于推荐系统。

起初,超参数和神经网络架构在 JSON 配置中定义,然后通过命令行接口执行。

近期,我们添加了 Python API,使其更易于使用。

表 1 汇总了命令行和 Python API 之间的主要区别。

我们建议使用 Python API,并将在后面部分中重点介绍。

但是,如果您对命令行界面感兴趣,可以在此处找到一些示例。

表 1:HugeCTR 接口比较。

直接从 Python 配置和训练 HugeCTR

自 v2.3 版本起,HugeCTR 开始提供易于使用的 Python 接口,用于定义模型架构、超参数、数据加载程序以及训练循环。

此接口使 HugeCTR 更接近于数据科学 Python 生态系统和实践。

利用此接口的方法有两种:

1. 类似于 Keras 的高级 Python API

HugeCTR 现在提供了一个类似 Keras 的高级 Python API 套件,用于定义模型、层、优化器和执行训练。

下文提供了一个示例代码段。

如下所示,此 API 模拟热门的 Keras 构建-编译-适应范式。

2. 低级 Python API

HugeCTR 低级 Python API 允许从 JSON 文件读取模型定义和优化器配置,从而提供向后兼容性。

此外,此 API 允许使用 Python 循环不断手动执行训练,从而获得对训练的精细控制。

在本博客的动手实践部分中,我们将详细介绍如何使用此 API 基于两个数据集训练模型。

我们将在以下示例中演示此 API。

使用预训练的 HugeCTR 模型进行预测

随着 v3.0 版本的发布,HugeCTR 增加了对基于 GPU 的推理的支持,可生成许多批次的预测。

HugeCTR 将参数服务器、嵌入缓存和推理会话分离开来,以便更好地管理资源以及更有效地利用 GPU。

参数服务器用于加载和管理嵌入表。

对于超过 GPU 显存的嵌入表,参数服务器将嵌入表存储在 CPU 内存上。

嵌入缓存为模型提供嵌入查找服务。活动嵌入条目存储在 GPU 显存上,以便快速查找。

推理会话将这两者与模型权重和其他参数结合起来,以执行前向传播。

下文提供了初始化 HugeCTR 推理的函数调用序列示例。

我们将使用 config_file、embedding_cache 和 parameter_server 初始化 InferenceSession。

HugeCTR Python 推理 API 需要一个 JSON 格式的推理配置文件,该文件类似于训练配置 JSON。

但是,在添加推理子句时,我们需要省略优化器和求解器子句。

我们还需要将输出层更改为 Sigmoid 类型。

推理子句中的 dense_model_file 和 sparse_model_file 参数应设置为指向由 HugeCTR 训练的模型文件(_dense_xxxx.model 和 0_sparse_xxxx.model)。

我们在 Github 存储库中提供了多个完整示例:电子商务行为数据集和 Microsoft 新闻数据集。

我们一起来看一些示例

我们在 Github 存储库中提供了 HugeCTR API 的多个端到端示例。这些笔记本基于实际数据集和应用领域提供了完整的 Merlin 演练,从数据下载、预处理和特征工程到模型训练和推理。

1. 高级 Python API 与 Criteo 数据集

Criteo 1TB Click Logs 数据集是公开可用于推荐系统的大型数据集。

它包含约 40 亿个示例的 1.3TB 未压缩点击日志。

在我们的示例中,数据集使用 Pandas 或 NVTabular 进行预处理,以规范化连续特征,并对分类特征进行分类。

之后,我们使用 HugeCTR 的高级 API 训练深度和交叉神经网络架构。

首先,我们定义求解器和优化器,以使用它初始化 HugeCTR 模型。

然后,我们可以逐层添加,这类似于 TensorFlow Keras API。

最后,我们只需要调用 .fit() 函数。

2. 低级 Python API 与电子商务行为数据集

在此演示笔记本中,我们将使用 REES46 营销平台中的多品类商店的电子商务行为数据[/u]作为我们的数据集。

此笔记本基于 RecSys 2020 大会上的 NVIDIA 教程构建而成。

我们使用 NVTabular 进行特征工程和预处理,并使用 HugeCTR 训练 Facebook 深度学习推荐系统模型 (DLRM)。

我们针对 Criteo 点击日志数据集改编了一个示例 Json 配置文件。

需要编辑以与此数据集匹配的几个参数为:

slot_size_array:分类变量的基数,可以从 NVTabular 工作流程对象获取。

dense_dim:密集特征的数量

slot_num:分类变量的数量

以下 Python 代码会按批执行参数更新。

同样,我们针对 Microsoft 新闻数据集提供了第 2 个示例。

尝试使用 HugeCTR 的命令行和 Python API 训练推荐系统管线

我们致力于提供用户友好且易于使用的体验,以简化推荐系统工作流程。

我们近期根据早期采用者和客户的反馈对 HugeCTR 接口进行了改进。

HugeCTR Github 存储库提供了有关如何基于多个公共数据集(从小型到大型数据集都包含在内)使用此新接口的示例。

我们想邀请您针对您自己的领域改编这些示例,并见证 Merlin 的处理能力。

和往常一样,我们希望通过 Github 以及其他渠道获得您的反馈。

这是我们 HugeCTR 系列中关于“使用 HugeCTR 的新 API 训练大型深度学习推荐系统模型”的第二篇博文。

下一篇博文将讨论如何部署到生产。

关于作者

Vinh Nguyen 是一位深度学习的工程师和数据科学家,发表了 50 多篇科学文章,引文超过 2500 篇。在 NVIDIA ,他的工作涉及广泛的深度学习和人工智能应用,包括语音、语言和视觉处理以及推荐系统。

审核编辑:郭婷

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

    关注

    14

    文章

    5905

    浏览量

    112138
  • API
    API
    +关注

    关注

    2

    文章

    2682

    浏览量

    68631
  • 深度学习
    +关注

    关注

    73

    文章

    5625

    浏览量

    126511
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    模型训练与微调实战培训课件

    源码、配套PPT”的七天实战训练营应运而生,旨在通过立体化的学习资源,让学习者在短时间内掌握大模型微调的核心精髓。 这套课程的设计遵循了科学的认知规律,通过三种资源的有机结合,构建了一
    发表于 08-26 10:09

    AI大模型应用专家实战训练营-18期

    合规、成本控制与效果可观测性的极致追求,正是区分“玩具级 Demo”与“产业级产品”的分水岭。 AI 大模型应用专家实战训练 18 期,不仅是一场技术赋能,更是一次企业级 AI 工程思维的系统重塑
    发表于 07-31 14:15

    AI算法进阶训练营教程学习深度学习算法进阶、模型优化、多模态融合与工业级算法调优实战教程分享

    从算法原理到商业杠杆:传统机器学习的实战价值重构 在人工智能产业被大模型与生成式AI光环笼罩的当下,传统机器学习算法正经历一场深刻的价值重估。许多企业与开发者陷入“唯深度
    发表于 07-18 11:36

    IT爱学堂-AI算法进阶训练营教程学习深度学习算法进阶、模型优化、多模态融合与工业级算法调优实战教程分享

    ”。通过冻结原始预训练权重,仅在注意力层注入极小的低秩矩阵进行训练,LoRA将可训练参数量压缩至原本的万之一,大幅降低了显存占用。在此基础上,QLoRA等进阶算法进一步将预
    发表于 07-16 13:46

    人工智能深度学习系统班(12期)

    虚言。以往的学习往往割裂了算法与工程,我们可能很擅长在单机上调模型,但一旦面对分布式训练模型量化部署、或者异构计算资源调度时,就会手足无措。 在
    发表于 07-11 16:06

    AI大模型应用开发实战训练营-18期

    模型应用专家实战训练营不仅是学习的平台,更是高端人脉的聚集地。往期学员已遍布各大互联网巨头及独角兽企业,成为了推动企业智能化转型的中坚力量。加入 18 期,你将与一群志同道合的优
    发表于 07-06 11:34

    IT爱学堂-2026年知乎知学堂AI大模型应用开发实战训练营-18/21/22期课程

    高效吸收课程内容:18期训练学习经验与破局之道 在快节奏的互联网时代,各类训练营如雨后春笋般涌现,但许多人在面对高强度的课程时,往往陷入了“听课如顿悟,实操如便秘”的尴尬境地。结合
    发表于 07-06 11:09

    知乎 - AI大型模型应用专家实战训练18期

    破局企业级AI转型:大模型应用专家实战训练18期全景解析 随着大模型技术从技术狂欢步入商业深水区,企业面临的挑战已从“是否拥抱AI”转变为“如何让AI真正创造业务价值”。在这个跨越
    发表于 07-05 10:47

    AI大模型应用开发实战训练营-18期

    模型应用专家训练营,系统掌握商用大模型开发 摘要: 风口之下,拒绝“调用库工程师”,争做“架构设计专家”。AI 大模型应用专家训练
    发表于 07-04 15:44

    22期知乎知学堂AI大模型应用开发实战训练营课程

    % 以上。训练营将深度解析企业级 AI 应用开发的完整工程链路,帮助学员突破“最后一公里”瓶颈。在部署层面,学员将学习 Docker 容器化与 Kubernetes 编排,掌握模型量化
    发表于 07-04 15:42

    知学堂知乎AI大模型应用开发实战训练22期

    思维。本训练营摒弃了晦涩的底层数学推导,引导学员直接切入大模型的核心架构与工作原理。通过逆向学习法,学员将深度拆解从数据准备、预训练到 SF
    发表于 07-02 18:43

    知学堂知乎AI大模型应用开发实战训练22期

    亟需突破的瓶颈。 为此,“ 11 期 AI 产品经理实战训练营”应运而生。本期训练营以“理论+案例+实战”为核心,依托一线实战团队的真实落地经验,帮助学员系统掌握大模型商业化产品的全
    发表于 07-02 18:30

    【团购】独家全套珍藏!龙哥LabVIEW视觉深度学习实战课(11大系列课程,共5000+分钟)

    10系列)、YOLOv8-Tiny工业优化版(9系列),满足产线端设备算力限制,模型推理速度提升300%。 LabVIEW生态整合 作
    发表于 12-04 09:28

    【团购】独家全套珍藏!龙哥LabVIEW视觉深度学习实战课程(11大系列课程,共5000+分钟)

    10系列)、YOLOv8-Tiny工业优化版(9系列),满足产线端设备算力限制,模型推理速度提升300%。 LabVIEW生态整合 作
    发表于 12-03 13:50

    集装箱储能系统标准解析系列(一)|IEC 62933-2-1:电能存储(EES)系统 2-1部分-储能单元参数和试验方法

    IEC 62933-2-1 电能存储(EES)系统 2-1部分:储能单元参数和试验方法
    的头像 发表于 11-25 15:40 4445次阅读
    集装箱储能系统标准解析<b class='flag-5'>系列</b>(一)|IEC 62933-<b class='flag-5'>2</b>-1:电能存储(EES)系统 <b class='flag-5'>第</b><b class='flag-5'>2</b>-1<b class='flag-5'>部分</b>-储能单元参数和试验方法