После обновления Ubuntu до 18.04 GPU замедляется в керасах и тензорном потоке - PullRequest
0 голосов
/ 23 сентября 2018

После обновления операционной системы моего ноутбука до Ubuntu 18.04 с 16.04 я заметил, как мой код keras (с использованием бэкэнда тензорного потока) стал невероятно медленным в моей среде conda, где я установил тензорный поток-gpu.По сути, кажется, что некоторым простым моделям CNN теперь требуется вечность (например, если бы они вместо этого использовали CPU), даже если простая проверка с помощью команды nvidia-smi выявляет процесс Python, задействованный GPU (Nvidia GeForce GTX1070).Затем я подумал об обновлении библиотек CUDA (с версии 7 до версии 9) и, соответственно, обновлении CUDnn для совместимости с новой версией.Я также обновил пакеты tenorflow-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, и мойКажется, что gpu работает хорошо: в среднем в каждую эпоху обрабатывается более 10000 выборок в секунду против 400 выборок в секунду при работе в режиме ЦП.ОДНАКО, мой код (написанный в керасе) все еще производит странное поведение.Ожидается, что это ETA завершит (я никогда не позволю ему закончить это, так как это займет несколько часов) эпоху под GPU после моего обновления Ubuntu:

Epoch 1/1

6/507 [..............................] - ETA: 5:19:17 - убыток: 3,2632 - акк: 0,0397

, пока этотот же вывод, полученный с кератами в обычной среде ЦП с использованием всегда тензорного потока в качестве бэкэнда

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

в кератах происходит что-то не так, по-видимому ....

...