如何确保tensorflow正在使用GPU

5

我手动安装了CUDA v9.2和相应的cuDNN以安装tensorflow gpu。但是我意识到tensorflow 1.8.0需要CUDA 9.0,所以我运行了

pip install tensorflow-gpu

我从anaconda命令提示符(基础环境)开始,它自动安装了CUDA 9.0和相应的cuDNN。然后我从同一个命令提示符中启动了Spyder。 这是我使用Python 3.6编写的代码,在该代码中,我使用keras和tensorflow训练超过8000张图像 -

# Convolutional Neural Networks
# Part 1 - Building the CNN
# Not important

# Part 2- Fitting the CNN to the images - 
from keras.preprocessing.image import ImageDataGenerator
train_datagen = ImageDataGenerator(
        rescale=1./255,
        shear_range=0.2,
        zoom_range=0.2,
        horizontal_flip=True)

test_datagen = ImageDataGenerator(rescale=1./255)

training_set = train_datagen.flow_from_directory(
        'dataset/training_set',
        target_size=(64, 64),
        batch_size=32,
        class_mode='binary')

test_set = test_datagen.flow_from_directory(
        'dataset/test_set',
        target_size=(64, 64),
        batch_size=32,
        class_mode='binary')
with tf.device("/gpu:0"):   # Notice THIS
    classifier.fit_generator(
            training_set,
            steps_per_epoch=8000,
            epochs=25,
            validation_data=test_set,
            validation_steps=2000)

注意,在最后拟合数据集之前,我将其放在里面。
with tf.device("/gpu:0"):

我认为这应该确保使用GPU进行训练?我不确定,因为将“gpu:0”更改为“cpu:0”会导致训练时间完全相同(每个时期18-20分钟)。如何确保Spyder中的tensorflow使用我的GPU?
我有一张NVIDIA GTX 970,所以它是CUDA兼容的。 此外,我正在使用Python 3.6,这是个问题吗? 我应该创建一个单独的Python 3.5环境,并在其中类似地安装tensorflow-gpu并尝试吗?

要检查Tensorflow、Keras和PyTorch,请参见https://dev59.com/b1cP5IYBdhLWcg3wVoo6#53244520 - Paul Williams
2个回答

13
创建一个图表。
 with tf.device('/device:GPU:0'):
    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.
    r = sess.run(c)
    print(r)
    import numpy as np
    assert np.all(r == np.array([[22., 28.], [49., 64.]]))

或者前往 TensorFlow 网站 (https://www.tensorflow.org/programmers_guide/using_gpu)。

import tensorflow as tf
if tf.test.gpu_device_name():
   print('Default GPU Device: {}'.format(tf.test.gpu_device_name()))
else:
   print("Please install GPU version of TF")

或者这个:

from tensorflow.python.client import device_lib
print(device_lib.list_local_devices())

1
sess = tf.Session(config = tf.ConfigProto(log_device_placement = True)) 这一行在Spyder控制台中不会打印任何内容。 我得到的唯一输出是 - [[22. 28.] [49. 64.]] - Mihir Deshpande
导入tensorflow as tf if tf.test.gpu_device_name(): print('默认GPU设备:{}'.format(tf.test.gpu_device_name())) else: print("请安装TF的GPU版本") - dimension
1
是的,这将打印出我的GPU设备。它已经正确安装,只是GPU版本没有被使用。 - Mihir Deshpande

0

使用以下方法实时监测GPU使用情况:

nvidia-smi -l 1

这将循环并每秒调用视图。

如果您不想在控制台历史记录中保留循环调用的过去跟踪,也可以执行以下操作:

watch -n0.1 nvidia-smi

其中0.1是以秒为单位的时间间隔。

如果tensorflow正在使用GPU,您会注意到内存使用、温度等会突然跳升。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接