我在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之间传播操作以防止出现此问题?
答案 0 :(得分:3)
我推荐以下指南:
从指南中:
处理变量更新的最佳方法取决于模型, 硬件,甚至硬件的配置方式。
基于指南的一些建议:
tf.train.replica_device_setter(worker_device=worker, ps_device='/cpu:0', ps_tasks=1)
答案 1 :(得分:0)
使用Tesla P100 GPU代替Tesla K80 GPU解决了这个问题,因为P100具有Page Migration Engine的功能。
页面迁移引擎使开发人员可以更专注于调优 计算性能而不是管理数据移动。应用 现在可以扩展到GPU的物理内存大小到虚拟 无限的记忆。