Facebook 开源深度学习推荐模型 DLRM,可直接用 PyTorch 和 Caffe2 实现!

2019 年 7 月 6 日 雷锋网

▲点击上方 雷锋网 关注


性能最强的深度学习推荐模型!

 文 | 黄善清 

雷锋网 AI 科技评论按,随着深度学习的出现,基于神经网络的个性化和推荐模型已经成为包括 Facebook 等公司构建推荐系统的重要工具。然而,这些模型与其他深度学习模型有很大的不同,因为它们必须能够处理用于描述高级属性的分类数据。对于一个神经网络来说,有效地处理这类稀疏的数据是很有挑战性的,而且由于公开的代表性模型和数据集细节的缺乏,减缓了其研究进展。

为了有助于加深人们对这一子领域的理解,Facebook 开源了一个最先进的深度学习推荐模型(DLRM),该模型是使用 Facebook 开源的 PyTorch 和 Caffe2 平台实现的。DLRM 通过将协同过滤和基于预测分析的方法的原理结合起来,改进了其他模型,从而使其能够有效地处理工业规模的数据,并提供最先进的结果。

相关 github 地址:https://github.com/facebookresearch/dlrm

雷锋网将 Facebook 博文编译如下:

通过发布这个模型,并在本文中详细介绍它的功能,我们希望帮助社区找到新方法,从而解决使用这类模型所带来的独特挑战。我们还希望鼓励进一步的算法实验、建模、系统协同设计和基准测试。这反过来将导致新的模型和更高效的系统,它们可以为使用数字服务的人们提供更相关的内容。


了解 DLRM 模型


在 DLRM 模型中,分类特征使用 embedding 处理,而连续特征使用底层多层感知器(MLP)处理。然后,它明确地计算了不同特征的二阶交互作用。最后,使用顶部 MLP 对结果进行处理,并将其输入到 sigmoid 函数中,以给出单击的概率。

DLRM 模型处理描述用户和产品的连续(密集)和分类(稀疏)功能,如图所示。它使用了各种硬件和系统组件,如内存容量和带宽,以及通信和计算资源。


基准化分析与系统协同设计

DLRM 的开源实现可以用作衡量以下各项的基准:

  • 模型执行的速度

  • 各种数值技术如何影响其精度

这可以在不同的硬件平台上完成,例如 BigBasin 人工智能平台

DLRM 基准测试提供了两个版本的代码,一个使用 PyTorch,另一个使用 Caffe2 操作符。此外,还使用 Glow C++操作符提供了这种变化的实现(为适应每个框架的具体情况,每个框架的代码略有不同,但总体结构是相似的)。这些实现允许我们将 Caffe2 框架与 PyTorch 框架以及当前专注于加速器的 Glow 的实现进行对比。也许最重要的是,我们接下来可以突出显示每个框架中的最佳特性,这些特性将来可以合并到一个框架中。

Big Basin 采用模块化,可扩展的架构,开源设计可用

DLRM 基准测试支持随机和合成输入。支持与分类特征对应的自定义索引生成有很多原因。例如,如果我们的应用程序使用一个特定的数据集,但出于隐私考虑,我们不想共享它,那么我们可以选择通过分发来表示分类功能。另外,如果我们想练习系统组件,例如研究内存运行,我们可能想捕获合成追踪中,原始追踪访问的基本位置。

此外,Facebook 上的服务根据用例使用各种个性化的推荐模型。例如,为了在大规模数据上提高性能,服务可以通过批处理输入并将多个模型放在一台机器上,在不同的平台上并行推理。此外,Facebook 数据中心中的各种服务器引入了架构异构性,从不同的 SIMD 宽度到缓存层次结构的不同实现。这篇文章对 Facebook 推荐系统的体系结构进行了深入分析。


并行性

如上图所示,DLRM 基准由计算主导的 MLP 和内存容量有限的 embedding 组成。因此,依靠数据并行性来提高 MLP 的性能,依靠模型并行性来满足嵌入的内存容量需求是很自然的。DLRM 基准测试提供了一个遵循此方法的并行实现。我们注意到,在交互过程中,它需要一个高效的全部一一对应的通信原语,我们称之为蝴蝶式随机播放。它将每个设备上小批量的嵌入查找结果随机移动到所有设备上的小批量嵌入查找的一部分。如下图所示,其中每种颜色表示小批量的不同元素,每个数字表示设备及其分配的 embedding。



建模与算法实验


DLRM 基准测试是用 Python 编写的,其中模型体系结构、数据集和其他参数由命令行参数定义。

该代码是自包含的,可以与公共数据集(包括 kaggle 广告展示挑战赛数据集)进行接口。这个特定的数据集包含 13 个连续特征和 26 个分类特征,这些特征定义了 MLP 输入层的大小以及模型中使用的 embedding 数量,而其他参数可以在命令行上定义。例如,下面的图表显示了使用以下命令行参数运行 DLRM 的结果。

python dlrm_s_pytorch.py --arch-sparse-feature-size=16 --arch-mlp-bot="13-512-256-64-16" --arch-mlp-top="512-256-1" --data-generation=dataset --data-set=kaggle --processed-data-file=./input/kaggle_processed.npz --loss-function=bce --round-targets=True --learning-rate=0.1 --mini-batch-size=128 --print-freq=1024 --print-time

左边的图表显示了训练和测试二进制交叉熵损失,右边的图表显示了训练和测试的准确性

模型运行在一个真实的数据集上,它允许我们测量模型的精度。我们计划在接下来的工作中基于建模和算法实验,对该模型的影响进行进一步深入的分析。

通过详细描述 DLRM 最先进的个性化推荐系统及其开源实现,我们希望能提醒大家注意这类模型所带来的独特挑战。我们期待着与人工智能社区的其他人合作,在算法实验、建模、系统协同设计和基准测试方面取得进展。从长远来看,我们的目标是开发新的、更好的方法,将深度学习用于推荐和个性化工具(并提高模型的效率和性能),使用新的方法给人们推荐和他们最相关的内容。

via:https://ai.facebook.com/blog/dlrm-an-advanced-open-source-deep-learning-recommendation-model/

推荐阅读

周鸿祎挥别手机圈

美司法部要求法官拒绝受理华为诉讼;百度回应抄袭天猫精灵;三星涉虚假宣传被起诉

百度的“助手”,成了谁的AI?

李彦宏和小度最强互动,王海峰发布鸿鹄芯片,百度音箱大变身

▎支付宝刷脸支付将上线美颜功能;特朗普:推特离了我啥也不是;三星承认折叠屏手机是赶鸭子上架


你还在看吗?
登录查看更多
1

相关内容

Yann Lecun 纽约大学《深度学习(PyTorch)》课程(2020)PPT
专知会员服务
178+阅读 · 2020年3月16日
【Google】利用AUTOML实现加速感知神经网络设计
专知会员服务
28+阅读 · 2020年3月5日
一网打尽!100+深度学习模型TensorFlow与Pytorch代码实现集合
《动手学深度学习》(Dive into Deep Learning)PyTorch实现
专知会员服务
115+阅读 · 2019年12月31日
【书籍】深度学习框架:PyTorch入门与实践(附代码)
专知会员服务
160+阅读 · 2019年10月28日
TensorFlow与PyTorch之争,哪个框架最适合深度学习
Python开发者
5+阅读 · 2019年9月18日
各种NLP操作难实现?谷歌开源序列建模框架Lingvo
机器之心
4+阅读 · 2019年2月26日
Github 项目推荐 | 用 PyTorch 0.4 实现的 YoloV3
AI研习社
9+阅读 · 2018年8月11日
深度学习开发必备开源框架
九章算法
12+阅读 · 2018年5月30日
机器学习者必知的 5 种深度学习框架
深度学习世界
7+阅读 · 2018年5月3日
快讯 | Facebook将推出PyTorch 1.0,整合Caffe2 + PyTorch
大数据文摘
3+阅读 · 2018年5月3日
开源神经网络框架Caffe2全介绍
北京思腾合力科技有限公司
3+阅读 · 2017年12月12日
推荐|Google最热门31款开源项目资源
全球人工智能
4+阅读 · 2017年11月24日
A Probe into Understanding GAN and VAE models
Arxiv
9+阅读 · 2018年12月13日
Arxiv
3+阅读 · 2018年6月1日
Arxiv
3+阅读 · 2018年3月13日
Arxiv
8+阅读 · 2018年1月25日
VIP会员
相关资讯
TensorFlow与PyTorch之争,哪个框架最适合深度学习
Python开发者
5+阅读 · 2019年9月18日
各种NLP操作难实现?谷歌开源序列建模框架Lingvo
机器之心
4+阅读 · 2019年2月26日
Github 项目推荐 | 用 PyTorch 0.4 实现的 YoloV3
AI研习社
9+阅读 · 2018年8月11日
深度学习开发必备开源框架
九章算法
12+阅读 · 2018年5月30日
机器学习者必知的 5 种深度学习框架
深度学习世界
7+阅读 · 2018年5月3日
快讯 | Facebook将推出PyTorch 1.0,整合Caffe2 + PyTorch
大数据文摘
3+阅读 · 2018年5月3日
开源神经网络框架Caffe2全介绍
北京思腾合力科技有限公司
3+阅读 · 2017年12月12日
推荐|Google最热门31款开源项目资源
全球人工智能
4+阅读 · 2017年11月24日
相关论文
Top
微信扫码咨询专知VIP会员