python - 是否可以在 tensorflow 中跨多个 GPU 拆分网络?

标签 python neural-network tensorflow

我计划运行一个非常大的循环网络(例如 2048x5),是否可以在 tensorflow 中的一个 GPU 上定义一层?我应该如何实现模型才能达到最佳效率。我了解 GPU 间或 GPU-CPU-GPU 通信会产生开销。

最佳答案

在 TensorFlow 中,跨多个 GPU 拆分大型模型当然是可能的,但最佳地做到这一点是一个艰巨的研究问题。通常,您需要执行以下操作:

  1. with tf.device(...): 包裹代码的大块连续区域 block ,命名不同的 GPU:

    with tf.device("/gpu:0"):
      # Define first layer.
    
    with tf.device("/gpu:1"):
      # Define second layer.
    
    # Define other layers, etc.
    
  2. 构建优化器时,将可选参数 colocate_gradients_with_ops=True 传递给 optimizer.minimize()方法:

    loss = ...
    optimizer = tf.train.AdaGradOptimizer(0.01)
    train_op = optimizer.minimize(loss, colocate_gradients_with_ops=True)
    
  3. (可选。)当您创建 tf.Session 时,您可能需要在 tf.ConfigProto 中启用“软放置” ,如果模型中的任何操作无法在 GPU 上运行:

    config = tf.ConfigProto(allow_soft_placement=True)
    sess = tf.Session(config=config)
    

关于python - 是否可以在 tensorflow 中跨多个 GPU 拆分网络?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36313934/

相关文章:

neural-network - 关于kohonen神经网络的几个问题

python - 如何在 Tensorflow 的神经网络的一层实现不同的激活函数?

python - 如何在不同数组的 For In 中访问数组的特定单元格?

python - 返回以大写字母开头的文件中的最后一个单词

python - cx_freeze exe无限时间运行而不停止

Tensorflow:将常量张量从预训练的 Vgg 模型转换为变量

tensorflow - 在其他平台(如 Linux)上构建 tensorflow lite

python - 简单黑白图像的 bool 矩阵

python - keras - 无法导入名称 Conv2D

python - 使用 LSTM 网络和 Keras 进行文本分类