Pagou por múltiplas GPUs na Azure e não consegue usar com Deep Learning? Este post é pra você.

Você foi lá no portal da Azure pegou uma NC24R que tem maravilhosos 224 Gb de memória, 24 núcleos, mais de 1Tb de disco, e o melhor: 4 placas M80 para o seu deleite completo no treinamento com Deep Learning. Tudo perfeito, certo? Quase. Logo de início tentei usar um script para um treinamento e com um simples htop para monitorar o treinamento, vi que o Tensor Flow estava despejando todo o treinamento nos processadores. Mesmo com esses 24 processadores maravilhosos batendo 100% de processamento, isso não chega nem perto do que as nossas GPUs mastodônticas podem produzir. (Nota: Você não trocaria 4 Ferraris 2017 por 24 Fiat 147 modelo 1985, certo?) Acessando a nossa maravilhosa máquina para ver o que tinha acontecido, verifiquei primeiro se as GPUs estavam na máquina, o que de fato aconteceu. [code language=”shell”] azure_teste@deep-learning:~$ nvidia-smi [/code] [code language=”shell”] Tue Jun 27 18:21:05 2017 +—————————————————————————–+ NVIDIA-SMI 375.66 Driver Version: 375.66   ——————————-+———————-+———————-+ GPU Name Persistence-M Bus-Id Disp.A Volatile Uncorr. ECC   Fan Temp Perf Pwr:Usage/Cap Memory-Usage GPU-Util Compute M.   ===============================+======================+======================   0 Tesla K80 Off B2A3:00:00.0 Off 0   N/A 47C P0 71W / 149W 0MiB / 11439MiB 0% Default +——————————-+———————-+———————-+ 1 Tesla K80 Off C4D8:00:00.0 Off 0   N/A 57C P0 61W / 149W 0MiB / 11439MiB 0% Default +——————————-+———————-+———————-+ 2 Tesla K80 Off D908:00:00.0 Off 0   N/A 52C P0 56W / 149W 0MiB / 11439MiB 0% Default +——————————-+———————-+———————-+ 3 Tesla K80 Off EEAF:00:00.0 Off 0   N/A 42C P0 69W / 149W 0MiB / 11439MiB 0% Default +——————————-+———————-+———————-+ +—————————————————————————–+ Processes: GPU Memory   GPU PID Type Process name Usage   =============================================================================   No running processes found +—————————————————————————–+ [/code] [code language=”shell”] azure_teste@deep-learning:~/deep-learning-moderator-msft$ lspci grep -i NVIDIA [/code] [code language=”shell”] b2a3:00:00.0 3D controller: NVIDIA Corporation GK210GL [Tesla K80] (rev a1) c4d8:00:00.0 3D controller: NVIDIA Corporation GK210GL [Tesla K80] (rev a1) d908:00:00.0 3D controller: NVIDIA Corporation GK210GL [Tesla K80] (rev a1) eeaf:00:00.0 3D controller: NVIDIA Corporation GK210GL [Tesla K80] (rev a1) [/code] OK, as Teslas K80 estão prontas para o combate, contudo a própria Azure reconhece que há problemas no processo como um todo, e pra fazer isso basta alguns procedimentos bem simples em dois passos segundo a documentação. PASSO 1 1) Clone o repositório do Git (Sim, eu dei fork pois rotineiramente isso costuma sumir por motivos que nem sempre sabemos). [code language=”shell”] $ git clone https://github.com/leestott/Azure-GPU-Setup.git [/code] 2) Entre na pasta que foi clonada [code language=”shell”] $ cd azure-gpu-setup [/code] 3) Execute o script que irá instalar algumas libs da NVIDIA e posteriormente fará o servidor reiniciar. [code language=”shell”] $ bash gpu-setup-part1.sh [/code] PASSO 2 1) Vá na pasta do repositório do git [code language=”shell”] $ cd azure-gpu-setup [/code] 2) Execute o segundo script que fará a instalação do Tensorflow, do Toolkit do CUDA, e do CUDNN além de fazer o set de uma porção de variáveis de ambiente. [code language=”shell”] $ bash gpu-setup-part2.sh [/code] 3) Depois faça o teste da instalação [code language=”shell”] $ python gpu-test.py [/code] Depois disso é só aproveitar as suas GPUs em carga total e aproveitar para treinar as suas GPUs.