NVIDIA GPUs上深度学习推荐模型的优化

NVIDIA GPUs上深度学习推荐模型的优化

Optimizing the Deep Learning Recommendation Model on NVIDIA GPUs

推荐系统帮助人在成倍增长的选项中找到想要的东西。是在许多在线平台上推动用户参与的关键组件。             

随着工业数据集规模的迅速增长,利用大量训练数据的深度学习推荐模型(deep learning,DL)已经开始显示出其相对于传统方法的优势。现有的基于DL的推荐系统模型包括广度和深度模型、深度学习推荐模型(DLRM)、神经协同滤波(NCF)、变分自编码(VAE)和BERT4Rec等。             

大型推荐系统解决方案在性能上面临着多重挑战:庞大的数据集、复杂的数据预处理和特征工程管道,以及大量的重复实验。为了满足大规模DL推荐系统训练和推理的计算需求,GPU推荐解决方案旨在提供快速的特征工程和高训练吞吐量(支持快速实验和生产再训练),以及低延迟、高吞吐量的推理。             

在这篇文章中,讨论了DLRM的参考实现,是NVIDIA GPU加速DL模型组合的一部分。涵盖了许多不同领域的网络体系结构和应用,包括图像、文本和语音分析以及推荐系统。通过DLRM,系统地解决了上述挑战。             

对于海量数据集的数据预处理任务,引入了新的Spark-on-GPU工具。通过NVIDIA Tensor Core GPU上的自动混合精度训练、优化的数据加载程序和定制的嵌入式CUDA内核,在单个Tesla V100 GPU上,只需44分钟就可以在Criteo Terabyte数据集上训练DLRM模型,而在96-CPU线程上则需要36.5小时。             

还演示了如何使用NVIDIA Triton推理服务器将经过训练的DLRM模型部署到生产环境中。

DLRM overview

DLRM是一个基于DL的推荐模型,由Facebook research引入。与其基于DL的方法一样,DLRM被设计为同时使用推荐系统训练数据中通常存在的分类输入和数值输入。图1显示了模型架构。为了处理类别数据,嵌入层将每个类别映射到一个密集的表示,然后再将其输入多层感知器(MLP)。数值特征可以直接输入MLP。             

在下一个层次上,通过在所有嵌入向量对和处理的稠密特征之间取点积,显式地计算不同特征的二阶交互作用。这些成对交互被输入到顶级MLP中,以计算用户和项目对之间交互的可能性。

NVIDIA GPUs上深度学习推荐模型的优化

 

Figure 1. DLRM architecture.

与其基于DL的推荐方法相比,DLRM在两个方面有所不同。首先,显式地计算特征交互,同时将交互顺序限制为成对交互。             

其次,DLRM将每个嵌入的特征向量(对应于分类特征)视为一个单元,而其方法(如Deep和Cross)将特征向量中的每个元素视为一个新单元,该单元应产生不同的交叉项。这些设计选择有助于降低计算/内存成本,同时保持具有竞争力的准确性。

Criteo dataset

Criteo-Terabyte-click-logs公共数据集是推荐任务中最大的公共数据集之一,提供了对真实企业数据规模的难得一瞥。包含约1.3 TB的未压缩点击日志,包含超过40亿个24天的样本,可用于训练预测广告点击率的推荐系统模型。             

这是公共DL数据集中的一个大型数据集。然而,真实的数据集可能要大一两个数量级。企业尽量利用尽可能多的历史数据,因为这通常转化为更好的准确性。             

在本文中,使用Criteo Terabyte数据集来演示GPU优化的DLRM训练管道的效率。此数据集中的每条记录都包含40个值:一个表示单击(值1)或不单击(值0)的标签、13个数值特征值和26个分类特征值。特性是匿名的,分类值是散列的,以确保隐私。

End-to-end training pipeline

1.       提供了一个关于Criteo Terabyte数据的端到端训练管道,帮助从几个简单的步骤开始。             

1. copy存储库。Clone the repository.

git clone https://github.com/NVIDIA/DeepLearningExamples

cd DeepLearningExamples/PyTorch/Recommendation/DLRM

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwfxxs.html