Como Criar e Configurar uma Instância do Google Cloud Platform para Projetos de Deep Learning

Source: Deep Learning on Medium

Como Criar e Configurar uma Instância do Google Cloud Platform para Projetos de Deep Learning

Esse é um tutorial especialmente feito para os membros do CIS-UnB (Computational Intelligence Society — UnB) para que ninguém perca tempo quebrando a cabeça para criar/configurar uma conta no GCP e gaste todo o tempo aprendendo Deep Learning.

Atualmente existem diversas opções pagas de computação na nuvem em que é possível ter acesso a uma GPU: AWS, Azure, Google Cloud Platform; e algumas opções gratuitas também como o Kaggle e o Google Colab. Para diversas aplicações, as opções gratuitas suprem as necessidades de computação. Mas e quando não suprem mais?

Aqui eu vou explicar como criar uma conta no Google Cloud Platform (GCP). Por que o GCP? Bem… Porque eu tenho mais experiência com ele e sei que a Google oferece um crédito de $300 com validade de um ano para usar no GCP (o que dá para fazer muita coisa).

Eu me baseei muito nesses dois links para fazer esse post. Vale a pena dar uma olhada neles:
https://towardsdatascience.com/running-jupyter-notebook-in-google-cloud-platform-in-15-min-61e16da34d52
https://course.fast.ai/start_gcp.html

Então vamos ao tutorial!

Criação e Configuração de uma Instância

  • Passo 1
    Acesse o site https://cloud.google.com, entre com sua conta Google e em seguida aperte o botão “Acesse o Console”.
  • Passo 2
    Aperte o botão de três linhas horizontais na parte superior esquerda da página e em seguida aperte o botão “Compute Engine”
  • Passo 3
    Ative o faturamento. Após isso é só seguir os comandos do Google que não tem erro. Ele vai pedir para você cadastrar um cartão para cobranças. Não se preocupe, o Google não vai cobrar nada de você sem te avisar.
  • Passo 4
    Na aba “Compute Engine” aperte o botão “Criar Instância”.
  • Passo 5
    Agora você vai definir os parâmetros de computação da sua instância. Sugere-se que você comece com a seguinte configuração:
  • Passo 6
    Na caixinha “Disco de inicialização” aperte o botão “alterar”. Escolha a seguinte opção:

obs1: o tamanho do disco rígido da sua instância não precisa ser de 100GB. Escolha um tamanho apropriado para a sua aplicação. Na dúvida, coloque 100GB mesmo.
obs2: sua instância já virá com o anaconda, git, driver da NVIDIA e tudo que você precisa para rodar código do fastai/Pytorch.

  • Passo 7
    De um check nas caixinhas “Permitir tráfego HTTP” e “Permitir tráfego HTTPS”.

Agora nós iremos habilitar a preempção da sua instância. Basicamente, uma instância preemptiva pode ser interrompida sem aviso prévio pela Google devido a muitas solicitações naquele momento. Além disso, uma instância preemptiva não pode ficar ativa por mais de 24h, sendo que a Google também a interromperá na vigésima quarta hora. Por que querer uma instância preemptiva então? Em suma, ela é muito mais barata que uma instância não preemptiva. Se sua aplicação demanda longos períodos de treinamento, opte por uma instância não preemptiva. Caso contrário, é ok usar uma instância preemptiva.

Se você decidir não ativar a preempção, basta apertar o botão “Criar” no final da página. Se quiser ativar, continue seguindo os passos a seguir

  • Passo 8 (opcional)
    Aperte o botão “Gerenciamento, segurança, discos, rede, locatário único”

Na aba “Política de disponibilidade”, ative a preempção.

  • Passo 9:
    Por fim aperte o botão “Criar” no final da página.

Uma vez com a instância criada, precisamos fazer mais algumas configurações para que seja possível utilizar o Jupyter Notebook na sua instância.

  • Passo 10
    Precisamos tornar o IP da instância estático. Aperte o botão de três linhas horizontais na parte superior esquerda da página, em seguida aperte o botão “Rede VPC”, o botão “Endereços IP Externos” e mude o tipo para estático.
  • Passo 11:
    Agora vamos criar algumas regras de firewall. Para isso, aperte o botão de três linhas horizontais na parte superior esquerda da página, em seguida aperte o botão “Rede VPC”, o botão “Regras de Firewall” e por fim “Criar uma regra de Firewall”.

E crie a seguinte regra de firewall:

  • Passo 12
    Se essa é a primeira vez que é criada uma instância na conta Google em que você está logado, será necessário solicitar uma cota de GPU. Para fazer isso siga os seguintes passos:
    1. Siga a url https://console.cloud.google.com/iam-admin/quotas;
    2. Se você se inscreveu com uma conta de nível gratuito, primeiro precisa atualizar para uma conta paga; faça isso apertando o botão “Atualizar conta” no canto superior direito da página. Isso não afetará seu crédito de $300;
    3. No tipo de filtro, seleciona a métrica para ser GPUs (todas as regiões) e Local como Global;
    4. Clique em “editar cotas” e selecione a cota a ser editada (GPUs Todas as regiões). Defina o novo limite de cota para 1 ou mais. Sua solicitação pode exigir confirmação, que a Google alega demorar em média dois dias úteis para autorizar.

Feitas todas essas etapas, sua instância está quase pronta para uso!

Configuração do Jupyter Notebook

Na etapa de configuração da instância, mais especificamente na criação da regra de firewall, você liberou a porta 5000. Isso foi feito já pensando na usabilidade do Jupyter Notebook. Vamos agora configurar o Jupyter Notebook.

  • Passo 1:
    Vamos inicializar a instância. Para isso aperte o botão de três linhas horizontais no canto superior esquerdo da página, “Compute Engine” e por fim “Instâncias de VM”. Após isso, inicialize a instância.
  • Passo 2
    Uma vez com a instância inicializada basta clickar em “SSH” que um terminal irá abrir em sua tela. Esse é o terminal da sua instância. Todos os comandos do Linux funcionam nele.
  • Passo 3
    Cheque se já existe um arquivo de configuração do Jupyter Notebook entrando com o comando abaixo:
ls ~/.jupyter/jupyter_notebook_config.py

Se não existe, crie um com o comando:

jupyter notebook --generate-config

Abra o arquivo de configuração com o comando

vim ~/.jupyter/jupyter_notebook_config.py

Aperte a letra “i” em seu teclado para entrar no modo de inserção e insira em qualquer lugar do arquivo as seguintes configurações:

c = get_config()
c.NotebookApp.ip = '*'
c.NotebookApp.open_browser = False
c.NotebookApp.port = 5000

Quando terminar de escrever o código acima, aperte a tecla “Esc” e em seguida digite “:wq” e tecle “enter”.

Pronto! O Jupyter Notebook está configurado!

Abrindo o Jupyter Notebook

Depois de todas as configurações feitas você está pronto para usar o Jupyter Notebook na sua instância do GCP.
Vá para o diretório em que deseja trabalhar e entre com o comando:

jupyter notebook

Para acessar o Jupyter Notebook basta digitar o seguinte em seu browser:

http://<IP Externo Estático da sua Instância>:5000

Se o Jupyter pedir um token basta copiar o token que aparece no terminal.