博客
关于我
单机训练速度提升高达640倍,快手开发GPU广告模型训练平台
阅读量:99 次
发布时间:2019-02-26

本文共 2116 字,大约阅读时间需要 7 分钟。

640?wx_fmt=jpeg

作者|廉相如(快手FeDA智能决策实验室 )

如何有效处理大规模用户数据进行广告推荐?对于互联网企业的发展和进步至关重要。这也是为何快手成立西雅图实验室并实现新一代GPU广告模型训练平台的原因之一。快手新创建的“Persia”GPU广告模型训练平台比起传统CPU训练平台,单机训练速度提升可达几百倍,在约一小时内即可训练百T级别数据量,并能通过设计算法得到相对于传统训练平台精度更高的模型,对企业收入、计算资源的节约和新模型开发效率产生直观的提升。

大模型GPU分布式运算存储

近年来,GPU训练已在图像识别、文字处理等应用上取得巨大成功。GPU训练以其在卷积等数学运算上的独特效率优势,极大地提升了训练机器学习模型,尤其是深度神经网络的速度。然而,在广告模型中,由于大量的稀疏样本存在(比如用户id),每个id在模型中都会有对应的Embedding向量,因此广告模型常常体积十分巨大,以至于单GPU无法存下模型。目前往往将模型存在内存中,由CPU进行这部分巨大的Embedding层的运算操作。这既限制了训练的速度,又导致实际生产中无法使用比较复杂的模型——因为使用复杂模型会导致对给定输入CPU计算时间过长,无法及时响应请求。

640?wx_fmt=jpeg      

“Persia”系统实现了多GPU分散存储模型,每个GPU只存储模型一部分,并进行多卡协作查找Embedding向量训练模型的模式。这既解决了CPU运算速度过慢的问题,又解决了单GPU显存无法存下模型的问题。当模型大小可以放入单个GPU时,“Persia”也支持切换为目前在图像识别等任务中流行的AllReduce分布训练模式。据研究人员透露,对于一个8GPU的计算机,单机数据处理速度可达原CPU平台单机的640倍。

由于普遍使用的传统异步SGD有梯度的延迟问题,若有 n台计算机参与计算,每台计算机的梯度的计算实际上基于n个梯度更新之前的模型。在数学上,对于第t步的模型xt,传统异步SGD则更新为:

xt+1←xt − learning rate × g(xt−τt),

其中g(xt−τt) 是训练样本的损失函数在τt个更新之前的模型上的 梯度。而τt的大小一般与计算机数量成正比:当计算机数量增多,xt−τt与xt相差就越大,不可避免地导致模型质量的降低。“Persia”的训练模式解决了这种梯度延迟的问题,因此模型质量也有所提升。

同时,“Persia”训练系统还支持对Embedding运算在GPU上进行负载均衡,使用“贪心算法”将不同Embedding均匀分散在不同GPU上,以达到均匀利用GPU的目的。给定k个 GPU,当模型具有m个Embedding层:e1, e2, …, em,对应负载分别为 l1, l2, …, lm,“Persia”将会尝试将Embedding分为k组 S1, S2, …, Sk,并分别存放在对应GPU上,使得每组∑i∈Sjli, ∀j大致相等。