Ubuntu升级至18.04后,GPU的Keras和Tensorflow变慢了

时间:2018-09-23 07:40:18

标签: python tensorflow keras ubuntu-18.04

将笔记本的操作系统从16.04升级到Ubuntu 18.04之后,我注意到在安装了tensorflow-gpu的conda环境中,我的keras代码(使用tensorflow后端)变得非常慢。 基本上,即使通过nvidia-smi命令进行的简单检查显示GPU占用了一个python进程(Nvidia GeForce GTX1070),似乎一些简单的CNN模型现在就需要花费很多时间(就像他们曾经使用CPU一样)。 )。 然后,我考虑更新CUDA库(从版本7到版本9),并相应地更新CUDnn以使其与新版本兼容。 我也将tensorflow-gpu和keras软件包更新为最新版本,但它似乎仍然比以前的安装慢。 为了显示示例,这是我正在运行的代码片段,模型如下:

model= Sequential()
model.add(Conv2D(32,(3,3), activation='relu', input_shape=(100,60,3)))
model.add(MaxPooling2D((2,2)))
model.add(Conv2D(64,(3,3), activation='relu'))
model.add(MaxPooling2D((2,2)))
model.add(Conv2D(128,(3,3), activation='relu'))
model.add(MaxPooling2D((2,2)))
model.add(Conv2D(128,(3,3), activation='relu'))
model.add(MaxPooling2D((2,2)))
model.add(Flatten())
model.add(Dropout(0.5))
model.add(Dense(512, activation='relu'))
model.add(Dense(26, activation='softmax'))
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['acc'])

几秒钟后将产生输出:

history = model.fit_generator(train_generator, steps_per_epoch=260000 // 32, 
                              epochs=10, 
                              validation_data=test_generator, 
                              validation_steps=52000//32,
                              verbose=2
                             )

Epoch 1/10
166s - loss: 0.2333 - acc: 0.9291 - val_loss: 0.0073 - val_acc: 0.9982

现在每个纪元花费很长时间(超过45分钟而不是166秒!)。 有人知道为什么会这样吗? 我需要还原到Ubuntu 16.04吗? 对此行为感到非常沮丧...

已编辑。...

我尝试使用https://medium.com/@andriylazorenko/tensorflow-performance-test-cpu-vs-gpu-79fcd39170c中的模型在cpu和gpu之间进行性能测试,我的gpu似乎运行良好:每个时期平均每秒处理超过10000个样本,而每秒约处理400个样本在CPU模式下运行时。 但是,我的代码(用keras编写)仍然产生奇怪的行为。在我的ubuntu更新之后,这是预计在GPU下达到一个时代的ETA(我永远不会让它完成,因为要花几个小时):

Epoch 1/1

6/507 [..............................]-ETA:5:19:17-损失:3.2632 -存取:0.0397

虽然这与在keras中在通常使用tensorflow作为后端的普通CPU环境中产生的输出相同

Epoch 1/1
  4/507 [..............................] - ETA: 4850s - loss: 3.2671 - acc: 0.0293

显然,喀拉拉邦发生了某些错误。...

0 个答案:

没有答案