Partilhar via


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 /usrpadrã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