Проблема с тензорным потоком, не обнаруживающим графический процессор, может быть вызвана одной из следующих причин:
- В системе установлена только версия процессора тензорного потока.
- Оба процессора тензорного потокаи версии GPU установлены в системе, но среда Python предпочитает версию CPU, а не версию GPU.
Прежде чем приступить к решению проблемы, мы предполагаем, что установленной средой является AWS Deep Learning AMI с установленной CUDA 8.0 и тензорной версией 1.4.1.Это предположение вытекает из обсуждения в комментариях.
Чтобы решить проблему, мы действуем следующим образом:
- Проверьте установленную версию tenorflow, выполнив следующую команду из терминала ОС.
pip freeze |grep tenorflow
Если установлена только версия CPU, удалите ее и установите версию GPU, выполнив следующие команды:
pip uninstall tenorflow
pip install tenorflow-gpu == 1.4.1
Если установлены версии как для CPU, так и для GPU, удалите обе версии и установите только версию для GPU.
pip uninstall tenorflow
pip uninstall tenorflow-gpu
pip install tenorflow-gpu == 1.4.1
На этом этапе, если все зависимости тензорного потока установлены правильно, версия GPU tenorflow должна работать нормально.Распространенной ошибкой на этом этапе (с которой сталкивается OP) является отсутствующая библиотека cuDNN, которая может привести к следующей ошибке при импорте tenorflow в модуль python
ImportError: libcudnn.so.6: невозможно открыть общийобъектный файл: нет такого файла или каталога
Это можно исправить, установив правильную версию библиотеки 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.Предполагая, что набор инструментов CUDA установлен в каталоге /usr/local/cuda
, мы можем установить cuDNN, скопировав файлы из загруженного архива в соответствующие папки установочного каталога CUDA Toolkit, а затем команду обновления компоновщика ldconfig
следующим образом:
cp cuda / include / * / usr / local / cuda / include
cp cuda / lib64 / * / usr / local / cuda / lib64
ldconfig
После этого мы сможем импортировать версию GPU tenorflow в наши модули Python.
Несколько соображений:
- Если мы используем Python3,
pip
следует заменить на pip3
. - В зависимости от привилегий пользователя, команды
pip
, cp
и ldconfig
могут потребоваться для запуска как sudo
.