Configurar pacotes específicos da GPU no Linux
Esta secção descreve os pacotes que precisa de configurar para que CNTK alavancar os GPUs da NVIDIA.
Verificar a sua compatibilidade com a GPU e obter o mais recente motorista
Você precisa de uma placa gráfica compatível com CUDA disponível para usar CNTK capacidades de GPU. Pode verificar se o seu cartão é compatível com CUDA aqui e aqui (para cartões mais antigos). O seu cartão GPU Compute Capability (CC) deve ser 3.0 ou mais.
Se tiver o cartão necessário, instale o mais recente controlador:
Selecione o seu cartão e descarregue o pacote de motorista a partir daqui (normalmente disponível como
.run
ficheiro)Se o seu gestor X Windows estiver em funcionamento, a instalação do controlador provavelmente falhará. Abra uma sessão de terminal remoto para a sua máquina e pare o gestor X Windows. Consulte a documentação da sua plataforma para obter os comandos exatos.
Exemplo: para Ubuntu, use o seguinte comando (assumindo que lightdm
é o seu gestor de Windows X):
sudo stop lightdm
- Instale o controlador como no exemplo abaixo (note que o nome do ficheiro pode ser diferente para o seu sistema):
sudo chmod +x ./NVIDIA-Linux-x86_64-384.111.run
sudo ./NVIDIA-Linux-x86_64-384.111.run
Recomendamos aceitar as opções de instalação predefinidos
Note que o programa de instalação do condutor pode queixar-se do condutor do kernel nouveau. Consulte a documentação da sua plataforma para obter instruções para desativá-la. Para Ubuntu pode utilizar este conjunto de instruções.
- Se parar durante os degraus acima, inicie X Windows gestor. Consulte a documentação da sua plataforma para obter os comandos exatos.
Exemplo: para Ubuntu, utilize o seguinte comando (no caso de lightdm
como o seu gestor de X Windows):
sudo start lightdm
CUDA 9
O procedimento abaixo explica como instalar o CUDA utilizando .run
a distribuição de ficheiros. Também pode utilizar ou RPM
instalação DEB
de embalagens. Encontrará o pacote para o seu sistema na NVIDIA CUDA 9.0 Enviar instruções de descarregamento e instalação na Documentação Online cuda.
Descarregue e instale o Kit de Ferramentas NVIDIA CUDA 9.0:
Encontre o
.run
ficheiro da sua plataforma aqui e descarregue-o.Se o seu gestor de X Windows estiver em funcionamento, a instalação provavelmente falhará. Abra uma sessão de terminal remoto para a sua máquina e pare o gestor X Windows. Consulte a documentação da sua plataforma para obter os comandos exatos.
Exemplo: para ubuntu utilizar o seguinte comando (em caso de lightdm
como o seu gestor de Windows X):
sudo stop lightdm
- Instale o kit de ferramentas CUDA 9.0 (note que o nome do
.run
ficheiro pode ser diferente para o seu sistema):
chmod +x ./cuda_9.0.176_384.81_linux.run
sudo ./cuda_9.0.176_384.81_linux.run
Quando solicitado pelo instalador:
Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 384.81?
(y)es/(n)o/(q)uit:
Selecione no
se já instalou o mais recente controlador executando os passos na secção anterior. Se não o tiver feito, selecione yes
, mas recomendamos vivamente a atualização ao mais recente controlador após a instalação do kit de ferramentas CUDA.
Se recusar a instalação do condutor a partir da embalagem CUDA 9.0, receberá o seguinte aviso no final da instalação:
***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
Ignore este aviso.
Se parar durante os degraus acima, inicie X Windows gestor. Consulte a documentação da sua plataforma para obter comandos exatos.
Exemplo: para ubuntu utilizar o seguinte comando (no caso de lightdm
como o seu gestor de Windows X):
sudo start lightdm
Adicione a seguinte variável ambiental à sua sessão atual e ao seu .bashrc
perfil (se modificar os caminhos predefinidos durante a instalação cuda, altere os valores abaixo em conformidade):
export PATH=/usr/local/cuda-9.0/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64:$LD_LIBRARY_PATH
O próximo passo é opcional. Pode passar mais para a secção seguinte.
Opcional. Verificação da instalação CUDA 9.0
Pode verificar a sua instalação CUDA compilando as amostras cuda (assumimos que os caminhos predefinidos foram utilizados durante a instalação cuda). Note que construir todas as amostras é uma operação longa:
cd ~/NVIDIA_CUDA-9.0_Samples/
make
Após a construção bem sucedida invocar deviceQuery
utilidade:
~/NVIDIA_CUDA-9.0_Samples/1_Utilities/deviceQuery/deviceQuery
Se tudo funcionar bem, deve obter uma saída semelhante à seguinte:
./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
Kit de implantação da GPU
A partir da versão CUDA 8, o Kit de Implantação gpu faz parte do pacote CUDA e já não é necessário para ser instalado separadamente.
cuDNN
Instale a biblioteca da Rede Neural Profunda NVIDIA CUDA (cuDNN).
Importante
Se já instalou cuDNN para uma versão mais antiga, certifique-se de que faz upgrade para a versão compatível com CUDA 9.0
Importante
Instale o cuDNN utilizando a versão exata e o caminho-alvo, conforme especificado abaixo. Isto é necessário porque é esperado pelo programa de configuração de construção CNTK.
- Utilize os seguintes comandos:
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
Opcional. NCCL
A biblioteca NCCL da NVIDIA fornece primitivos otimizados para comunicação multi GPU coletiva em Linux. CNTK pode tirar partido destes primitivos acelerados para empregos paralelos que correm num único hospedeiro (cf. aqui para uma introdução em formação paralela com CNTK).
Por favor, siga as instruções aqui para baixar a biblioteca 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
Em seguida, utilize a opção de configuração --with-nccl=<path>
CNTK para permitir a construção com o NVIDIA NCCL.
Por exemplo, se o NCCL for instalado numa pasta diferente da pasta /usr
padrão, utilize configure --with-nccl=<nccl install folder>
(mais opções adicionais) para construir com suporte NVIDIA NCCL.
Nota
Atualmente, o suporte da CNTK para o NVIDIA NCCL está limitado a SGD paralelo a dados com bits de gradiente de 32/64, utilizando o binário CNTK. No futuro, será acrescentado o apoio a métodos adicionais de paralelização e CNTK v2. A libertação oficial de CNTK é construída com NCCL habilitado. Todas as rodas linux Python já incluem binário NCCL. Para os utilizadores do Brainscript no Linux, o NCCL precisa de ser instalado. Se o utilizador preferir não utilizar o NCCL, por favor construa CNTK a partir da fonte. Note que a configuração deteta automaticamente o NCCL instalado em /usr, por isso, desinstale o NCCL antes de construir.
CUBO
Se estiver a instalar CNTK durante Python, pode saltar para a secção seguinte. Caso contrário, avance mais.
Obtenha e instale o NVIDIA CUB utilizando os comandos abaixo.
Importante
Instale o NVIDIA CUB utilizando a versão exata e o caminho-alvo, conforme especificado abaixo. Isto é necessário porque é esperado pelo programa de configuração de construção CNTK.
Utilize os seguintes comandos:
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