Ответ 1
Слишком маленький размер партии. Попытайтесь увеличить.
Результаты для моего GTX1050Ti:
imdb_bidirectional_lstm.py batch_size time 32 (default) 252 64 131 96 87 128 66 imdb_lstm.py batch_size time 32 (default) 108 64 50 96 34 128 25
Моя машина имеет следующую спецификацию:
CPU: Xeon E5-1620 v4
GPU: Titan X (Pascal)
Ubuntu 16.04
Драйвер Nvidia 375.26
CUDA takeit 8.0
cuDNN 5.1
Я сравнивал следующие примеры Keras с Tensorflow в качестве поддерживаемой справки:
SCRIPT NAME GPU CPU
stated_lstm.py 5sec 5sec
babi_rnn.py 10sec 12sec
imdb_bidirectional_lstm.py 240sec 116sec
imbd_lstm.py 113sec 106sec
Мой gpu явно не выполняет мой процессор в моделях, отличных от lstm.
SCRIPT NAME GPU CPU
cifar10_cnn.py 12sec 123sec
imdb_cnn.py 5sec 119sec
mnist_cnn.py 3sec 47sec
Кто-нибудь еще испытал это?
Слишком маленький размер партии. Попытайтесь увеличить.
Результаты для моего GTX1050Ti:
imdb_bidirectional_lstm.py batch_size time 32 (default) 252 64 131 96 87 128 66 imdb_lstm.py batch_size time 32 (default) 108 64 50 96 34 128 25
У меня есть похожие проблемы:
CPU: Intel (R) Xeon (R) CPU E5-2697 v3 @2.60 ГГц
Ubuntu 14.04
imdb_bidirectional_lstm.py
: 155 с
GPU: GTX 860m
Nvidia Драйвер: 369.30
CUDA Toolkit: v8.0
cuDNN: v6.0
imdb_bidirectional_lstm.py
: 450s
Когда я наблюдаю кривую нагрузки GPU, я нашел одну интересную вещь:
загрузка графического процессора
В основном это связано с последовательным вычислением в слое LSTM. Помните, что LSTM требует последовательного ввода для вычисления веса скрытого слоя итеративно, другими словами, вы должны подождать скрытое состояние в момент времени t-1
для вычисления скрытого состояния в момент времени t
.
Это не очень хорошая идея для ядер GPU, так как у них много небольших ядер, которые любят параллельно выполнять вычисления, последовательное вычисление не может полностью использовать свои вычислительные мощности. Вот почему мы видим, что загрузка GPU составляет от 10% до 20% в большинстве случаев.
Но в фазе backpropagation GPU может запускать производные вычисления параллельно, поэтому мы можем видеть, что максимальная загрузка GPU составляет около 80%.