Treine um modelo de aprendizagem profunda

com o AWS Deep Learning Containers no Amazon EC2

O AWS Deep Learning Containers (DL Containers) consiste em imagens do Docker com estruturas de aprendizagem profunda pré-instaladas para facilitar a rápida implantação de ambientes personalizados de machine learning, evitando que você tenha de se preocupar com o processo complicado de criar e otimizar ambientes do zero.

Desenvolvedores e cientistas de dados podem usar o AWS DL Containers para adicionar rapidamente machine learning a aplicativos conteinerizados, implantados no Amazon Elastic Container Service for Kubernetes (Amazon EKS), em Kubernetes autogerenciados, no Amazon Elastic Container Service (Amazon ECS) e no Amazon EC2.

Neste tutorial, você treinará um modelo de machine learning do TensorFlow em uma instância do Amazon EC2 usando o AWS Deep Learning Containers.

Sobre este tutorial
Duração 10 minutos                                           
Custo Menos de 1 USD
Caso de uso Machine Learning
Produtos AWS Deep Learning Containers, Amazon EC2 e Amazon ECR
Público Desenvolvedores, cientistas de dados
Nível Iniciante
Data da última atualização 27 de março de 2019

1. Cadastre-se na AWS

Você precisa de uma conta da AWS para seguir este tutorial. Não há cobrança adicional pelo uso do AWS Deep Learning Containers neste tutorial. Você paga apenas pela instância c5.large da Amazon usada neste tutorial, o que totalizará menos de 1 USD após a execução das etapas de finalização no final deste tutorial. 

2. Adicione permissões para acessar o Amazon ECR

As imagens AWS Deep Learning Container são hospedadas no Amazon Elastic Container Registry (ECR), um registro gerenciado de contêineres do Docker que permite que desenvolvedores armazenem, gerenciem e implantem facilmente imagens de contêineres do Docker. Nesta etapa, você concederá a um usuário do IAM existente permissões para acessar o Amazon ECR (usando AmazonECS_FullAccess Policy).

Se você não tiver um usuário do IAM, consulte a documentação do IAM para obter mais informações.

a. Navegue até o console do IAM

Abra o Console de Gerenciamento da AWS para poder manter este guia detalhado aberto. Quando a tela carregar, digite seu nome de usuário e senha para começar. Em seguida, digite IAM na barra de pesquisa e selecione IAM para abrir o console do serviço.

b. Selecione usuários

Selecione Users (Usuários) no painel de navegação à esquerda.

c. Adicione permissões

Agora, você adicionará permissões para um novo usuário do IAM que você criou ou para um usuário existente do IAM. Clique em Add Permissions (Adicionar permissões) na página de resumo de usuários do IAM.

d. Adicione a política de acesso completo do ECS

Clique em Attach existing policies directly (Associar diretamente políticas existentes) e busque ECS_FullAccess. Selecione a política Amazon_FullAccess e clique até Review (Revisar) e Add Permissions (Adicionar permissões).

e. Adicione uma política em linha

Na página de resumo de usuários do IAM, clique em Add inline policy (Adicionar política em linha).

f. Cole a política de JSON

Selecione a guia JSON e cole a seguinte política:

{
       "Version": "2012-10-17",
       "Statement": [
              {
                     "Action": "ecr:*",
                     "Effect": "Allow",
                     "Resource": "*"
              }
       ]
}

Salve essa política como “ECR” e clique em Create Policy (Criar política).

 

3. Execute uma instância com a AMI básica do AWS Deep Learning

Neste tutorial, usaremos o AWS Deep Learning Containers em uma imagem de máquina da Amazon (AMI) básica do AWS Deep Learning. Essa AMI inclui as dependências necessárias, como drivers da Nvidia, docker e nvidia-docker. Você pode executar o Deep Learning Containers em qualquer AMI com esses pacotes.

a. Navegue até o console do EC2

Volte à tela inicial do Console de Gerenciamento da AWS, insira EC2 na barra de pesquisa e selecione EC2 para abrir o console do serviço.

b. Inicie uma instância do Amazon EC2

Navegue novamente até o console do Amazon EC2 e clique no botão Launch Instance (Executar instância).

c. Selecione a AMI básica do AWS Deep Learning

Selecione a guia AWS Marketplace à esquerda e procure “deep learning base ubuntu”. Selecione a Deep Learning Base AMI (Ubuntu) (AMI básica de aprendizagem profunda, Ubuntu). Você também pode selecionar a Deep Learning Base AMI (Amazon Linux) (AMI básica de aprendizagem profunda, Amazon Linux).

d. Selecione o tipo de instância

Escolha um tipo de instância do Amazon EC2. O Amazon Elastic Compute Cloud (EC2) é o serviço da Amazon Web Services usado para criar e executar máquinas virtuais na nuvem. A AWS denomina essas máquinas virtuais como “instâncias”.

Neste tutorial, usaremos uma instância c5.large, mas é possível escolher tipos de instância adicionais, incluindo instâncias P3 baseadas em GPU.

Clique em Review and Launch (Revisar e executar).

e. Execute a instância

Revise os detalhes da instância e clique em Launch (Executar).

f. Crie um novo arquivo de chave privada

Na próxima tela, você deverá escolher um par de chaves existente ou criar um novo. Um par de chaves é usado para acessar a instância com segurança usando SSH. A AWS armazena a parte pública do par de chaves, que é como uma fechadura residencial. Você faz download e usa a parte privada do par de chaves, que é como uma chave residencial.

Clique em Create a new key pair (Criar um novo par de chaves) e dê a ele um nome. Clique em Download Key Pair (Fazer download do par de chaves) e armazene a chave em um local seguro. Se perder a chave, você não poderá acessar a sua instância. Se outra pessoa conseguir acesso à sua chave, poderá acessar a sua instância.

Se você já criou um arquivo de chave privada e ainda tem acesso a ele, poderá usar essa chave privada clicando em Choose an existing key pair (Escolher um par de chaves existente).

g. Veja os detalhes da instância

Selecione o ID da instância para ver os detalhes da instância do Amazon EC2 recém-criada no console. 

4. Conecte-se à instância

Nesta etapa, você se conectará à instância em execução usando SSH. As instruções abaixo usam um ambiente Mac/Linux. Se você estiver usando o Windows, siga a etapa 4 deste tutorial.

a. Localize e copie o DNS público da instância

Na guia Description (Descrição), copie o DNS público (IPv4) da sua instância do Amazon EC2.

b. Abra o terminal de linha de comando

No terminal, use os comandos a seguir para alterar o diretório no qual está a chave de segurança e conecte-se à sua instância usando SSH.

cd /Users/<your_username>/Downloads/

chmod 0400 <your .pem filename>

ssh -L localhost:8888:localhost:8888 -i <your .pem filename> ubuntu@<your instance DNS>

5. Faça login no Amazon ECR

As imagens AWS Deep Learning Container são hospedadas no Amazon Elastic Container Registry (ECR), um registro gerenciado de contêineres do Docker que permite que desenvolvedores armazenem, gerenciem e implantem facilmente imagens de contêineres do Docker. Nesta etapa você fará login e verificará o acesso ao Amazon ECR.

a. Configure sua instância do EC2 com suas credenciais da AWS

Você precisa informar o seu ID de chave de acesso e a chave de acesso secreta da AWS. Se você ainda não tiver essas informações, poderá criar um ID de chave de acesso e uma chave de acesso secreta aqui.

b. Faça login no Amazon ECR

Você usará o comando abaixo para fazer login no Amazon ECR:

$(aws ecr get-login --region us-east-1 --no-include-email --registry-ids 763104351884)

Observação: você precisa incluir o “$” e os parênteses no comando. Quando esta etapa concluir, você verá “Login Succeeded” (Login bem-sucedido).

 

6. Execute o treinamento do TensorFlow com o Deep Learning Containers

Nesta etapa, usaremos uma imagem do AWS Deep Learning Container para treinamento do TensorFlow em instâncias de CPU com o Python 3.6.

a. Execute o AWS Deep Learning Containers

Agora, você executará imagens do AWS Deep Learning Container em sua instância do EC2 usando o comando abaixo. Esse comando obterá automaticamente a imagem do Deep Learning Container, se não existir localmente.

docker run -it 763104351884.dkr.ecr.us-east-1.amazonaws.com/tensorflow-training:1.13-cpu-py36-ubuntu16.04

Observação: essa etapa poderá demorar alguns minutos, dependendo do tamanho da imagem. Se você estiver usando uma instância de GPU, use “nvidia-docker” em vez de “docker”. Após a conclusão bem-sucedida desta etapa, você informará um prompt do bash para o seu contêiner.

 

b. Obtenha um modelo de exemplo para treinar

Clonaremos o repositório do Keras, que inclui exemplos de scripts Python para treinar modelos.

git clone https://github.com/fchollet/keras.git

c. Comece o treinamento

Comece a treinar o modelo canônico MNIST CNN com o seguinte comando:

python keras/examples/mnist_cnn.py

Você iniciou o treinamento com o AWS Deep Learning Container.

 

7. Encerrar seus recursos

Nesta etapa, você encerrará a instância do Amazon EC2 que criou durante este tutorial.

Importante: o encerramento de recursos que não estão sendo usados ativamente reduz custos e é uma melhor prática. Se os recursos não forem encerrados, sua conta poderá ser cobrada.

a. Selecione a instância em execução

No console do Amazon EC2, clique em Running Instances (Instâncias em execução).

 

b. Encerre a sua instância do EC2

Selecione a instância do EC2 que você criou e clique em Actions > Instance State > Terminate (Ações > Estado da instância > Encerrar).

c. Confirme o encerramento

Você será solicitado a confirmar o encerramento. Clique em Yes, Terminate (Sim, encerrar).

Observação: este processo pode levar vários segundos. Após o encerramento, o estado da instância passará a terminated (encerrado) no console do EC2.

 

Parabéns

Você treinou com êxito um modelo do MNIST CNN usando o TensorFlow e o AWS Deep Learning Containers.

Você pode usar o AWS DL Containers para treinamento e inferência em recursos de CPU e GPU no Amazon EC2, no Amazon ECS, no Amazon EKS e no Kubernetes.

Use essas imagens estáveis de aprendizagem profunda, que foram otimizadas para performance e escala na AWS, para criar seus próprios ambientes personalizados de aprendizagem profunda.

Este tutorial foi útil para você?