Если вы работаете с облачным экземпляром, сначала создайте облачную учетную запись, чтобы начать разработку проекта. Создайте экземпляр виртуальной машины со следующими спецификациями.

  • Ubuntu 16.04
  • GPU должен быть там. (Не используйте экземпляр общего назначения)
  • Минимум 2 ЦП и 7,5 ГБ ОЗУ.

Подключите экземпляр ВМ через терминал. (Если в облаке, которое вы используете, нет терминала, используйте puTTY).

Вы можете посмотреть версии, совместимые с CUDA и cuDNN, здесь для различных версий тензорного потока.

Действия перед установкой

Прежде всего, вам необходимо убедиться, что используемая вами система имеет CUDA-совместимый графический процессор. Вы можете сделать это с помощью команды ниже.

$ lspci | grep -i nvidia

Вам также потребуется установить последнюю версию GCC. Проверьте версию GCC, используя:

$ gcc --version

Если вы не видите установленный GCC, установите GCC, как описано здесь.

Заголовки ядра и пакеты разработки для текущего работающего ядра можно установить с помощью:

$ sudo apt-get install linux-headers-$(uname -r)

Если вы не используете Ubuntu, вы можете загрузить заголовки в соответствии с вашей системой, указав здесь.

Установка драйверов графики NVIDIA

Обратите внимание, что разные версии драйверов NVIDIA поддерживают разные версии CUDA и cuDNN. Вы можете посмотреть здесь соответствующую версию драйвера, соответствующую версии CUDA.

Здесь я собираюсь проиллюстрировать CUDA-9.0 с драйвером NVIDIA 384. Я также предполагаю, что вы работаете с Linux.

$ sudo apt-get update
$ sudo apt-get install nvidia-384 nvidia-modprobe
$ sudo apt-get update

Установка CUDA-9.0

Установка CUDA из runfile на самом деле проще простого, по сравнению с apt-get, который включает добавление репозиториев NVIDIA и испорченную конфигурацию. Установщик исполняемого файла CUDA можно загрузить с веб-сайта NVIDIA или с помощью wget, если вы не можете легко найти его на NVIDIA: (Примечание: версия, которую я скачал сначала, была 384.81, но NVidia постоянно выпускает новые минорные версии).

$ cd
$ wget https://developer.nvidia.com/compute/cuda/9.0/Prod/local_installers/cuda_9.0.176_384.81_linux-run

Вы загружаете пакет, состоящий из трех компонентов:

  • Установщик драйвера NVIDIA, но обычно устаревшей версии
  • Актуальный установщик CUDA
  • Установщик примеров CUDA

Я предлагаю извлечь три вышеуказанных компонента и выполнить 2 и 3 отдельно (помните, что мы уже установили драйвер сами). Чтобы извлечь их, запустите установщик runfile с опцией - extract:

$ chmod +x cuda_9.0.176_384.81_linux-run
$ ./cuda_9.0.176_384.81_linux-run --extract=$HOME

У вас должны были быть распакованы три компонента:

  • NVIDIA-Linux-x86_64–384.81.run (1. Драйвер NVIDIA, который мы игнорируем)
  • cuda-linux.9.0.176–22781540.run (2. Программа установки CUDA 9.0)
  • cuda-samples.9.0.176–22781540-linux.run (3. Примеры CUDA 9.0).

Выполните вторую, чтобы установить CUDA Toolkit 9.0:

$ sudo ./cuda-linux.9.0.176-22781540.run

Теперь вам нужно принять лицензию, прокрутив ее вниз (нажмите клавишу d на клавиатуре) и введите accept. Затем примите значения по умолчанию. Чтобы проверить нашу установку CUDA, установите образцы тестов:

$ sudo ./cuda-samples.9.0.176-22781540-linux.run

После завершения установки настройте библиотеку времени выполнения.

$ sudo bash -c "echo /usr/local/cuda/lib64/ > /etc/ld.so.conf.d/cuda.conf"
$ sudo ldconfig

Пользователям Ubuntu также рекомендуется добавить строку /usr/local/cuda/bin в систему file /etc/environment, чтобы nvcc был включен в $PATH. Это вступит в силу после перезагрузки. Для этого вам просто нужно выполнить команду ниже.

$ sudo vim /etc/environment

а затем добавьте :/usr/local/cuda/bin (включая ':') в конец строки PATH="/blah:/blah/blah" (внутри кавычек). После перезагрузки давайте протестируем нашу установку, выполнив и запустив наши тесты:

$ cd /usr/local/cuda-9.0/samples
$ sudo make

Это долгий процесс с множеством нерелевантных предупреждений об устаревших архитектурах (sm_20 и таких древних графических процессорах). Примечание. Если приведенная выше команда выдает ошибку о конфликте версий GNU, gcc или g++, сначала установите gcc-6 и g++-6, а затем повторите попытку. CUDA-9.0 требует gcc версии 6 или ниже. После его завершения запустите deviceQuery и p2pBandwidthLatencyTest:

$ cd /usr/local/cuda/samples/bin/x86_64/linux/release
$ ./deviceQuery

После запуска deviceQuery система проверит установку, и на экране отобразится RESULT=PASS. Очистка: если ./deviceQuery работает, не забудьте удалить 4 файла (1 загруженный и 3 извлеченных).

Установите cuDNN-7.x

Рекомендуемый способ установки cuDNN 7.x - загрузить все 3 .deb файла. Ранее я рекомендовал использовать .tgz подход к установке, но обнаружил, что он не позволяет выполнять проверку путем запуска образцов кода (невозможно установить образцы кода .deb после .tgz установки). Загрузка файла cuDNN с веб-сайта NVIDIA cuDNN может быть очень неприятной, если вы используете облачную виртуальную машину через терминал, потому что вы можете загрузить файл только на свой компьютер. Вы не можете загрузить его в виртуальную машину до wget, потому что он изменяет конфигурацию файла .deb или .tgz. Но решение здесь в том, что мы можем загрузить необработанные .deb файлы cuDNN из NVIDIA Repo, как мы загружаем необработанные .whl файлы для пакета установки pip. Вы можете выбрать ссылку, соответствующую вашей версии.

Сначала установка библиотеки времени выполнения,

$ wget http://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1604/x86_64/libcudnn7_7.1.3.16-1+cuda9.0_amd64.deb
$ chmod +x libcudnn7_7.1.3.16-1+cuda9.0_amd64.deb
$ sudo -dpkg -i libcudnn7_7.1.3.16-1+cuda9.0_amd64.deb

Установка библиотеки разработчика,

$ wget http://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1604/x86_64/libcudnn7-dev_7.1.3.16-1+cuda9.0_amd64.deb
$ chmod +x libcudnn7-dev_7.1.3.16-1+cuda9.0_amd64.deb
$ sudo -dpkg -i libcudnn7-dev_7.1.3.16-1+cuda9.0_amd64.deb

Установка примеров кода. Обратите внимание, что этот файл имеет размер всего 4 МБ. Итак, если это не сработает, вы можете загрузить этот файл на свой компьютер, загрузить его на github и клонировать в своей облачной виртуальной машине. Вы также можете использовать scp или Cyberduck, чтобы загрузить его в облачную виртуальную машину.

$ wget http://apt.cs.uchicago.edu/pool/main/ c/cudnn/ libcudnn7-doc_7.1.3.16-1+cuda9.0_amd64.deb
$ chmod +x libcudnn7-doc_7.1.3.16-1+cuda9.0_amd64.deb
$ sudo -dpkg -i libcudnn7-doc_7.1.3.16-1+cuda9.0_amd64.deb

Теперь мы можем проверить установку cuDNN (ниже только официальное руководство, которое на удивление работает из коробки):

  • Скопируйте образцы кода туда, где у вас есть доступ для записи: cp -r /usr/src/cudnn_samples_v7/ ~
  • Перейдите к примеру кода MNIST: cd ~/mnistCUDNN. Путь может измениться относительно версия cuDNN, которую вы установили.
  • Скомпилируйте пример MNIST: make clean && make.
  • Запустите пример MNIST: ./mnistCUDNN. Если ваша установка прошла успешно, вы должны увидеть Test passed! в конце вывода.

Наконец, вам также необходимо добавить CUDA в переменную окружения $ PATH. Вы можете сделать это, выполнив следующую команду. Обратите внимание, что вы должны указать версию CUDA, которую вы установили, вместо cuda-9.0.

$ export PATH=/usr/local/cuda-9.0/bin${PATH:+:${PATH}}

Кроме того, при использовании метода установки с файлом запуска переменная LD_LIBRARY_PATH должна содержать /usr/local/cuda-9.0/lib64 в 64-разрядной системе.

$ export LD_LIBRARY_PATH=/usr/local/cuda-11.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

Проверьте свою установку и о чем следует подумать

Чтобы проверить успешную установку драйверов CUDA и cuDNN, выполните в терминале следующую команду.

$ nvidia-smi

Это даст вам таблицу, в которой вверху вы увидите версию драйвера NVIDIA и версию CUDA. Обратите внимание, что версия CUDA, показанная здесь, может не быть той версией, которую вы установили, потому что показанная здесь версия CUDA является последней версией, совместимой с указанной версией драйвера.

Чтобы увидеть установленную текущую версию CUDA, запустите:

$ nvcc --version

Вышеупомянутая команда покажет установленную версию CUDA.

НЕ УСТАНАВЛИВАЙТЕ cuda-command-line-tools

В отличие от официальных документов по установке TensorFlow, вам не нужно устанавливать cuda-command-line-tools, потому что он уже установлен в этой версии CUDA и cuDNN. Если у тебя получится, ты не найдешь.

использованная литература