Выпуск Tensorflow 0.6 GPU

Я использую Nvidia Digits Box с графическим процессором (Nvidia GeForce GTX Titan X) и Tensorflow 0.6 для обучения нейронной сети, и все работает. Тем не менее, когда я проверяю Volatile GPU Util с помощью nvidia-smi -l 1Я заметил, что это всего лишь 6%, и я думаю, что большая часть вычислений выполняется на CPU, так как я заметил, что процесс, который запускает Tensorflow, использует процессор примерно на 90%. В результате тренировочный процесс идет очень медленно. Интересно, есть ли способы в полной мере использовать GPU вместо CPU, чтобы ускорить процесс обучения. Спасибо!

1 ответ

Я подозреваю, что у вас есть узкое место где-то (как в этом выпуске github) - у вас есть какая-то операция, которая не имеет реализации GPU, поэтому она помещается в CPU, и GPU работает на холостом ходу из-за передачи данных. Например, до недавнего времени reduce_mean не был реализован на GPU, а до этого Rank не был реализован на GPU, и он неявно использовался многими операциями.

В какой-то момент я увидел, что сеть из файла full_connected_preloaded.py работает медленно, потому что Rank оп, который был помещен в CPU, и, следовательно, запускает передачу всего набора данных из GPU в CPU на каждом шаге.

Чтобы решить эту проблему, я бы сначала рекомендовал обновить систему до 0.8, поскольку в ней было реализовано еще несколько операций для GPU (reduce_prod для целочисленных входов, reduce_mean и другие).

Затем вы можете создать сеанс с log_device_placement=True и посмотрите, есть ли какие-либо операции, размещенные на CPU или GPU, которые вызвали бы чрезмерные передачи за шаг

Во входном конвейере часто бывают операции (такие как parse_example), в которых нет реализаций графического процессора, иногда полезно связать весь входной конвейер с процессором, используя with tf.device("/cpu:0"): блок

Другие вопросы по тегам