2016-12-26 3 views
6

У меня возникли проблемы с тем, что tenorflow использует графический процессор Nvidia GeForce GTX 1080 в своей системе. Я уменьшил свой код до очень простой версии, показанной ниже; Я выполняю только операцию session.run(), которая должна использовать графический процессор, данные извлекаются только один раз и повторно используются внутри цикла, поэтому этот код должен использовать только графический процессор.Низковольтный GPU Использование при работе тензорного потока

input_training_data=self.val_data[batch_size, :] input_training_label=self.val_label[batch_size, :] feed_dict = self.get_feed_dict(input_training_data, input_training_label) for i in range(1000): acc = sess.run(cost, feed_dict)

Я заметил, что batch_size = 16, я получаю в основном устойчиво использование GPU на уровне около 8%, как я увеличить batch_size до 32 максимально увеличивается использование GPU на 9-12%, но пребывание утилизации в основном на 0% и время от времени он прыгает до 15% -25% и сразу падает до 0%. Эти шаблоны продолжаются для более крупных серийных файлов, в основном любой размер партии, превышающий 16, увеличивает максимальное использование, но использование остается в основном на 0 и только время от времени увеличивается. Что мне здесь не хватает?

+0

Вы можете попробовать применить инструменты профилирования, чтобы иметь точное время каждой операции, см. пример [здесь] (http://stackoverflow.com/documentation/tensorflow/3850/ измерение-на-Execution-время-Индивидуально-операций). Это должно помочь вам понять, почему использование графического процессора является низким, и вы можете обновить свой вопрос с дополнительной информацией. –

+1

У вас есть некоторые узкие места, где на CPU и на графическом процессоре установлен некоторый медленный режим, и ждать, пока он будет выполнен, или ваш расчет слишком мал, а передача данных не может идти в ногу с графическим процессором. Существуют некоторые трюки для оптимизации передачи данных, например [здесь] (https://github.com/tensorflow/tensorflow/issues/5722#issuecomment-266297116) –

ответ

2

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

  1. Дон «т использовать data_dictornaries в циклах (используйте Tensorvariable вместо)
  2. Там была проблема с float64 типа данных (который должен быть рассчитан на CPU только) -> использовать float32 тип данных (если это возможно)
  3. использовать Profiler предложил Оливье Моиндро проверить, если что-то явно выполняется на вашем CPU. Затем попытайтесь довести все до GPU

Кстати, намек относительно кода: Сеанс (по умолчанию график) будет расти каждой итерации, пока не OutOfMemory исключения возможного ... -> Я закрыть сессию каждый х -итация при сбросе графика по умолчанию ...

Смежные вопросы