Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
TensorFlow';s自动设备放置处理多GPU情况?_Tensorflow_Keras_Tensorflow Gpu - Fatal编程技术网

TensorFlow';s自动设备放置处理多GPU情况?

TensorFlow';s自动设备放置处理多GPU情况?,tensorflow,keras,tensorflow-gpu,Tensorflow,Keras,Tensorflow Gpu,我知道使用TensorFlow可以手动控制我们声明变量的位置(例如:GPU上的一半神经网络,另一GPU上的其余部分) 尽管我们可以手动将变量放置在多个GPU上,但它们是否可以自动放置在多个GPU上,例如使用自动变量放置?TensorFlow的文档似乎从未明确提到自动设备放置是否处理多GPU情况 例如,假设我使用带有TensorFlow后端的Keras构建了一个模型。如果模型由于太大而不能完全安装在第一个GPU中,TensorFlow会自动使用第二个GPU(可能还有更多GPU)来声明神经网络的变量

我知道使用TensorFlow可以手动控制我们声明变量的位置(例如:GPU上的一半神经网络,另一GPU上的其余部分)

尽管我们可以手动将变量放置在多个GPU上,但它们是否可以自动放置在多个GPU上,例如使用自动变量放置?TensorFlow的文档似乎从未明确提到自动设备放置是否处理多GPU情况

例如,假设我使用带有TensorFlow后端的Keras构建了一个模型。如果模型由于太大而不能完全安装在第一个GPU中,TensorFlow会自动使用第二个GPU(可能还有更多GPU)来声明神经网络的变量吗

谢谢。

不,请参阅

如果系统中有多个GPU,默认情况下将选择ID最低的GPU。如果要在不同的GPU上运行,则需要明确指定首选项:

# Creates a graph.
with tf.device('/gpu:2'):
  a = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[2, 3], name='a')
  b = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[3, 2], name='b')
  c = tf.matmul(a, b)
# Creates a session with log_device_placement set to True.
sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))
# Runs the op.
print(sess.run(c))
不,请参阅

如果系统中有多个GPU,默认情况下将选择ID最低的GPU。如果要在不同的GPU上运行,则需要明确指定首选项:

# Creates a graph.
with tf.device('/gpu:2'):
  a = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[2, 3], name='a')
  b = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[3, 2], name='b')
  c = tf.matmul(a, b)
# Creates a session with log_device_placement set to True.
sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))
# Runs the op.
print(sess.run(c))

如果您的系统中有多个GPU,则具有最低 默认情况下,将选择ID

我认为这样做是因为将数据从GPU移动到另一个GPU可能成本高昂,而且系统并不真正知道在何种情况下移动数据是合理的。

如果您的系统中有多个GPU,则具有最低 默认情况下,将选择ID


我认为这样做是因为将数据从GPU移动到另一个GPU可能成本高昂,而且系统并不真正知道在何种情况下移动数据是合理的。

否,TensorFlow尝试在GPU上运行它所能运行的一切:0(如果存在)非常感谢。你可以回答这个问题,我认为这是最好的答案。如果你有例子的话,我想了解更多关于“除整数值运算”的细节。我还想知道使用多个GPU的潜在性能缺陷。我是否应该仅仅因为神经网络的分裂而期望性能下降很多?对我来说,似乎不是,但我不确定,因为它仍然需要在向前传球的过程中传输一个张量的输出,并且在训练过程中对CNN的向后传球再次进行传输。不,TensorFlow尝试在gpu上运行它能运行的一切:0,如果存在,非常感谢。你可以回答这个问题,我认为这是最好的答案。如果你有例子的话,我想了解更多关于“除整数值运算”的细节。我还想知道使用多个GPU的潜在性能缺陷。我是否应该仅仅因为神经网络的分裂而期望性能下降很多?对我来说,似乎不是,但我不确定,因为它仍然需要在向前传球的过程中转移一个张量的输出,并且在训练CNN的过程中再次转移向后传球的输出。我已经读过了。你的摘录上面的标题是
在多GPU系统上使用单个GPU
,这让我误以为它在谈论默认行为时不是在谈论自动放置。我希望默认的行为是不同的。。。嗯,不是。谢谢,我已经看过了。你的摘录上面的标题是
在多GPU系统上使用单个GPU
,这让我误以为它在谈论默认行为时不是在谈论自动放置。我希望默认的行为是不同的。。。嗯,不是。谢谢