Introdução ao Amazon SageMaker

Nessa etapa do workshop iremos testar algumas das principais features do Amazon SageMaker.

Importante

Verifique com o(a) organizador(a) da AWS se o acesso a instâncias com GPU estão disponíveis para o workshop.

Explorando nosso dataset com o Jupyter

Para iniciar, iremos explorar um pouco o dataset através do ambiente Jupyter. O Jupyter Notebook é uma aplicação web de código aberto que permite criar e compartilhar documentos que contêm código, equações, visualizações e texto narrativo. Os usos incluem: limpeza e transformação de dados, simulação numérica, modelagem estatística, visualização de dados, aprendizado de máquina e muito mais.

Para a demonstração, iremos utilizar o dataset Caltech-256 que possui 30608 imagens de 256 objetos diferentes.

Iremos criar uma instância gerenciada com o nosso ambiente de desenvolvimento Jupyter já configurado. Para isso clique no botão abaixo:

Cloudformation launch Stack

Aguarde a criação do ambiente

_images/sg_03.png

Pronto! Já possuimos nossa instância com o Jupyter configurado e pronto para nossa exploração.

No console da AWS procure pelo serviço Amazon SageMaker

_images/sg_011.png

Na página do Amazon SageMaker, ao lado esquerdo, clique em Notebook instances

_images/sg_02.png

Para acessar a instância criada clique em Open Jupyter

_images/sg_041.png _images/sg_05.png

O repositório com o conteúdo do workshop já foi clonado para a instância. Agora iremos abrir nosso primeiro notebook.

No ambiente Jupyter vá para a pasta labs/01-sagemaker-introduction e abra o arquivo sagemaker-introduction-01.ipynb

Leia e execute cada estágio do notebook em Python clicando em Run ou através do atalho Shift+Enter.

_images/sg_061.png

Rotulação dos dados com Ground Truth

Como vimos no tópico anterior, rapidamente lançamos um ambiente de desenvolvimento em Jupyter e exploramos brevemente nosso dataset. Para esse workshop iremos trabalhar com um problema de detecção de objetos utilizando algoritmos supervisionados.

Nota

A aprendizagem supervisionada é útil nos casos em que uma propriedade (rótulo) está disponível para um determinado conjunto de dados (conjunto de treinamento).

Neste exemplo, vamos utilizar outro dataset público «500 Images of the Rear View». Iremos demonstrar como é possível gerar rótulos em nosso dataset com o auxílio do Amazon SageMaker Ground Truth.

Para começar, precisamos efetuar o download do dataset, para isso, abra o terminal do Jupyter notebook e execute os comandos:

cd SageMaker
cd sagemaker-101-workshop/labs/01-sagemaker-introduction
wget www.zemris.fer.hr/projects/LicensePlates/english/baza_slika.zip
mkdir datasetcars
find . -name "baza_slika.zip" -type f -exec unzip -jd "datasetcars/" "{}" "*.jpg" \;

Modifique o primeiro notebook que utilizamos para fazer o upload das imagens em um bucket do Amazon S3. Em seguida, vamos criar uma força de trabalho para a rotulação. Vá para a console do Amazon SageMaker e clique em Labeling workforces.

_images/sg_08.png

Vá para a aba Private, clique em Create private team e coloque o nome de aws-sagemaker-workshop-team, finalize a criação.

_images/sg_09.png

Entre no time e adicione novos especialistas clicando em Add workers to team, digite seu e-mail.

_images/sg_10.png

Com os especialistas registrados, podemos criar o trabalho de rotulação. Ao lado esquerdo, clique em Labeling jobs.

_images/sg_11.png

Selecione Create labeling job e coloque o nome de aws-workshop-cars. Adicione o caminho do bucket que você efetuou o upload do dataset, selecione Image como Data Type e crie uma nova Role. Após isso, clique em Complete data setup.

_images/sg_12.png

Para a task type selecione Bounding Box.

Na página seguinte iremos selecionar o time de especialistas que criamos anteriormente. Na configuração da ferramente apenas adicione uma label com o nome de placa.

_images/sg_13.png

Os especialistas irão receber um e-mail com acesso a plataforma web para efetuar a rotulação. Após finalizado, podemos efetuar o treinamento do modelo.

No ambiente Jupyter vá para a pasta labs/01-sagemaker-introduction e abra o arquivo car-plate-recognition.ipynb

Leia e execute cada estágio do notebook em Python clicando em Run ou através do atalho Shift+Enter.

Treinamento e Inferência com algoritmos built-in

Agora que já possuimos os dados para o treinamento, iremos utilizar um algoritmo built-in do Amazon SageMaker chamado Image Classification. Conseguimos resolver muitos problemas com os algoritmos built-in e sem a necessidade de ter o conhecimento de um framework de Machine Learning e nem desenvolver um algoritmo.

No notebook iremos definir os hiperparâmetros, as configurações de treinamento e iremos iniciar um treinamento distribuído através das APIs do Amazon SageMaker. Após a finalização do treinamento podemos criar um endpoint de inferência gerenciado pelo próprio Amazon SageMaker.

Para prosseguir, no ambiente Jupyter já configurado vá para a pasta labs/01-sagemaker-introduction e abra o notebook sagemaker-introduction-02.ipynb. Leia e execute cada passo do notebook.

_images/sg_071.png

Chamadas para o SageMaker em um notebook local (opcional)

Podemos também, através de um notebook local efetuar chamadas para o Amazon Sagemaker. Assim, conseguimos fazer toda a exploração e testes localmente e utilizamos o Amazon SageMaker para treinar e hospedar nosso modelo.

Para isso, é necessário configurar as credenciais de acesso da AWS em sua máquina. Siga nossa documentação para instalar o AWS Cli: https://docs.aws.amazon.com/pt_br/cli/latest/userguide/install-cliv2.html

Nota

O usuário configurado deve possuir acesso ao Amazon SageMaker e ao Amazon S3.

Após isso, instale o Jupyter e as dependências localmente e execute novamente o notebook anterior.

Consumindo nosso modelo

Com o endpoint de treinamento ativo podemos efetuar inferências realizando chamadas de API com os diferentes SDKs que a AWS disponibiliza. Além da criação do endpoint de inferência, é possível trabalhar com processamento assíncrono utilizando a API de Batch Transform.

Para demonstrar o consumo do modelo, podemos executar um exemplo simples em Python utilizando o SDK Boto3.

1.Entre na pasta labs/01-sagemaker-introduction

2.Instale as dependências no ambiente virtual

pip install virtualenv
virtualenv venv
source venv/bin/activate
pip install -r requirements

3.Execute o script

python call_sagemaker.py