Tensorflow не будет работать на графическом процессоре

Когда дело доходит до AWS и Tensorflow, я новичок, и на прошлой неделе я узнал о CNN через курс машинного обучения Udacity. Теперь мне нужно использовать экземпляр AWS графического процессора. Я запустил экземпляр p2.xlarge Deep Learning AMI с исходным кодом (CUDA 8, Ubuntu) (это то, что они рекомендовали)

Но теперь кажется, что тензорный поток вообще не использует графический процессор. Это все еще обучение с использованием процессора. Я немного поискал и нашел несколько ответов на эту проблему, и ни один из них, похоже, не работал.

Tensorflow не будет работать на графическом процессоре

Когда я запускаю ноутбук Jupyter, он по-прежнему использует процессор

Tensorflow не будет работать на графическом процессоре

Что мне сделать, чтобы он работал на графическом процессоре, а не на процессоре?

В терминале запустите команду pip freeze | grep tensorflow, чтобы определить, какой у вас установлен пакет: tensorflow или tensorflow-gpu. Это должен быть tensorflow-gpu, чтобы иметь возможность использовать графический процессор.

T.Z 24.12.2018 13:47

@ T.Z, который дал мне результат: tensorflow==1.4.1 tensorflow-gpu==1.4.1 tensorflow-tensorboard==0.4.0

Pawan Bhandarkar 24.12.2018 13:56

Скорее всего, ваша среда Python предпочитает версию процессора с тензорным потоком, а не версию с графическим процессором. Я бы посоветовал оставить только одну версию, а не версию для ЦП и ГП. Удалите версию процессора тензорного потока, выполнив команду pip uninstall tensorflow. Если вы используете python3, используйте pip3 вместо pip.

T.Z 24.12.2018 14:01

Хорошо, я протестировал процедуру и, по-видимому, вам также необходимо переустановить tensorflow-gpu после удаления tensorflow. Значит, вам просто нужно запустить pip uninstall tensorflow-gpu && pip install tensorflow-gpu

T.Z 24.12.2018 14:14

Я сделал это, и теперь он выдает ошибку: ImportError: libcublas.so.9.0: не удается открыть файл общего объекта: нет такого файла или каталога

Pawan Bhandarkar 24.12.2018 14:14

Извините, я упустил из виду небольшую деталь, что вам нужно установить версию 1.4.1. Таким образом, команда будет pip uninstall tensorflow-gpu && pip install tensorflow-gpu==1.4.1

T.Z 24.12.2018 14:16

К сожалению, это тоже не помогло. Немного изменилась ошибка: ImportError: libcudnn.so.6: cannot open shared object file: No such file or directory

Pawan Bhandarkar 24.12.2018 14:22

Этого следовало ожидать. Это означает, что библиотека NVIDIA cuDNN, которая требуется для версии графического процессора tensorflow, в системе не установлена. Установите cuDNN версии 6 (соответствует CUDA 8.0) в системе, чтобы правильно запустить версию tenorflow GPU.

T.Z 24.12.2018 14:27
Здесь - ссылка для скачивания необходимой библиотеки. Вы должны войти в учетную запись разработчика NVIDIA, чтобы загрузить этот файл. Распакуйте загруженный архив и скопируйте файлы в соответствующие папки внутри установочного каталога CUDA Toolkit (обычно /usr/local/cuda). После копирования выполните команду ldconfig (для этого могут потребоваться привилегии sudo), и все будет в порядке.
T.Z 24.12.2018 14:30

Спасибо за помощь! Хотя небольшая проблема. Как я уже сказал, я новичок во всем, что касается AWS, и до сих пор мне удалось установить все, что мне было нужно. Но когда я пробую wget "scp -i ~/folder_key_pair/key_pair.pem ~/folder_tar_file/cudnn-8.0-linux-x64-v5.0-ga.tgz ubuntu@public_dns_ec2:/home/ubuntu/", я получаю 403 запрещенную ошибку, которая, как я предполагаю, связана с тем, что мне сначала нужно войти в систему. Как мне это сделать с терминала?

Pawan Bhandarkar 24.12.2018 14:39

Да, это действительно так. Отображается 403, потому что сначала вам нужно войти в систему. Я бы посоветовал вам загрузить файл в свою локальную систему, а затем скопировать его в AWS с помощью scp.

T.Z 24.12.2018 14:40

@ T.Z Ты даже не представляешь, как долго я пытался заставить это работать. Вы, сэр, благословение. Мне потребовалось время, чтобы сделать копирование с моей жалкой скоростью загрузки 50 кбит / с, но, наконец, это произошло, и графический процессор обнаружен. Спасибо!

Pawan Bhandarkar 24.12.2018 16:19

Позвольте нам продолжить обсуждение в чате.

Pawan Bhandarkar 25.12.2018 05:31
Udacity Nanodegree Capstone Project: Классификатор пород собак
Udacity Nanodegree Capstone Project: Классификатор пород собак
Вы можете ознакомиться со скриптами проекта и данными на github .
10
13
5 792
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

  1. В системе установлена ​​только версия процессора tensorflow.
  2. В системе установлены версии ЦП и ГП тензорного потока, но среда Python предпочитает версию ЦП версии ГП.

Прежде чем приступить к решению проблемы, мы предполагаем, что установленная среда - это AWS Deep Learning AMI с установленными CUDA 8.0 и tensorflow версии 1.4.1. Это предположение вытекает из обсуждения в комментариях.

Для решения проблемы действуем следующим образом:

  1. Проверьте установленную версию tensorflow, выполнив следующую команду из терминала ОС.

pip freeze | grep tensorflow

  1. Если установлена ​​только версия CPU, удалите ее и установите версию GPU, выполнив следующие команды.

pip uninstall tensorflow

pip install tensorflow-gpu==1.4.1

  1. Если установлены обе версии ЦП и ГП, удалите их обе и установите только версию ГП.

pip uninstall tensorflow

pip uninstall tensorflow-gpu

pip install tensorflow-gpu==1.4.1

На этом этапе, если все зависимости тензорного потока установлены правильно, версия графического процессора тензорного потока должна работать нормально. Распространенной ошибкой на этом этапе (с которой сталкивается OP) является отсутствие библиотеки cuDNN, которая может привести к следующей ошибке при импорте тензорного потока в модуль python.

ImportError: libcudnn.so.6: cannot open shared object file: No such file or directory

Это можно исправить, установив правильную версию библиотеки NVIDIA cuDNN. Версия Tensorflow 1.4.1 зависит от версии cuDNN 6.0 и CUDA 8, поэтому мы загружаем соответствующую версию со страницы архива cuDNN (Ссылка для скачивания). Мы должны войти в учетную запись разработчика NVIDIA, чтобы иметь возможность загрузить файл, поэтому его невозможно загрузить с помощью инструментов командной строки, таких как wget или curl. Возможное решение - загрузить файл в хост-систему и использовать scp для его копирования на AWS.

После копирования в AWS извлеките файл с помощью следующей команды:

tar -xzvf cudnn-8.0-linux-x64-v6.0.tgz

Извлеченный каталог должен иметь структуру, аналогичную каталогу установки CUDA toolkit. Предполагая, что инструментарий CUDA установлен в каталоге /usr/local/cuda, мы можем установить cuDNN, скопировав файлы из загруженного архива в соответствующие папки каталога установки CUDA Toolkit с последующей командой обновления компоновщика ldconfig следующим образом:

cp cuda/include/* /usr/local/cuda/include

cp cuda/lib64/* /usr/local/cuda/lib64

ldconfig

После этого мы сможем импортировать версию графического процессора тензорного потока в наши модули Python.

Несколько соображений:

  • Если мы используем Python3, pip следует заменить на pip3.
  • В зависимости от прав пользователя, команды pip, cp и ldconfig могут потребовать запуска как sudo.

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