Настройка определенных пакетов 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