[英]Tensorflow. How to distribute ops between GPUs
我在google cloud ml-engine上运行了一个非常大的Tensorflow模型。 当使用比例级basic_gpu
(使用batch_size=1
)时,我得到如下错误:
资源耗尽:OOM在分配形状的张量时[1,155,240,240,16]
因为模型太大而无法放入一个GPU中。
使用提供4个GPU的层comple_model_m_gpu
,我可以在4个GPU之间传播操作。
但是,我记得读过GPU之间的通信很慢,可能会造成培训的瓶颈。 这是真的?
如果是这样,是否有推荐的方法在GPU之间传播操作以防止出现此问题?
我推荐以下指南:
从指南:
处理变量更新的最佳方法取决于模型,硬件,甚至硬件的配置方式。
基于指南的一些建议:
tf.train.replica_device_setter(worker_device=worker, ps_device='/cpu:0', ps_tasks=1)
使用Tesla P100 GPU代替Tesla K80 GPU解决了这个问题,因为P100有一种称为页面迁移引擎的东西。
页面迁移引擎使开发人员可以更专注于调优计算性能而不是管理数据移动。 现在,应用程序可以扩展到超出GPU的物理内存大小,几乎可以实现无限量的内存。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.