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 do IAM configuradas: você precisará de uma função do IAM com as permissões necessárias para 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):
    """Formats model outputs as JSON string, 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.

  • Execute o notebook de teste: siga as instruções do notebook para testar o endpoint SageMaker implantado. Isso inclui o envio de uma imagem ao endpoint e a execução de inferências. Em seguida, você plotará a saída para visualizar o desempenho e a precisão do modelo, conforme 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.

FAQ

Como posso implementar o modelo Ultralytics YOLOv8 no Amazon SageMaker Endpoints?

Para implementar o modelo Ultralytics YOLOv8 no Amazon SageMaker Endpoints, segue estes passos:

  1. Configurar o ambiente do AWS: Certifica-te de que tens uma conta AWS, funções IAM com as permissões necessárias e o AWS CLI configurado. Instala o AWS CDK se ainda não o tiver feito (consulte as instruções do AWS CDK).
  2. Clona o YOLOv8 Repositório SageMaker:
    git clone https://github.com/aws-samples/host-yolov8-on-sagemaker-endpoint.git
    cd host-yolov8-on-sagemaker-endpoint/yolov8-pytorch-cdk
    
  3. Configura o ambiente CDK: Cria um ambiente virtual Python , ativa-o, instala dependências e actualiza a biblioteca AWS CDK.
    python3 -m venv .venv
    source .venv/bin/activate
    pip3 install -r requirements.txt
    pip install --upgrade aws-cdk-lib
    
  4. Implantar usando o AWS CDK: Sintetiza e implanta a pilha do CloudFormation, inicializa o ambiente.
    cdk synth
    cdk bootstrap
    cdk deploy
    

Para mais informações, consulta a secção de documentação.

Quais são os pré-requisitos para implantar o YOLOv8 no Amazon SageMaker?

Para implantar o YOLOv8 no Amazon SageMaker, certifica-te de que tens os seguintes pré-requisitos:

  1. Conta AWS: Conta AWS ativa(inscreve-te aqui).
  2. Funções de IAM: Funções IAM configuradas com permissões para SageMaker, CloudFormation e Amazon S3.
  3. AWS CLI: Instalou e configurou a interface de linha de comando do AWS(guia de instalação do AWS CLI ).
  4. AWS CDK: instala o AWS Cloud Development Kit(guia de configuração do CDK).
  5. Quotas de serviço: Quotas suficientes para ml.m5.4xlarge para a utilização do ponto de extremidade e do computador portátil (solicitar um aumento da quota).

Para uma configuração detalhada, consulta esta secção.

Por que razão devo utilizar Ultralytics YOLOv8 no Amazon SageMaker?

A utilização de Ultralytics YOLOv8 no Amazon SageMaker oferece várias vantagens:

  1. Escalabilidade e gestão: O SageMaker fornece um ambiente gerenciado com recursos como escalonamento automático, que ajuda nas necessidades de inferência em tempo real.
  2. Integração com os serviços do AWS: Integra-se perfeitamente com outros serviços do AWS, como o S3 para armazenamento de dados, o CloudFormation para infraestrutura como código e o CloudWatch para monitoramento.
  3. Facilidade de implantação: Configuração simplificada usando scripts do AWS CDK e processos de implantação otimizados.
  4. Desempenho: Aproveita a infraestrutura de alto desempenho do Amazon SageMaker para executar tarefas de inferência em grande escala de forma eficiente.

Explora mais sobre as vantagens da utilização do SageMaker na secção de introdução.

Posso personalizar a lógica de inferência para YOLOv8 no Amazon SageMaker?

Sim, podes personalizar a lógica de inferência para YOLOv8 no Amazon SageMaker:

  1. Modifica inference.py: Localiza e personaliza o output_fn na função inference.py para personalizar os formatos de saída.

    import json
    
    
    def output_fn(prediction_output):
        """Formats model outputs as JSON string, extracting attributes like boxes, masks, keypoints."""
        infer = {}
        for result in prediction_output:
            if result.boxes is not None:
                infer["boxes"] = result.boxes.numpy().data.tolist()
            # Add more processing logic if necessary
        return json.dumps(infer)
    
  2. Implementa o modelo atualizado: Certifica-te de que reimplementas o modelo utilizando os notebooks Jupyter fornecidos (1_DeployEndpoint.ipynb) para incluir estas alterações.

Consulta as etapas detalhadas para a implantação do modelo modificado.

Como posso testar o modelo YOLOv8 implementado no Amazon SageMaker?

Para testar o modelo YOLOv8 implantado no Amazon SageMaker:

  1. Abre o caderno de testes: Localiza o 2_TestEndpoint.ipynb no ambiente Jupyter do SageMaker.
  2. Executa o bloco de notas: Segue as instruções do bloco de notas para enviar uma imagem para o ponto final, efetuar a inferência e apresentar os resultados.
  3. Visualiza os resultados: Utiliza as funcionalidades de plotagem incorporadas para visualizar métricas de desempenho, tais como caixas delimitadoras em torno de objectos detectados.

Para obteres instruções completas sobre os testes, visita a secção de testes.



Criado em 2024-01-04, Atualizado em 2024-07-05
Autores: glenn-jocher (7), ambitious-octopus (1), sergiuwaxmann (1), abirami-vina (1)

Comentários