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

    文章

    5509

    浏览量

    109152
  • API
    API
    +关注

    关注

    2

    文章

    2181

    浏览量

    66304
  • 深度学习
    +关注

    关注

    73

    文章

    5591

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

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

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

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

    领域主流开发环境,LabVIEW与深度学习的集成一直是行业痛点。课程提供独家开发的labview调用框架,实现从模型训练(Python)到部署(LabVIEW)的无缝衔接,已成功应用于
    发表于 12-03 13:50

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

    IEC 62933-2-1 电能存储(EES)系统 2-1部分:储能单元参数和试验方法
    的头像 发表于 11-25 15:40 1002次阅读
    集装箱储能系统标准解析<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>-储能单元参数和试验方法

    自动驾驶中Transformer大模型会取代深度学习吗?

    持续讨论。特别是在自动驾驶领域,部分厂商开始尝试将多模态大模型(MLLM)引入到感知、规划与决策系统,引发了“传统深度学习是否已过时”的激烈争论。然而,从技术原理、算力成本、安全需求与
    的头像 发表于 08-13 09:15 3946次阅读
    自动驾驶中Transformer大<b class='flag-5'>模型</b>会取代<b class='flag-5'>深度</b><b class='flag-5'>学习</b>吗?

    龙芯中科与文心系列模型开展深度技术合作

    ”解决方案。 强强联合!自主架构赋能大模型训练 文心大模型 文心4.5系列模型均使用飞桨深度
    的头像 发表于 07-02 16:53 1158次阅读

    兆芯率先展开文心系列模型深度技术合作

    对文心系列模型的快速适配、无缝衔接。   文心大模型   文心4.5系列开源模型共10款,均使用飞浆
    的头像 发表于 07-01 10:49 811次阅读

    用树莓派搞深度学习?TensorFlow启动!

    介绍本页面将指导您在搭载64位Bullseye操作系统的RaspberryPi4上安装TensorFlow。TensorFlow是一个专为深度学习开发的大型软件库,它消耗大量资源。您可以在
    的头像 发表于 03-25 09:33 985次阅读
    用树莓派搞<b class='flag-5'>深度</b><b class='flag-5'>学习</b>?TensorFlow启动!

    云知声深度参与三项大模型国家标准编写

    》、20231746-T-469《人工智能 大模型2部分:评测指标与方法》以及20231741-T-469《人工智能大模型
    的头像 发表于 03-18 18:19 777次阅读

    从Open Model Zoo下载的FastSeg大型公共预训练模型,无法导入名称是怎么回事?

    从 Open Model Zoo 下载的 FastSeg 大型公共预训练模型。 运行 converter.py 以将 FastSeg 大型模型转换为中间表示 (IR): pyth
    发表于 03-05 07:22

    小白学大模型训练大语言模型深度指南

    在当今人工智能飞速发展的时代,大型语言模型(LLMs)正以其强大的语言理解和生成能力,改变着我们的生活和工作方式。在最近的一项研究中,科学家们为了深入了解如何高效地训练大型语言
    的头像 发表于 03-03 11:51 1227次阅读
    小白学大<b class='flag-5'>模型</b>:<b class='flag-5'>训练</b>大语言<b class='flag-5'>模型</b>的<b class='flag-5'>深度</b>指南

    DLPC3433部分DSI失效的原因?如何解决?

    部分板子,在无法实现4步,始终无法显示系统输出的DSI,接入后,仍然是马赛克图案。 我们可以确保我们输出的DSI没有问题,因为正常板子是可以输出完整的DSI视频信息,同时我们是同一批生产的板子,目前出现不一致的情况。 请求帮助: 分析DLPC3433
    发表于 02-21 07:24

    运算放大器速成课程2部分:关键参数教程

    电路设计人员根据几个器件参数选择运算放大器。这些参数必须满足运算放大器应用的要求。下面列出了最常考虑的参数。本教程的2部分解释了它们的定义和用途。
    的头像 发表于 02-20 18:22 963次阅读
    运算放大器速成课程<b class='flag-5'>第</b><b class='flag-5'>2</b><b class='flag-5'>部分</b>:关键参数教程

    ISO 16750-2-2010 道路车辆电气和电子设备的环境条件和试验2部分:电气负载

    电子发烧友网站提供《ISO 16750-2-2010 道路车辆电气和电子设备的环境条件和试验2部分:电气负载.pdf》资料免费下载
    发表于 02-11 15:39 4次下载

    【「基于大模型的RAG应用开发与优化」阅读体验】+大模型微调技术解读

    今天学习<基于大模型的RAG应用开发与优化>这本书。大模型微调是深度学习领域中的一项关键技术,它指的是在已经预
    发表于 01-14 16:51

    Triton编译器在机器学习中的应用

    1. Triton编译器概述 Triton编译器是NVIDIA Triton推理服务平台的一部分,它负责将深度学习模型转换为优化的格式,以便在NVIDIA GPU上高效运行。Trito
    的头像 发表于 12-24 18:13 1665次阅读