Configurar pacotes específicos da GPU no Linux
Esta seção descreve os pacotes que você precisa configurar para que CNTK aproveitem gpus NVIDIA.
Verificando a compatibilidade com a GPU e obtendo o driver mais recente
Você precisa de uma placa gráfica compatível com CUDA disponível para usar CNTK recursos de GPU. Você pode verificar se seu cartão é compatível com CUDA aqui e aqui (para cartões mais antigos). O CC (recurso de computação do cartão GPU) deve ser 3.0 ou mais.
Se você tiver o cartão necessário, instale o driver mais recente:
Selecione seu cartão e baixe o pacote de driver daqui (geralmente disponível como
.run
arquivo)Se o gerenciador do X Windows estiver em execução, a instalação do driver provavelmente falhará. Abra uma sessão de terminal remoto no computador e interrompa o gerenciador de Windows X. Consulte a documentação da plataforma para obter os comandos exatos.
Exemplo: para o Ubuntu, use o seguinte comando (supondo que lightdm
seja seu gerenciador de Windows X):
sudo stop lightdm
- Instale o driver como no exemplo abaixo (observe que o nome do arquivo pode ser diferente para seu sistema):
sudo chmod +x ./NVIDIA-Linux-x86_64-384.111.run
sudo ./NVIDIA-Linux-x86_64-384.111.run
É recomendável aceitar as opções de instalação padrão
Observe que o programa de instalação do driver pode reclamar do driver de kernel nouveau. Consulte a documentação da plataforma para obter instruções para desabilitá-la. Para o Ubuntu, você pode usar esse conjunto de instruções.
- Se for interrompido durante as etapas acima, inicie o gerenciador de Windows X. Consulte a documentação da plataforma para obter os comandos exatos.
Exemplo: para ubuntu, use o seguinte comando (no caso de como seu gerenciador de lightdm
Windows X):
sudo start lightdm
CUDA 9
O procedimento a seguir explica como instalar o CUDA usando .run
a distribuição de arquivos. Você também pode usar ou RPM
empacotar DEB
a instalação. Você encontrará o pacote para seu sistema na página de download do NVIDIA CUDA 9.0 e instruções de instalação na Documentação do CUDA Online.
Baixe e instale o NVIDIA CUDA 9.0 Toolkit:
Localize o
.run
arquivo para sua plataforma aqui e baixe-o.Se o gerenciador do X Windows estiver em execução, a instalação provavelmente falhará. Abra uma sessão de terminal remoto no computador e interrompa o gerenciador de Windows X. Consulte a documentação da plataforma para obter os comandos exatos.
Exemplo: para ubuntu, use o seguinte comando (no caso de como seu gerenciador de lightdm
Windows X):
sudo stop lightdm
- Instale o CUDA 9.0 Toolkit (observe que o nome do arquivo pode ser diferente para seu
.run
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 você já instalou o driver mais recente executando as etapas na seção anterior. Se você não tiver feito isso, selecione yes
, mas é altamente recomendável atualizar para o driver mais recente depois de instalar o kit de ferramentas cuda.
Se você recusou a instalação do driver do pacote 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 for interrompido durante as etapas acima, inicie o gerenciador de Windows X. Consulte a documentação da plataforma para obter comandos exatos.
Exemplo: para ubuntu, use o seguinte comando (no caso de como seu gerenciador de lightdm
Windows X):
sudo start lightdm
Adicione a seguinte variável de ambiente à sessão atual e ao seu .bashrc
perfil (se você modificou os caminhos padrão durante a instalação do CUDA, altere os valores abaixo de acordo):
export PATH=/usr/local/cuda-9.0/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64:$LD_LIBRARY_PATH
A próxima etapa é opcional. Você pode ir mais longe para a próxima seção.
OPCIONAL. Verificando a instalação do CUDA 9.0
Você pode verificar a instalação do CUDA compilando os exemplos de CUDA (presumimos que os caminhos padrão foram usados durante a instalação do CUDA). Observe que a criação de todos os exemplos é uma operação demorada:
cd ~/NVIDIA_CUDA-9.0_Samples/
make
Após o utilitário de invocação deviceQuery
de build bem-sucedido:
~/NVIDIA_CUDA-9.0_Samples/1_Utilities/deviceQuery/deviceQuery
Se tudo funcionar bem, você deverá obter uma saída semelhante à abaixo:
./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 de GPU
A partir da versão 8 do CUDA, o Kit de Implantação de GPU faz parte do pacote CUDA e não é mais necessário ser instalado separadamente.
cuDNN
Instale a biblioteca de Rede Neural Profunda (cuDNN) do NVIDIA CUDA.
Importante
Se você instalou anteriormente o cuDNN para uma versão mais antiga, certifique-se de atualizar para a versão compatível com o CUDA 9.0
Importante
Instale cuDNN usando a versão exata e o caminho de destino, conforme especificado abaixo. Isso é necessário porque é esperado pelo programa de configuração de build CNTK.
- Use 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 coletiva de várias GPUs no Linux. CNTK pode aproveitar esses primitivos acelerados para trabalhos paralelos em execução em um único host (cf. aqui para uma introdução ao treinamento paralelo com CNTK).
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, use a opção --with-nccl=<path>
CNTK configurar para habilitar a criação com a NVIDIA NCCL.
Por exemplo, se a NCCL estiver instalada na pasta diferente da pasta /usr
padrão, use configure --with-nccl=<nccl install folder>
(mais opções adicionais) para compilar com o suporte de NVIDIA NCCL.
Observação
Atualmente, o suporte do CNTK para NVIDIA NCCL está limitado ao SGD paralelo de dados com bits de gradiente de 32/64, usando o binário CNTK. O suporte para métodos de paralelização adicionais e CNTK v2 será adicionado no futuro. A versão oficial do CNTK é criada com a NCCL habilitada. Todas as rodas do Python linux já incluem binário NCCL. Para usuários do Brainscript no Linux, a NCCL precisa ser instalada. Se o usuário preferir não usar NCCL, crie CNTK da origem. Observe que a configuração detecta automaticamente a NCCL instalada em /usr, portanto, desinstale a NCCL antes do build.
CUB
Se você estiver instalando CNTK para Python, poderá pular para a próxima seção. Caso contrário, prossiga mais.
Obtenha e instale o NVIDIA CUB usando os comandos abaixo.
Importante
Instale o NVIDIA CUB usando a versão exata e o caminho de destino, conforme especificado abaixo. Isso é necessário porque é esperado pelo programa de configuração de build CNTK.
Use 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