Salta para o conte√ļdo

Um guia para implementar YOLOv8 em Amazon SageMaker Endpoints

Deploying advanced computer vision models like Ultralytics' YOLOv8 on Amazon SageMaker Endpoints opens up a wide range of possibilities for various machine learning applications. The key to effectively using these models lies in understanding their setup, configuration, and deployment processes. YOLOv8 becomes even more powerful when integrated seamlessly with Amazon SageMaker, a robust and scalable machine learning service by 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.

  • Configured IAM Roles: You'll need an IAM role with the necessary permissions for Amazon SageMaker, AWS CloudFormation, and Amazon S3. This role should have policies that allow it to access these services.

  • 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.

  • Run the Test Notebook: Follow the instructions within the notebook to test the deployed SageMaker endpoint. This includes sending an image to the endpoint and running inferences. Then, you'll plot the output to visualize the model's performance and accuracy, as shown below.

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.



Created 2024-01-04, Updated 2024-06-02
Authors: glenn-jocher (6), sergiuwaxmann (1), abirami-vina (1)

Coment√°rios