Керас не использует GPU, но тензор потока - PullRequest
0 голосов
/ 22 октября 2018

Keras не использует мой GPU, хотя с ним, похоже, и работает tenorflow.Я последовал предложению других людей проверить тензорный поток с помощью:

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

Что дает

[name: "/device:CPU:0"
device_type: "CPU"
memory_limit: 268435456
locality {
}
incarnation: 13541243483275802230
, name: "/device:GPU:0"
device_type: "GPU"
memory_limit: 6694395576
locality {
  bus_id: 1
  links {
  }
}
incarnation: 17715053295272939021
physical_device_desc: "device: 0, name: GeForce GTX 1070, pci bus id: 0000:08:00.0, compute capability: 6.1"
]

Пока все хорошо, но когда я указываю классификатор в Keras и обучаю его, он запускается вледниковый темп.Никаких признаков ускорения GPU:

classifier.fit(X_train, y_train, batch_size = 10, epochs = 100, verbose=1)

Я пробовал это:

with tensorflow.device('/gpu:0'):
    classifier.fit(X_train, y_train, batch_size = 10, epochs = 100)

С тем же результатом.Я не знаю, как определить, использует ли Keras графический процессор, кроме как по скорости и очевидной загрузке процессора.

Я также запустил этот пример из документации по тензорному потоку, и в моем терминале я ясно вижу, что он использует графический процессор.Он работает намного быстрее, чем приведенный выше пример с keras.import tenorflow # Создает график.a = tenorsflow.constant ([1,0, 2,0, 3,0, 4,0, 5,0, 6,0], shape = [2, 3], name = 'a') b = tenorflow.constant ([1,0, 2,0, 3,0, 4,0, 5,0, 6.0], shape = [3, 2], name = 'b') c = tenorflow.matmul (a, b) # Создает сеанс, для которого для log_device_placement установлено значение True.sess = tenorflow.Session (config = tenorsflow.ConfigProto (log_device_placement = True)) # Запускает оп.print (sess.run (c))

Буду очень признателен за помощь в выяснении того, почему Keras не видит мой графический процессор

Я использую python 3.6.5, tenorflow-gpu 1.11.0 (тензор потока не установлен), керас 2.2.4.Я должен упомянуть, что мне пришлось немного поиграть, чтобы получить тензорный поток для использования графического процессора, и я до сих пор не знаю, почему это произошло внезапно, но сейчас это происходит последовательно.Я предполагал, что Керас автоматически унаследует это.

A.

Ответы [ 2 ]

0 голосов
/ 23 октября 2018

Я не совсем уверен в моей изначально заявленной проблеме.Я думаю, что Keras действительно использовал GPU, но у меня было существенное узкое место между CPU и GPU.Когда я увеличил размер партии, дела шли значительно быстрее (для каждой эпохи), что не имеет особого смысла, но, кажется, указывает на то, что у меня есть узкое место в другом месте.Я не знаю, как отладить это, хотя

0 голосов
/ 22 октября 2018

Вы можете попробовать удалить свои keras и установить вместо них keras-gpu (доступно в anaconda, возможно, и в pip)

Если вы хотите быть уверенным в использовании with tensorflow.device('/gpu:0'):, используйте его "при определении модели":

with tensorflow.device('/gpu:0'):

    #blablablabla - layers for functional API model

    classifier = Model(inputs, outputs) #or classifier = Sequential()

    #blablabla - layers for sequential model 
...