Поделиться через


Настройка определенных пакетов GPU в Linux

В этом разделе описаны пакеты, которые необходимо настроить, чтобы CNTK использовать GPU NVIDIA.

Проверка совместимости GPU и получение последнего драйвера

Для использования CNTK возможностей GPU требуется графическая карта, совместимая с CUDA. Вы можете проверить, совместима ли карта CUDA здесь и здесь (для старых карточек). Вычислительные возможности карт GPU (CC) должны иметь значение 3.0 или более.

Если у вас есть требуемая карта, установите последний драйвер:

  • Выберите карточку и скачайте пакет драйверов из этой папки (обычно доступно в виде .run файла)

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

Пример: для Ubuntu используйте следующую команду (предположимlightdm, что ваш менеджер X Windows):

sudo stop lightdm
  • Установите драйвер, как показано в приведенном ниже примере (обратите внимание, что имя файла может отличаться для вашей системы):
sudo chmod +x ./NVIDIA-Linux-x86_64-384.111.run
sudo ./NVIDIA-Linux-x86_64-384.111.run

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

Обратите внимание, что программа установки драйверов может жаловаться на драйвер ядра nouveau. Инструкции по отключению см. в документации по платформе. Для Ubuntu можно использовать этот набор инструкций.

  • Если он остановлен на описанных выше шагах, запустите диспетчер Windows X. Сведения о точных командах см. в документации по платформе.

Пример: для Ubuntu используйте следующую команду (в случае с диспетчером lightdm X Windows):

sudo start lightdm

CUDA 9

В приведенной ниже процедуре объясняется, как установить CUDA с помощью .run дистрибутива файлов. Вы также можете использовать DEB или RPM устанавливать пакеты. Вы найдете пакет для системы на странице загрузки NVIDIA CUDA 9.0 и инструкции по установке в документации по CUDA Online.

Скачайте и установите набор средств NVIDIA CUDA 9.0:

  • .run Найдите файл для своей платформы и скачайте его.

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

Пример: для Ubuntu используйте следующую команду (в случае с диспетчером lightdm X Windows):

sudo stop lightdm
  • Установите набор средств CUDA 9.0 (обратите внимание, что .run имя файла может отличаться для системы):
chmod +x ./cuda_9.0.176_384.81_linux.run
sudo ./cuda_9.0.176_384.81_linux.run

При появлении запроса установщика:

Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 384.81?
(y)es/(n)o/(q)uit:

Выберите no , установлен ли последний драйвер, выполнив действия, описанные в предыдущем разделе. Если вы этого не сделали, выберите yes, но мы настоятельно рекомендуем обновить до последнего драйвера после установки набора средств CUDA.

Если вы отклонили установку драйвера из пакета CUDA 9.0, вы получите следующее предупреждение в конце установки:

***WARNING: Incomplete installation! This installation did not install the CUDA Driver. A driver of version at least 384.00 is required for CUDA 9.0 functionality to work.
To install the driver using this installer, run the following command, replacing <CudaInstaller> with the name of this run file:
    sudo <CudaInstaller>.run -silent -driver

Пропустите это предупреждение.

Если он остановлен на описанных выше шагах, запустите диспетчер Windows X. Сведения о точных командах см. в документации по платформе.

Пример: для Ubuntu используйте следующую команду (в случае с диспетчером lightdm X Windows):

sudo start lightdm

Добавьте следующую переменную среды в текущий сеанс и .bashrc профиль (если вы изменили пути по умолчанию во время установки CUDA, измените приведенные ниже значения соответствующим образом):

export PATH=/usr/local/cuda-9.0/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64:$LD_LIBRARY_PATH

Следующий шаг является необязательным. Вы можете перейти к следующему разделу.

OPTIONAL. Проверка установки CUDA 9.0

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

cd ~/NVIDIA_CUDA-9.0_Samples/
make

После успешного вызова deviceQuery служебной программы сборки:

~/NVIDIA_CUDA-9.0_Samples/1_Utilities/deviceQuery/deviceQuery

Если все работает хорошо, вы должны получить выходные данные, аналогичные приведенному ниже.

./deviceQuery Starting...

 CUDA Device Query (Runtime API) version (CUDART static linking)

Detected 1 CUDA Capable device(s)

Device 0: "GeForce GTX 960"
  CUDA Driver Version / Runtime Version          9.0 / 9.0
  CUDA Capability Major/Minor version number:    5.2
  Total amount of global memory:                 2025 MBytes (2123235328 bytes)
  ( 8) Multiprocessors, (128) CUDA Cores/MP:     1024 CUDA Cores
  GPU Max Clock rate:                            1253 MHz (1.25 GHz)
  Memory Clock rate:                             3505 Mhz
  Memory Bus Width:                              128-bit
  L2 Cache Size:                                 1048576 bytes
  Maximum Texture Dimension Size (x,y,z)         1D=(65536), 2D=(65536, 65536), 3D=(4096, 4096, 4096)
  Maximum Layered 1D Texture Size, (num) layers  1D=(16384), 2048 layers
  Maximum Layered 2D Texture Size, (num) layers  2D=(16384, 16384), 2048 layers
  Total amount of constant memory:               65536 bytes
  Total amount of shared memory per block:       49152 bytes
  Total number of registers available per block: 65536
  Warp size:                                     32
  Maximum number of threads per multiprocessor:  2048
  Maximum number of threads per block:           1024
  Max dimension size of a thread block (x,y,z): (1024, 1024, 64)
  Max dimension size of a grid size    (x,y,z): (2147483647, 65535, 65535)
  Maximum memory pitch:                          2147483647 bytes
  Texture alignment:                             512 bytes
  Concurrent copy and kernel execution:          Yes with 2 copy engine(s)
  Run time limit on kernels:                     No
  Integrated GPU sharing Host Memory:            No
  Support host page-locked memory mapping:       Yes
  Alignment requirement for Surfaces:            Yes
  Device has ECC support:                        Disabled
  Device supports Unified Addressing (UVA):      Yes
  Device PCI Domain ID / Bus ID / location ID:   0 / 3 / 0
  Compute Mode:
     < Default (multiple host threads can use ::cudaSetDevice() with device simultaneously) >

deviceQuery, CUDA Driver = CUDART, CUDA Driver Version = 9.0, CUDA Runtime Version = 9.0, NumDevs = 1, Device0 = GeForce GTX 960
Result = PASS

Комплект развертывания GPU

Начиная с CUDA версии 8 пакет развертывания GPU является частью пакета CUDA и больше не требуется устанавливать отдельно.

cuDNN

Установите библиотеку глубокой нейронной сети NVIDIA CUDA (cuDNN).

Важно!

Если вы ранее установили cuDNN для более старой версии, убедитесь, что вы выполнили обновление до совместимой версии CUDA 9.0.

Важно!

Установите cuDNN с использованием точной версии и целевого пути, как указано ниже. Это необходимо, так как оно ожидается программой конфигурации сборки CNTK.

  • Используйте следующие команды:
wget https://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1604/x86_64/libcudnn7_7.0.4.31-1+cuda9.0_amd64.deb
sudo dpkg -i libcudnn7_7.0.4.31-1+cuda9.0_amd64.deb

OPTIONAL. NCCL

Библиотека NCCL NVIDIA предоставляет оптимизированные примитивы для коллективного обмена данными с несколькими GPU в Linux. CNTK могут воспользоваться преимуществами этих ускоренных примитивов для параллельных заданий, выполняемых на одном узле (см. здесь, чтобы ознакомиться с параллельным обучением с CNTK).

Следуйте инструкциям здесь , чтобы скачать библиотеку NVIDIA NCCL.

wget https://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1604/x86_64/libnccl-dev_2.1.2-1+cuda9.0_amd64.deb
wget https://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1604/x86_64/libnccl2_2.1.2-1+cuda9.0_amd64.deb
sudo dpkg -i libnccl2_2.1.2-1+cuda9.0_amd64.deb libnccl-dev_2.1.2-1+cuda9.0_amd64.deb

Затем используйте параметр --with-nccl=<path> настройки CNTK, чтобы включить сборку с помощью NVIDIA NCCL. Например, если NCCL установлен в папке, отличной от папки /usrпо умолчанию, используйте configure --with-nccl=<nccl install folder> (плюс дополнительные параметры) для сборки с поддержкой NVIDIA NCCL.

Примечание

В настоящее время поддержка NVIDIA NCCL CNTK ограничена параллелизмом данных с 32/64 битами градиента с использованием двоичного файла CNTK. В будущем будет добавлена поддержка дополнительных методов параллелизации и CNTK версии 2. Официальный выпуск CNTK построен с включенным протоколом NCCL. Все колеса linux Python уже включают двоичный файл NCCL. Для пользователей Brainscript в Linux необходимо установить NCCL. Если пользователь предпочитает не использовать NCCL, создайте CNTK из источника. Обратите внимание, что настройка автоматически обнаруживает NCCL, установленный в /usr, поэтому перед сборкой удалите NCCL.

CUB

Если вы устанавливаете CNTK для Python, вы можете перейти к следующему разделу. В противном случае продолжить.

Получите и установите NVIDIA CUB с помощью приведенных ниже команд.

Важно!

Установите NVIDIA CUB с использованием точной версии и целевого пути, как указано ниже. Это необходимо, так как оно ожидается программой конфигурации сборки CNTK.

Используйте следующие команды:

wget https://github.com/NVlabs/cub/archive/1.7.4.zip
unzip ./1.7.4.zip
sudo cp -r cub-1.7.4 /usr/local