当前位置:  开发笔记 > 编程语言 > 正文

Tensorflow中的同步与异步计算

如何解决《Tensorflow中的同步与异步计算》经验,为你挑选了1个好方法。

在Tensorflow CIFAR教程中,它讨论了使用多个GPU并提供此警告:

"天真地使用模型参数的异步更新会导致次优的训练性能,因为单个模型副本可能会在模型参数的陈旧副本上进行训练.相反,使用完全同步更新将与最慢的模型副本一样慢."

这是什么意思?有人可以提供一个非常简单的例子来说明这个警告吗?



1> Ian Goodfell..:

假设你有n个工人.

异步意味着每个工作者只读取参数,计算更新并写入更新的参数,而根本没有任何锁定机制.工人可以自由地覆盖彼此的工作.假设工人1因某种原因而变慢.Worker 1在时间t读取参数,然后尝试在时间t + 100写入更新的参数.与此同时,工人2-n在时间步骤t + 1,t + 2等都进行了大量更新.当慢工作者1最终写入时,它会覆盖其他工作人员所做的所有进度.

完全同步意味着所有工人都得到协调.每个工人都读取参数,计算梯度,然后等待其他工人完成.然后,学习算法计算它们计算的所有梯度的平均值,并根据该平均值进行更新.如果工人1非常慢并且需要100个时间步骤才能完成,但是工人2-n都按时完成第2步,那么大多数工人将花费大部分时间坐在什么都不做,等待工人1.

推荐阅读
云聪京初瑞子_617
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有