本文来自Nvidia GTC 21,演讲者是来自Facebook AI Reasearch的Bilge Acun。演讲主题是“FaceBook的深度学习大规模推荐模型”。
在Facebook上了解使用GPU训练大规模推荐模型的努力和挑战。GPU在机器学习工作流程中的使用已激增,现在已被认为是许多深度学习模型的主流。同时,在培训大型个人数据中心消耗最多计算周期的最新个人推荐模型时,由于同时具有计算密集型和内存密集型组件,GPU的使用面临各种挑战。这些推荐模型的GPU性能和效率在很大程度上受模型体系结构配置(例如密集和稀疏特征,MLP尺寸)的影响。此外,这些模型通常包含不适合有限GPU内存的大型嵌入表。
第一部分 推荐系统架构的研究背景
目前推荐模型的训练频率比较高和训练时间比较长,因此面对Facebook庞大的用户需求,需要提高推荐系统的训练效率。
第二部分 训练的模型和系统表征
Acun介绍了深度学习推荐模型的体系架构。
图中红色部件可以被调整以创建多个模型配置,根据模型配置,效率特性可以作出改变,该模型框架包括两个重要组件:MLP和嵌入表。
之后又介绍了嵌入学习的挑战,一是词典大小的庞大,二是数据分布不均匀问题。
接着介绍了深度学习推荐模型的训练策略,针对模型的密集部分使用数据并行训练而稀疏部分则使用模型并行训练。
模型的配置规模会影响服务器利用率,具体数据分布如下图所示。
图示表明模型的配置规模会影响服务器利用效率,在Trainer和Parameter服务器上的利用率很广泛。
然后介绍了模型的稀疏特征和嵌入式尺寸特征的选择。对于稀疏特征,不同模型下,稀疏特征数量和平均特征长度的关系如图所示。
由图可知,表的平均访问频率随模型而异,嵌入式访问频率呈幂律分布,很少有表比其他表被访问得频繁得多。
对于嵌入式尺寸大小,不同模型下,哈希表大小和平均特征长度的关系如图所示。
可以得到,嵌入表的规模增长迅速,从数十个GB急剧增长到了TB数量级;对于Facebook,用于嵌入的哈希表大小根据特征的不同而有显著不同;大表(功能长度)不一定会被经常访问。
之后介绍了不同训练下服务器的使用情况,大部分训练运行使用相同数量的训练器,而参数服务器的数量差异很大,因为模型的特征在每次运行中经常变化。基于此,我们开始利用GPU来进行训练,首先介绍了几种嵌入表的执行和存放方式,如图所示。
并举出了两种GPU的实例比较,首先两种GPU的基本参数如下图所示。
首先是特征数目对于训练效率的影响,随着密集和稀疏特征数量的增加,训练吞吐量降低,
因为嵌入操作会增加内存开销。Big Basin 提供更高的训练吞吐量,尽管在少数情况下每瓦性能能效较低。然后是batch size,对于CPU 和GPU 训练中不同的吞吐量存在最佳btach size,最佳batch size因模型的稀疏和密集配置而异。改变 MLP 维度会对CPU 和 GPU 吞吐量造成影响,增加 MLP 层的长度和宽度以及顺序层的数量,CPU 训练吞吐量会比 GPU 吞吐量降低更多。最后比较了哈希大小的影响,由于嵌入表的有效大小随着哈希大小的增加而增加,Big Basin 的训练吞吐量明显降低,由于GPU 之间的通信开销增加。
第三部分 GPU的算法优化机会
为了充分利用GPU的计算能力,提出了一种使稀疏嵌入致密化的方法。重点介绍了张量分解运算,将一个张量分解成张量训练核的乘积,如图所示,这样处理可以降低算法复杂度,然后介绍了这种算法在DLRM中的应用,这样处理,模型会减小,训练时间有所增加,但是效果几乎不受影响。