TensorFlow';s自动设备放置处理多GPU情况?
我知道使用TensorFlow可以手动控制我们声明变量的位置(例如:GPU上的一半神经网络,另一GPU上的其余部分) 尽管我们可以手动将变量放置在多个GPU上,但它们是否可以自动放置在多个GPU上,例如使用自动变量放置?TensorFlow的文档似乎从未明确提到自动设备放置是否处理多GPU情况 例如,假设我使用带有TensorFlow后端的Keras构建了一个模型。如果模型由于太大而不能完全安装在第一个GPU中,TensorFlow会自动使用第二个GPU(可能还有更多GPU)来声明神经网络的变量吗 谢谢。不,请参阅 如果系统中有多个GPU,默认情况下将选择ID最低的GPU。如果要在不同的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)来声明神经网络的变量
# 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
,这让我误以为它在谈论默认行为时不是在谈论自动放置。我希望默认的行为是不同的。。。嗯,不是。谢谢