首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否有可能在tensorflow中将一个网络分割成多个GPU?

是否有可能在tensorflow中将一个网络分割成多个GPU?
EN

Stack Overflow用户
提问于 2016-03-30 15:55:10
回答 1查看 5.5K关注 0票数 9

我计划运行一个非常大的递归网络(例如,2048x5),是否可以在tensorflow中的一个GPU上定义一个层?如何实施该模型才能达到最佳的效率。据我所知,GPU或GPU-CPU-GPU之间的通信存在开销.

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-30 21:21:56

在TensorFlow中,在多个GPU之间分割一个大型模型当然是可能的,但优化它是一个困难的研究问题。一般来说,您需要执行以下操作:

  1. 将代码的大型连续区域包装在with tf.device(...):块中,命名不同的GPU: 使用tf.device("/gpu:0"):#定义第一层。使用tf.device("/gpu:1"):#定义第二层。#定义其他层等。
  2. 在构建优化器时,将可选参数colocate_gradients_with_ops=True传递给optimizer.minimize()方法: 损失= ..。优化器= tf.train.AdaGradOptimizer(0.01) train_op =optimizer.minimize(损失,colocate_gradients_with_ops=True)
  3. (可选)创建tf.ConfigProto时,如果模型中的任何操作无法在GPU上运行,则可能需要在tf.Session中启用“软放置”: config = tf.ConfigProto(allow_soft_placement=True) sess = tf.Session(config=config)
票数 20
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36313934

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档