GPU tensorflow运行速度比笔记本电脑上的CPU tensorflow慢吗?

时间:2020-01-28 10:13:59

标签: python tensorflow keras gpu cpu

我最近在笔记本电脑上安装了GPU张量流,CUDA和cuDNN,以使用this教程使用GPU训练模型。我的笔记本电脑是Lenovo Ideapad 510,处理器= i5-7th gen,GPU = GForce 940MX(4GB)。在学习完本教程之后,我安装并配置了使用我的GPU所需的所有必需更改。

在GPU上训练mnist数据集的结果

每个epoc仅用了6秒钟即可编译60,000张图像。在nvidia-smi桌上,我可以看到我的GPU内存使用率为19MiB。在本教程中,他的GPU内存使用量为777MiB。

然后,我尝试运行自己的数据集和模型,其中包含88000张图像并运行10次。此培训的nvidia-smi显示GPU使用情况为19MiB。 tf.test.is_gpu_available()也返回FALSE。

CNN模型

classifier = Sequential()


classifier.add(Conv2D(32, (3, 3), input_shape = (100, 100, 3), activation = 'relu'))
classifier.add(MaxPooling2D(pool_size = (2, 2)))

classifier.add(Conv2D(32, (3, 3), activation = 'relu'))
classifier.add(MaxPooling2D(pool_size = (2, 2)))

classifier.add(Flatten())

classifier.add(Dense(units = 128, activation = 'relu'))
classifier.add(Dense(units = 39, activation = 'softmax'))

classifier.compile(optimizer = 'adam', loss = 'binary_crossentropy', metrics = ['accuracy'])



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('train',
                                                 target_size = (100,100),
                                                 batch_size = 32,
                                                 class_mode = 'categorical')

test_set = test_datagen.flow_from_directory('test',
                                            target_size = (100, 100),
                                            batch_size = 32,
                                            class_mode = 'categorical')

classifier.fit_generator(training_set,
                         steps_per_epoch = 88534,
                         epochs = 10,
                         validation_data = test_set,
                         validation_steps = 1418)

classifier.save('/home/harish/Desktop/asl-alphabet/asl_pred.h5')

为什么我不能比通常的CPU更快地训练数据?如何启用GPU进行训练?

2 个答案:

答案 0 :(得分:1)

您使用的link有多种安装NVIDIA驱动程序的方法。我不确定您使用哪种方法。通常不建议使用第一种方法,因为大多数情况下会安装回溯驱动程序。 (如果要重新安装驱动程序,请查看tensorflow官方文档中描述的this。)

但是,现在到了重点。

nvidia-smi命令起作用的情况下,让我们跳过驱动程序安装部分。

但是,tf.test.is_gpu_available()返回False,这可能是由多种原因造成的(即CuDNN或Tensorflow与当前驱动程序不兼容)。

快速解决方案可能是

  1. 请检查您当前的GPU驱动程序版本,并搜索与您当前的GPU驱动程序版本兼容的合适的Tensorflow版本。

  2. 使用conda环境安装Tensorflow。这将下载正确的CUDA,CuDNN和其他必要的库。

Tensorflow gpu:conda install -c anaconda tensorflow-gpu=<version>

Keras gpu conda install -c anaconda keras-gpu=<version_match_with_tensorflow>(但是,tf.keras可能比安装单独的keras更好)

答案 1 :(得分:0)

在笔记本电脑上,它可能会发生应用程序不想使用专用卡的情况,因为它可以在英特尔显示器上正常工作。在3d设置下的nvidia控制面板中检查笔记本电脑是否正在使用Nvidia GPU,然后选择“高性能Nvidia图形”。

相关问题