在Tensorflow CIFAR教程中,它讨论了使用多个GPU并给出以下警告:
“天真地采用模型参数的异步更新会导致次优的训练性能,因为单个模型副本可能会在过时的模型参数副本上进行训练。相反,采用完全同步更新的速度将与最慢的模型副本一样慢。”
这是什么意思?有人可以提供一个非常简单的示例来说明此警告吗?
假设您有n个工人。
异步意味着每个工作人员仅读取参数,计算更新并写入更新的参数,而根本没有任何锁定机制。工人可以自由地覆盖彼此的工作。假设工作者1由于某种原因而运行缓慢。工作程序1在时间t读取参数,然后尝试在时间t + 100写入更新的参数。同时,工作人员2-n在时间步t + 1,t + 2等处都进行了很多更新。当慢工作人员1最终进行写入时,它将覆盖其他工作人员所取得的所有进度。
完全同步意味着所有工人得到协调。每个工作人员都会读取参数,计算梯度,然后等待其他工作人员完成。然后,学习算法将计算出它们计算出的所有梯度的平均值,并根据该平均值进行更新。如果工作人员1非常慢并且需要100个时间步才能完成,但是工作人员2-n都在时间2上完成,那么大多数工作人员将大部分时间都花在无所事事地等待工作人员1。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句