Salta para o conteúdo

Um guia para implementar YOLOv8 em Amazon SageMaker Endpoints

A implantação de modelos avançados de visão computacional como Ultralytics' YOLOv8 no Amazon SageMaker Endpoints abre uma ampla gama de possibilidades para várias aplicações de aprendizado de máquina. A chave para utilizar eficazmente estes modelos reside na compreensão dos seus processos de instalação, configuração e implementação. O YOLOv8 torna-se ainda mais poderoso quando integrado na perfeição com o Amazon SageMaker, um serviço de aprendizagem automática robusto e escalável da AWS.

Este guia irá guiá-lo passo a passo pelo processo de implantação dos modelos YOLOv8 PyTorch no Amazon SageMaker Endpoints. Aprenderás o essencial para preparar o teu ambiente AWS, configurar o modelo adequadamente e usar ferramentas como o AWS CloudFormation e o AWS Cloud Development Kit (CDK) para a implementação.

Amazon SageMaker

Visão geral do Amazon SageMaker

O Amazon SageMaker é um serviço de aprendizagem automática da Amazon Web Services (AWS) que simplifica o processo de criação, formação e implementação de modelos de aprendizagem automática. Fornece uma vasta gama de ferramentas para lidar com vários aspectos dos fluxos de trabalho de aprendizagem automática. Inclui funcionalidades automatizadas para ajustar modelos, opções para treinar modelos em escala e métodos simples para implementar modelos na produção. O SageMaker suporta estruturas populares de aprendizagem automática, oferecendo a flexibilidade necessária para diversos projectos. As suas funcionalidades também abrangem a rotulagem de dados, a gestão de fluxos de trabalho e a análise de desempenho.

Implantação de YOLOv8 em Amazon SageMaker Endpoints

A implementação do YOLOv8 no Amazon SageMaker permite-te utilizar o seu ambiente gerido para inferência em tempo real e tirar partido de funcionalidades como o escalonamento automático. Dá uma olhada na arquitetura AWS abaixo.

Arquitetura AWS

Passo 1: Configurar o teu ambiente AWS

Primeiro, certifica-te de que tens os seguintes pré-requisitos:

  • Uma conta AWS: Se ainda não tiveres uma, inscreve-te numa conta AWS.

  • Funções de IAM configuradas: Precisarás de uma função IAM com as permissões necessárias para o Amazon SageMaker, AWS CloudFormation e Amazon S3. Esta função deve ter políticas que lhe permitam aceder a estes serviços.

  • AWS CLI: Se ainda não estiver instalado, transfere e instala o AWS Command Line Interface (CLI) e configura-o com os detalhes da tua conta. Segue as instruções do AWS CLI para a instalação.

  • AWS CDK: se ainda não estiver instalado, instala o AWS Cloud Development Kit (CDK), que será usado para criar o script da implantação. Segue as instruções do AWS CDK para a instalação.

  • Cota de serviço adequada: Confirma que tens quotas suficientes para dois recursos separados no Amazon SageMaker: um para ml.m5.4xlarge para a utilização do ponto final e outro para ml.m5.4xlarge para a utilização da instância do bloco de notas. Cada um destes requer um mínimo de um valor de quota. Se as tuas quotas actuais estiverem abaixo deste requisito, é importante solicitar um aumento para cada uma delas. Podes pedir um aumento de quota seguindo as instruções detalhadas na secção Documentação das quotas de serviço do AWS.

Passo 2: Clona o repositório YOLOv8 SageMaker

A próxima etapa é clonar o repositório específico do AWS que contém os recursos para implantar o YOLOv8 no SageMaker. Esse repositório, hospedado no GitHub, inclui os scripts CDK e os arquivos de configuração necessários.

  • Clona o repositório do GitHub: Executa o seguinte comando no teu terminal para clonar o repositório host-yolov8-on-sagemaker-endpoint:
git clone https://github.com/aws-samples/host-yolov8-on-sagemaker-endpoint.git
  • Navega até ao diretório clonado: Muda o teu diretório para o repositório clonado:
cd host-yolov8-on-sagemaker-endpoint/yolov8-pytorch-cdk

Passo 3: Configura o ambiente CDK

Agora que tens o código necessário, configura o teu ambiente para a implementação com o AWS CDK.

  • Cria um ambiente virtual Python : Isola o ambiente e as dependências do Python . Executa:
python3 -m venv .venv
  • Ativar o ambiente virtual:
source .venv/bin/activate
  • Instala as dependências: Instala as dependências necessárias do Python para o projeto:
pip3 install -r requirements.txt
  • Atualiza a biblioteca do AWS CDK: Certifica-te de que tens a versão mais recente da biblioteca AWS CDK:
pip install --upgrade aws-cdk-lib

Etapa 4: criar a pilha do AWS CloudFormation

  • Sintetiza o aplicativo CDK: Gera o modelo do AWS CloudFormation a partir do teu código CDK:
cdk synth
  • Inicializa o aplicativo CDK: Prepara seu ambiente AWS para a implantação do CDK:
cdk bootstrap
  • Implanta a pilha: Cria os recursos AWS necessários e implementa o teu modelo:
cdk deploy

Passo 5: Implementa o modelo YOLOv8

Antes de mergulhar nas instruções de implementação, não te esqueças de verificar a gama de modelosYOLOv8 oferecidos por Ultralytics. Isto ajudar-te-á a escolher o modelo mais adequado aos requisitos do teu projeto.

Depois de criar o AWS CloudFormation Stack, o próximo passo é implantar YOLOv8.

  • Abre a Instância do Notebook: Vai para o Console do AWS e navega até o serviço Amazon SageMaker. Seleciona "Instâncias de notebook" no painel e, em seguida, localiza a instância de notebook que foi criada pelo script de implantação do CDK. Abre a instância do notebook para acessar o ambiente Jupyter.

  • Acede e modifica o inference.py: Depois de abrir a instância do notebook do SageMaker no Jupyter, localiza o arquivo inference.py. Edita a função output_fn em inference.py como mostrado abaixo e salva suas alterações no script, garantindo que não haja erros de sintaxe.

import json

def output_fn(prediction_output, content_type):
    """Formats model outputs as JSON string according to content_type, extracting attributes like boxes, masks, keypoints."""
    print("Executing output_fn from inference.py ...")
    infer = {}
    for result in prediction_output:
        if result.boxes is not None:
            infer['boxes'] = result.boxes.numpy().data.tolist()
        if result.masks is not None:
            infer['masks'] = result.masks.numpy().data.tolist()
        if result.keypoints is not None:
            infer['keypoints'] = result.keypoints.numpy().data.tolist()
        if result.obb is not None:
            infer['obb'] = result.obb.numpy().data.tolist()
        if result.probs is not None:
            infer['probs'] = result.probs.numpy().data.tolist()
    return json.dumps(infer)
  • Implantar o ponto de extremidade usando 1_DeployEndpoint.ipynb: no ambiente Jupyter, abra o notebook 1_DeployEndpoint.ipynb localizado no diretório sm-notebook. Siga as instruções no notebook e execute as células para baixar o modelo YOLOv8 , empacote-o com o código de inferência atualizado e carregue-o em um bucket do Amazon S3. O notebook irá guiá-lo na criação e implantação de um endpoint SageMaker para o modelo YOLOv8 .

Passo 6: Testar a tua implementação

Agora que o teu modelo YOLOv8 está implementado, é importante testar o seu desempenho e funcionalidade.

  • Abre o caderno de teste: No mesmo ambiente Jupyter, localiza e abre o notebook 2_TestEndpoint.ipynb, também no diretório sm-notebook.

  • Executa o caderno de teste: Segue as instruções no notebook para testar o endpoint SageMaker implantado. Isso inclui o envio de uma imagem para o endpoint e a execução de inferências. Em seguida, traça o resultado para visualizar o desempenho e a precisão do modelo, como mostrado abaixo.

Resultados dos testes YOLOv8

  • Recursos de limpeza: O caderno de testes também o guiará pelo processo de limpeza do ponto de extremidade e do modelo hospedado. Este é um passo importante para gerir os custos e os recursos de forma eficaz, especialmente se não planeares utilizar o modelo implementado imediatamente.

Etapa 7: Acompanhamento e gestão

Após o teste, a monitorização e a gestão contínuas do teu modelo implementado são essenciais.

  • Monitoriza com o Amazon CloudWatch: Verifica regularmente o desempenho e a integridade do seu endpoint SageMaker usando o Amazon CloudWatch.

  • Gerenciar o ponto de extremidade: Utiliza a consola do SageMaker para a gestão contínua do ponto final. Isso inclui dimensionar, atualizar ou reimplantar o modelo conforme necessário.

Ao concluir essas etapas, terás implantado e testado com êxito um modelo YOLOv8 no Amazon SageMaker Endpoints. Este processo não só te dá experiência prática na utilização dos serviços AWS para a implementação de aprendizagem automática, como também estabelece as bases para a implementação de outros modelos avançados no futuro.

Resumo

Este guia levou-te passo a passo através da implantação de YOLOv8 no Amazon SageMaker Endpoints usando o AWS CloudFormation e o AWS Cloud Development Kit (CDK). O processo inclui clonar o repositório GitHub necessário, configurar o ambiente CDK, implantar o modelo usando os serviços AWS e testar seu desempenho no SageMaker.

Para mais detalhes técnicos, consulta este artigo no Blogue de aprendizagem automática da AWS. Também podes consultar a documentação oficial do Amazon SageMaker para obteres mais informações sobre várias características e funcionalidades.

Estás interessado em saber mais sobre as diferentes integrações do YOLOv8 ? Visita a página do guia de integraçõesUltralytics para descobrir ferramentas e capacidades adicionais que podem melhorar os teus projectos de aprendizagem automática.



Criado em 2024-01-04, Atualizado em 2024-05-03
Autores: glenn-jocher (3), abirami-vina (1)

Comentários