Como configurar um computador para trabalhar com Deep Learning
Uma das primeiras barreiras para se trabalhar com Deep Learning e utilizar frameworks como Tensorflow e Pytorch é conseguir configurar o ambiente de desenvolvimento, pois existem muitas configurações e inter-dependências entre os componentes de software. Infelizmente esse processo ainda não é muito intuitivo e rola bastante bateção de cabeça por tentativa e erro até se conseguir acertar todos os detalhes. Através deste artigo, espero ajudar a atalhar esse caminho.
Antes de começar
Se você está querendo partir direto para a programação com Deep Learning, recomendo não perder tempo configurando um computador neste momento, mas sim utilizar máquinas na nuvem pré-configuradas em serviços como Paperspace e Google Colab. Depois que estiver confiante, volte aqui e monte a sua própria máquina.
Qual sistema operacional devo usar?
Meu sistema operacional preferido é o MacOS, logo uso ele para tudo. Quando comecei a brincar com Deep Learning tudo funcionava de boas no Mac, até o dia em que o Tensorflow 1.1 anunciou que seria a última versão com suporte para GPU no Mac pois alegaram que os drivers da NVidia eram muito instáveis. Para quem não sabe, GPU são os processadores gráficos das placas de vídeo que aceleram os cálculos necessários em Deep Learning.
Não é muito prático utilizar a CPU para Deep Learning pois tudo fica muito lento. Para se ter uma ideia, no meu computador a utilização da GPU chega a ser 100 x mais rápida em comparação!
Depois da frustração de não poder utilizar o Mac, fiz uma tentativa com o Windows e logo me deparei com outros problemas. Então para não perder mais tempo vi que o melhor caminho seria partir para o Linux, pois é a principal plataforma utilizada em computadores de alta-performance e que pode ser facilmente escalada.
Atualmente o Pytorch e Tensorflow funcionam melhor com as placas da NVidia do que da AMD (aonde o suporte ainda é considerado experimental). Então as instruções a seguir são para configurar uma máquina de Deep Learning com Linux + placa gráfica da NVidia.
Recomendo como setup mínimo a seguinte especificação:
- PC Quad Core / 16GB de RAM / 250GB de HD para a partição do Linux
- Placa de vídeo NVidia Pascal GTX 1060 ou superior
Mas claro, vai funcionar também em configurações mais modestas.
Instalando o Linux
A minha escolha pelo Ubuntu foi feita pelo simples fato de ser uma das distribuições do Linux mais utilizadas. Simples assim. :-)
Uma pessoa prudente escolheria o Ubuntu 16.04 para esta configuração, pois é mais testada e a versão recomendada pela NVidia, mas como eu queria utilizar a última versão 18.04.1 LTS eu instalei nessa versão. Felizmente deu tudo certo depois de algumas tentativas.
Não vou entrar em detalhes da instalação do Ubuntu, pois é bastante intuitiva e existem diversos tutoriais na internet. Basta fazer o download aqui e depois seguir o passo-a-passo que tem na página de acordo com o seu sistema. Se preferir um tutorial de vídeo achei este link, mas confesso que não assisti ele pois não precisei.
Instalando os drivers da NVidia versão 396
As instruções oficiais da NVidia para fazer o setup são para o Ubuntu 16 e não funcionaram no meu Ubuntu 18. Então para fazer a instalação da última versão eu utilizei o repositório ppa:graphics-drivers:
$ sudo add-apt-repository ppa:graphics-drivers/ppa
$ sudo apt-get update
$ sudo apt install nvidia-396
Instalando CUDA versão 9.0
CUDA é a API da NVidia para fazer computação paralela e utilizada pelos frameworks. A última versão é a 9.2, mas as versões atuais do TensorFlow 1.9/Pytorch 0.4.1 ainda utilizam a 9.0 nos binários, então vamos usar essa. Faça o download da versão 9 direto da Nvidia .
O download é bem grande e pode demorar dependendo da sua internet. Só o base installer tem 1.6GB. Precisamos também baixar os 3 patches para correção dos bugs.
Passo 1: instalar o Base Installer:
$ chmod +x *.run
$ sudo sh cuda_9.0.176_384.81_linux.run --override
Passo 2: instalar os patches:
$ sudo sh cuda_9.0.176.1_linux-run
$ sudo sh cuda_9.0.176.2_linux-run
$ sudo sh cuda_9.0.176.3_linux-run
Precisamos criar um link simbólico para o compilador GCC da NVidia:
$ sudo ln -s /usr/bin/gcc-6 /usr/local/cuda/bin/gcc
$ sudo ln -s /usr/bin/g++-6 /usr/local/cuda/bin/g++
Vamos editar o .bashrc para configurar o PATH das novas bibliotecas
$ cd ~
$ sudo nano .bashrc
Incluir o caminho na nossa shell, incluindo as linhas abaixo no final do arquivo:
export PATH=/usr/local/cuda-9.0/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
Instalando o cudNN 7.1.4 for CUDA 9.0
Além do CUDA, precisamos instalar o cudNN que são bibliotecas de redes neurais criadas pela Nvidia. Desta vez para fazer o download vai ser necessário criar um login. Depois disto feito, basta baixar o Runtime Library e Developer Library para CUDA 9. A instalação é bem simples, basta um double click nos arquivos na seguinte ordem:
- 1o Runtime
- 2o Developer
Instalando Anaconda 5.2 for Python 3.6 (64-bit)
O Anaconda é muito útil, pois permite criar ambientes virtuais e automatiza a instalação de bibliotecas Python para Data Science. Faça o download aqui.
$ chmod +x Anaconda3-5.2.0-Linux-x86_64.sh
$ sudo ./Anaconda3-5.2.0-Linux-x86_64.sh
Eu gosto de criar um ambiente virtual por projeto ou por plataforma (ex: Tensorflow 1.9 + Python 3.6), apesar de utilizar muito espaço em disco, isso evita dores de cabeça de incompatibilidades de versões de bibliotecas.
Abaixo o comando para criarmos um ambiente virtual chamado "py36" com Python 3.6 e alguns pacotes básicos de Data Science.
$ conda create -n py36 python=3.6 scipy
Ao final da instalação do Anaconda, ele oferece a opção de instalar o Visual Studio Code. Atualmente é o meu editor de texto preferido e tem vários plugins para facilitar o desenvolvimento.
Instalando os frameworks de Deep Learning
Se deu tudo certo até agora, a instalação dos frameworks é simples pois podemos usar as versões binárias pré-compiladas. É importante lembrarmos de entrarmos no ambiente virtual "py36" que acabamos de criar:
$ source activate py36
Para instalar o Tensorflow 1.9
(py36) $ sudo apt-get install libcupti-dev
(py36) $ pip3 install tensorflow-gpu
Para testar que está funcionando, podemos criar um script python helloworld.py:
# Python
import tensorflow as tf
hello = tf.constant('Hello, TensorFlow!')
sess = tf.Session()
print(sess.run(hello))
Para instalar o Pytorch 0.4.1
(py36) $ conda install pytorch torchvision -c pytorch
Para testar:
# Python
from __future__ import print_function
import torch
x = torch.empty(5, 3)
print(x)
Jupyter Notebook
O Jupyter Notebook, é uma ferramenta essencial na vida de qualquer Data Scientist ou desenvolvedor Python. Felizmente ele já vem instalado com o Anaconda, então basta rodar ele:
(py36) $ jupyter notebook
Por fim, quando não quisermos mais usar o ambiente virtual:
(py36) $ source deactivate
Próximos Passos
Thats it! Se chegou até aqui você tem uma máquina com as ferramentas essenciais para criar projetos de Deep Learning. Agora você já está apto a desenvolver na sua própria máquina em casa sem se preocupar com custos desconhecidos de serviços na nuvem. Espero com isso também ter ajudado a economizar um tempo.
Boa sorte e comentem se este artigo foi útil para vocês!