分布式训练与单卡训练精度存在差异的几个原因

阅读: 评论:0

分布式训练与单卡训练精度存在差异的几个原因

分布式训练与单卡训练精度存在差异的几个原因

  • 一个主要因素是Batch norm。Batch norm依赖当前batch来计算均值和方差,而主流框架(tf,pytorch)的实现是在当前卡上计算这些统计量。显然单个卡上计算出来的统计量是不能代替整个并行batch的结果。考虑一个极端情形,每张卡batch size=1,这时候单卡的方差为0,而整个并行batch的方差不为0。所以单个sample的前向计算结果不一样,最后计算出来的梯度也不一样。深度学习中多GPU训练是否等价于增大batch size? - 小朱的回答 - 知乎

  • NLP 中经常有一个 batch 里各条数据长度不同需要 mask 的情况,而有时候损失函数是 per token 而不是 per sample 的。导致的结果就是,在做数据并行的时候,假如分到每张卡上的 batch 中 token 数量不同,那么总的梯度其实应该等价于每张卡上的梯度以某种方式加权平均(而不是直接平均)。实际实现的时候可以通过根据长度分桶等方式,使得每张卡上的有效 token 数量差异不大,然后所有卡直接平均即可。

  • Numeric stability,由于计算机浮点数的舍入误差,运算的结合律在一定规模下是不成立的。比如对于一个只有1位精度的浮点数,(1+0.5)+0.5=2+0.5=4,0.5在每次加法中因为舍入产生了一次进位,但是换一个计算顺序,我们又有1+(0.5+0.5)=1+1=2。因此不同的计算顺序可能得到不同的计算结果,从而产生差异。

本文发布于:2024-02-01 16:22:33,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170677575437911.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:几个   分布式   精度   差异   原因
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23