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