xyd*_*xyd 9 deep-learning tensorflow
我对这两个概念感到困惑.
我在代码中看到了一些关于多GPU而不使用集群和服务器的例子.
这两个不同吗?有什么不同?
非常感谢!
dga*_*dga 26
这取决于您从中看待它的视角.在任何多*设置(多GPU或多机器)中,您需要决定如何跨并行资源分割计算.在单节点,多GPU设置中,有两个非常合理的选择:
(1) 模型内并行性.如果模型具有长而独立的计算路径,那么您可以将模型拆分为多个GPU,并让每个计算一部分GPU.这需要仔细了解模型和计算依赖性.
(2) 复制培训.启动模型的多个副本,训练它们,然后同步它们的学习(应用于它们的权重和偏差的渐变).
我们发布的Inception模型在自述文件中有一些很好的图表,展示了多GPU和分布式培训的工作原理.
但是对于来源:在多GPU设置中,通常最好通过将权重存储在CPU(以及其附加的DRAM中)来同步更新模型.但在多机器设置中,我们经常使用单独的"参数服务器"来存储和传播权重更新.要将其扩展到许多副本,可以在多个参数服务器之间对参数进行分片.
使用多个GPU和参数服务器,您会发现自己使用诸如构造之类的设备放置更加小心with tf.device('/gpu:1'),或者在参数服务器上使用权重tf.train.replica_device_setter来分配它/job:ps或者/job:worker.
通常,在一台机器上对一堆GPU进行培训效率要高得多 - 在一台机器上需要超过16个分布式GPU才能达到8个GPU的性能 - 但是分布式培训可以扩展到更大的数量,并利用更多的CPU.
| 归档时间: |
|
| 查看次数: |
5441 次 |
| 最近记录: |