本文经AI新媒体量子比特(公众号ID:QbitAI)授权转载,转载请联系出处。不够快!不够快?在NLP和CV任务上,为了加速神经网络的训练,batchsize为32K,8个GPU,仅需14分钟即可完成ImageNet的训练,76分钟即可完成Bert的训练。研究人员对训练速度的渴望从未停止。那么,只有1个GPU就足够了吗?在推荐系统上,不仅可以,还要继续增加batchsize!近日,字节跳动AML(应用机器学习团队)和新加坡国立大学的研究人员提出了一种新的优化方法CowClip,在公开的点击率预测数据集Criteo上支持最大128K的batchsize,并在单GPU上训练DeepFM.,12小时的训练时间可以压缩到10分钟,成绩不降反升!论文地址:https://arxiv.org/abs/2204.06240开源地址:https://github.com/bytedance/LargeBatchCTR为了支持如此大batchsize的训练,保持模型的训练精度,一个新的一组优化的训练方法:通过参数转换公式确定大batchsize下的参数,对embedding层进行自适应梯度裁剪。利用CowClip优化方法的不同推荐模型(本文测试了DeepFM等四种模型),在两个公开数据集上进行了理论和实验验证,证实了该方法的合理性和有效性。作者表示,使用这种优化方法,任何人都可以在几分钟内轻松训练出一个中小型推荐模型。CowClip加速用户交互的理论基础将成为推荐系统新的训练数据,模型会在一次又一次的再训练中学习到最新的知识。目前的推荐系统面对数亿用户和千亿训练数据,一次完整的训练需要大量的时间和计算成本。为了加速推荐系统的训练,目前的推荐系统都会使用GPU进行加速训练。但是随着GPU算力和显存的不断提升,以往推荐系统的训练过程并没有充分利用当前GPU的性能。例如,在Criteo数据集上,当批量大小(batchsize)从1K增加到8K时,使用V100进行训练的每次迭代所需时间仅略有增加。这表明,在目前的高性能GPU上,过去使用的小batchsizes不足以充分利用GPU的并行能力。使用更大的batchsize可以更充分地挖掘GPU的性能,让GPU真正物有所值。只要用大批量训练的模型没有精度损失,我们就可以不断增加模型的批量大小,直到它填满GPU的内存。然而,防止模型精度损失并非易事。一方面,较大的batchsize可能会使网络训练不稳定,削弱网络的泛化能力;另一方面,如果没有规则来指导以更大的批量大小选择超参数,那么调整参数将浪费大量时间。H.本文提出的CowClip希望能解决上述问题。通过在嵌入层(Embeddinglayer)逐列动态梯度裁剪,以及一套简单有效的不同batchsize下的超参数值设置方法,可以将batchsize扩大128倍。成为可能。CowClip方法为了让网络的训练在大batchsize下更加稳定,研究人员提出了自适应列方向梯度裁剪策略(AdaptiveColumn-wiseGradientNormClipping,CowClip)来稳定网络的优化过程.梯度裁剪是一种优化更新过程的方法,它将范数值大于某个阈值的梯度裁剪到范数内。给定一个固定的阈值clip_t,梯度裁剪过程如下:然而,直接将此方法应用于嵌入层的梯度效果不佳。原因不仅是很难确定一个有效的阈值,而且每个特征值(ID特征)对应的编码向量(对应embedding层中embedding矩阵的一列)梯度值不同在训练过程中。同样(如图4所示),全局应用梯度裁剪会忽略不同梯度值之间的差异。因此,研究人员提出对每个特征值对应的编码向量分别应用一个裁剪阈值,自适应地设置阈值。考虑到如果梯度大小超过参数大小本身,训练过程会很不稳定,研究人员提出使用特征值对应的编码向量本身的范数来确定阈值。为了防止削波阈值过小,参数ζ保证削波值不会低于某个值。在上面的公式中,还需要考虑到因为特征ID的总频数不同,所以在每一个batch中出现的次数也不同。为了平衡不同的出现频率,最终的裁剪值需要乘以相应频率在batch中出现的次数。基于以上分析,研究人员提出了如下的CowClip算法:大batchsize下的参数转换在CV和NLP任务中,已经有一套在扩大batchsize时调整学习率和L2正则化参数的方法。常用的方法有LinearScaling,即当batchsize扩大s倍时,将learningrate扩大s倍;和平方根调整(SqrtScaling),即当将batchsize扩大s倍时,学习率和正则化参数都随着根号下s的大小扩大。研究人员首先探讨了应用这些调优方法是否能有效地维持大批量的性能。表1左侧的实验表明,当batchsize增大时,这些方法的性能均有一定程度的下降。指出以往方法的失败在于输入的特征ID有不同的频率,这不是CV和NLP模型输入的特征。比如热榜上的一个视频,播放量大,在数据集中出现的次数也多,所以视频ID特征中视频ID的出现频率要比一些冷门视频高很多。为了验证上述想法,研究人员改造了一个只包含高频特征的数据集。果不其然,前面的调参方法此时都能取得不错的效果(表1右侧)。本实验表明,频数分布的不一致确实阻碍了以往的参数调整方法,论文对这一现象进行了进一步的理论分析。简而言之,如果重新考虑线性调整方法,其背后的思想是当batchsize增加时,更新迭代步数减少,因此需要扩大学习率。但是对于出现次数很少的特征,扩大batchsize并不会减少更新迭代次数。由于点击率预测数据集中大部分数据都是此类低频特征ID,结合CowClip方法,可以省去对模型embedding层的学习率调整,增加L2参数同时呈线性。从最终的实验结果可以看出,使用CowClip训练的模型不仅比其他方法更准确,而且大大提高了训练速度。
