APP下载
报价宝  ›  科技  › 

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

报价宝 来源:baojiabao.com 发布时间:2019-07-12 15:50:00 10月06日更新
报价宝综合消息Facebook 开源深度学习推荐模型 DLRM 可直接用 PyTorch 和 Caffe2 实现

雷锋网 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 的蝴蝶式随机播放

建模与算法实验

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/

雷锋网雷锋网

文章标签: 报价宝 降噪耳机价格 耳机价格 红米手机价格 华为手机价格 小米手机价格 电视机价格 笔记本电脑价格 笔记本价格 汽车价格 手机价格 笔记本价格 笔记本电脑价格 小米手机价格 耳机价格