gpt4 book ai didi

python - 多 GPU 似乎不适用于 TensorFlow1.0

转载 作者:行者123 更新时间:2023-11-30 09:00:18 26 4
gpt4 key购买 nike

我正在使用 TensorFlow 1.0,并且我开发了一个简单的程序来衡量性能。我有一个愚蠢的模型如下

def model(example_batch):
h1 = tf.layers.dense(inputs=example_batch, units=64, activation=tf.nn.relu)
h2 = tf.layers.dense(inputs=h1, units=2)
return h2

以及一个运行模拟的简单函数:

def testPerformanceFromMemory(model, iter=1000 num_cores=2):
example_batch = tf.placeholder(np.float32, shape=(64, 128))
for core in range(num_cores):
with tf.device('/gpu:%d'%core):
prediction = model(example_batch)
init_op = tf.global_variables_initializer()
sess = tf.Session(config=tf.ConfigProto(allow_soft_placement=True))
sess.run(init_op)
tf.train.start_queue_runners(sess=sess)
input_array = np.random.random((64,128))
for step in range(iter):
myprediction = sess.run(prediction, feed_dict={example_batch:input_array})

如果我运行 python 脚本,然后运行 ​​nvidia-smi 命令,我可以看到 GPU0 正在以较高的使用率运行,但 GPU1 的使用率为 0%。

我读到了这个:https://www.tensorflow.org/tutorials/using_gpu这是:https://github.com/tensorflow/models/blob/master/tutorials/image/cifar10/cifar10_multi_gpu_train.py但我不知道为什么我的示例不能在多 GPU 中运行。

PS如果我从tensorflow存储库加载ciphar 10示例,它会在多gpu模式下运行。

编辑:正如先生所说,我正在覆盖预测,所以我在这里发布正确的方式:

def testPerformanceFromMemory(model, iter=1000 num_cores=2):
example_batch = tf.placeholder(np.float32, shape=(64, 128))
prediction = []
for core in range(num_cores):
with tf.device('/gpu:%d'%core):
prediction.append([model(example_batch)])
init_op = tf.global_variables_initializer()
sess = tf.Session(config=tf.ConfigProto(allow_soft_placement=True))
sess.run(init_op)
tf.train.start_queue_runners(sess=sess)
input_array = np.random.random((64,128))
for step in range(iter):
myprediction = sess.run(prediction, feed_dict={example_batch:input_array})

最佳答案

查看您的程序,您正在不同的 GPU 设备上创建多个并行子图(通常称为“塔”),但覆盖 prediction第一个每次迭代中的张量for循环:

for core in range(num_cores):
with tf.device('/gpu:%d'%core):
prediction = model(example_batch)
# ...
for step in range(iter):
myprediction = sess.run(prediction, feed_dict={example_batch:input_array})

因此,当您调用sess.run(prediction, ...)时您将仅运行在第一个 for 的最终迭代中创建的子图循环,仅在一个 GPU 上运行。

关于python - 多 GPU 似乎不适用于 TensorFlow1.0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42701486/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com