Vai al contenuto

Guida alla distribuzione di YOLOv8 sugli endpoint di Amazon SageMaker

Distribuzione di modelli avanzati di visione artificiale come Ultralytics' YOLOv8 su Amazon SageMaker Endpoints apre un'ampia gamma di possibilità per varie applicazioni di machine learning. La chiave per utilizzare in modo efficace questi modelli risiede nella comprensione dei processi di installazione, configurazione e distribuzione. YOLOv8 diventa ancora più potente se integrato perfettamente con Amazon SageMaker, un servizio di machine learning robusto e scalabile di AWS.

Questa guida ti illustra passo dopo passo il processo di distribuzione dei modelli YOLOv8 PyTorch su Amazon SageMaker Endpoints. Imparerai gli elementi essenziali per preparare l'ambiente AWS, configurare il modello in modo appropriato e utilizzare strumenti come AWS CloudFormation e AWS Cloud Development Kit (CDK) per la distribuzione.

Amazon SageMaker

Panoramica di Amazon SageMaker

Amazon SageMaker è un servizio di apprendimento automatico di Amazon Web Services (AWS) che semplifica il processo di costruzione, formazione e distribuzione di modelli di apprendimento automatico. Offre un'ampia gamma di strumenti per gestire vari aspetti dei flussi di lavoro di apprendimento automatico. Tra questi ci sono funzioni automatizzate per la messa a punto dei modelli, opzioni per l'addestramento dei modelli in scala e metodi semplici per la distribuzione dei modelli in produzione. SageMaker supporta i più diffusi framework di apprendimento automatico, offrendo la flessibilità necessaria per diversi progetti. Le sue funzioni riguardano anche l'etichettatura dei dati, la gestione dei flussi di lavoro e l'analisi delle prestazioni.

Distribuzione di YOLOv8 sugli endpoint di Amazon SageMaker

La distribuzione di YOLOv8 su Amazon SageMaker ti permette di utilizzare il suo ambiente gestito per l'inferenza in tempo reale e di sfruttare funzionalità come l'autoscaling. Dai un'occhiata all'architettura di AWS qui sotto.

Architettura AWS

Passo 1: Configurare l'ambiente AWS

Per prima cosa, assicurati di avere i seguenti prerequisiti:

  • Un account AWS: Se non ne hai già uno, iscriviti a un account AWS.

  • Ruoli IAM configurati: avrai bisogno di un ruolo IAM con le autorizzazioni necessarie per Amazon SageMaker, AWS CloudFormation e Amazon S3. Questo ruolo deve avere criteri che gli consentano di accedere a questi servizi.

  • AWS CLI: Se non è già installata, scarica e installa l'interfaccia a riga di comando AWS (CLI) e configurala con i dati del tuo account. Segui le istruzioni di AWS CLI per l'installazione.

  • AWS CDK: se non è già installato, installa l'AWS Cloud Development Kit (CDK), che sarà utilizzato per lo scripting della distribuzione. Segui le istruzioni di AWS CDK per l'installazione.

  • Quota di servizio adeguata: Conferma di avere quote sufficienti per due risorse distinte in Amazon SageMaker: una per ml.m5.4xlarge per l'utilizzo degli endpoint e un'altra per ml.m5.4xlarge per l'utilizzo dell'istanza del notebook. Ognuno di questi richiede un valore minimo di quota. Se le tue quote attuali sono inferiori a questo requisito, è importante richiedere un aumento per ciascuna di esse. Puoi richiedere un aumento delle quote seguendo le istruzioni dettagliate riportate nella sezione Documentazione sulle quote dei servizi AWS.

Passo 2: Clonare il repository di YOLOv8 SageMaker

Il passo successivo consiste nel clonare il repository AWS specifico che contiene le risorse per la distribuzione di YOLOv8 su SageMaker. Questo repository, ospitato su GitHub, include gli script CDK e i file di configurazione necessari.

  • Clona il repository GitHub: Esegui il seguente comando nel tuo terminale per clonare il repository host-yolov8-on-sagemaker-endpoint:
git clone https://github.com/aws-samples/host-yolov8-on-sagemaker-endpoint.git
  • Naviga nella directory clonata: Cambia la tua directory nel repository clonato:
cd host-yolov8-on-sagemaker-endpoint/yolov8-pytorch-cdk

Passo 3: Configurare l'ambiente CDK

Ora che hai il codice necessario, configura l'ambiente per la distribuzione con AWS CDK.

  • Crea un ambiente virtuale Python : In questo modo si isolano l'ambiente e le dipendenze di Python . Esegui:
python3 -m venv .venv
  • Attiva l'ambiente virtuale:
source .venv/bin/activate
  • Installa le dipendenze: Installa le dipendenze di Python necessarie per il progetto:
pip3 install -r requirements.txt
  • Aggiorna la libreria CDK di AWS: Assicurati di avere l'ultima versione della libreria AWS CDK:
pip install --upgrade aws-cdk-lib

Passo 4: Creare lo stack AWS CloudFormation

  • Sintetizza l'applicazione CDK: Genera il modello AWS CloudFormation dal tuo codice CDK:
cdk synth
  • Esegui il bootstrap dell'applicazione CDK: Prepara l'ambiente AWS per la distribuzione di CDK:
cdk bootstrap
  • Distribuisci lo stack: Crea le risorse AWS necessarie e distribuisci il tuo modello:
cdk deploy

Passo 5: Distribuzione del modello YOLOv8

Prima di immergerti nelle istruzioni per l'installazione, assicurati di dare un'occhiata alla gamma di modelli diYOLOv8 offerti da Ultralytics. Questo ti aiuterà a scegliere il modello più adatto alle esigenze del tuo progetto.

Dopo aver creato lo stack di AWS CloudFormation, il passo successivo è quello di distribuire YOLOv8.

  • Apri l'istanza Notebook: Vai alla Console AWS e naviga nel servizio Amazon SageMaker. Seleziona "Istanze Notebook" dalla dashboard, quindi individua l'istanza notebook creata dallo script di distribuzione del CDK. Apri l'istanza del notebook per accedere all'ambiente Jupyter.

  • Accedi e modifica il file inference.py: Dopo aver aperto l'istanza del notebook SageMaker in Jupyter, individua il file inference.py. Modifica la funzione output_fn in inference.py come mostrato di seguito e salva le modifiche allo script, assicurandoti che non ci siano errori di sintassi.

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)
  • Distribuire l'endpoint usando 1_DeployEndpoint.ipynb: nell'ambiente Jupyter, apri il blocco note 1_DeployEndpoint.ipynb situato nella directory sm-notebook. Segui le istruzioni del notebook ed esegui le celle per scaricare il modello YOLOv8 , impacchettarlo con il codice di inferenza aggiornato e caricarlo su un bucket Amazon S3. Il notebook ti guiderà nella creazione e nella distribuzione di un endpoint SageMaker per il modello YOLOv8 .

Passo 6: Testare l'installazione

Ora che il tuo modello YOLOv8 è stato implementato, è importante testarne le prestazioni e le funzionalità.

  • Apri il quaderno di prova: Nello stesso ambiente Jupyter, individua e apri il blocco note 2_TestEndpoint.ipynb, sempre nella directory sm-notebook.

  • Esegui il notebook di test: segui le istruzioni all'interno del notebook per testare l'endpoint SageMaker distribuito. Ciò include l'invio di un'immagine all'endpoint e l'esecuzione di inferenze. Quindi, si traccerà l'output per visualizzare le prestazioni e l'accuratezza del modello, come illustrato di seguito.

Risultati dei test YOLOv8

  • Risorse per la pulizia: Il quaderno di prova ti guiderà anche nel processo di pulizia dell'endpoint e del modello ospitato. Si tratta di una fase importante per gestire in modo efficace i costi e le risorse, soprattutto se non intendi utilizzare immediatamente il modello distribuito.

Fase 7: Monitoraggio e gestione

Dopo il test, il monitoraggio continuo e la gestione del modello implementato sono essenziali.

  • Monitoraggio con Amazon CloudWatch: Controlla regolarmente le prestazioni e lo stato di salute del tuo endpoint SageMaker utilizzando Amazon CloudWatch.

  • Gestisci l'endpoint: Usa la console di SageMaker per la gestione continua dell'endpoint. Questo include il ridimensionamento, l'aggiornamento o la ridistribuzione del modello secondo le necessità.

Completando questi passaggi, avrai implementato e testato con successo un modello YOLOv8 su Amazon SageMaker Endpoints. Questo processo non solo ti permette di acquisire esperienza pratica nell'utilizzo dei servizi AWS per l'apprendimento automatico, ma pone anche le basi per l'implementazione di altri modelli avanzati in futuro.

Sommario

Questa guida ti spiega passo dopo passo come distribuire YOLOv8 su Amazon SageMaker Endpoints utilizzando AWS CloudFormation e AWS Cloud Development Kit (CDK). Il processo comprende la clonazione del repository GitHub necessario, la configurazione dell'ambiente CDK, la distribuzione del modello utilizzando i servizi AWS e il test delle sue prestazioni su SageMaker.

Per maggiori dettagli tecnici, consulta questo articolo sul blog di AWS Machine Learning. Puoi anche consultare la documentazione ufficiale di Amazon SageMaker per maggiori informazioni sulle varie caratteristiche e funzionalità.

Sei interessato a saperne di più sulle diverse integrazioni di YOLOv8 ? Visita la pagina della guida alle integrazioni diUltralytics per scoprire altri strumenti e funzionalità che possono migliorare i tuoi progetti di apprendimento automatico.

DOMANDE FREQUENTI

Come faccio a distribuire il modello Ultralytics YOLOv8 su Amazon SageMaker Endpoints?

Per distribuire il modello Ultralytics YOLOv8 su Amazon SageMaker Endpoints, segui questi passaggi:

  1. Configura il tuo ambiente AWS: Assicurati di avere un account AWS, ruoli IAM con le autorizzazioni necessarie e il sito AWS CLI configurato. Installa AWS CDK se non l'hai ancora fatto (consulta le istruzioni di AWS CDK).
  2. Clona il repository YOLOv8 SageMaker:
    git clone https://github.com/aws-samples/host-yolov8-on-sagemaker-endpoint.git
    cd host-yolov8-on-sagemaker-endpoint/yolov8-pytorch-cdk
    
  3. Configurare l'ambiente CDK: Crea un ambiente virtuale Python , attivalo, installa le dipendenze e aggiorna la libreria CDK di AWS.
    python3 -m venv .venv
    source .venv/bin/activate
    pip3 install -r requirements.txt
    pip install --upgrade aws-cdk-lib
    
  4. Distribuire con AWS CDK: Sintetizzare e distribuire lo stack CloudFormation, avviare l'ambiente.
    cdk synth
    cdk bootstrap
    cdk deploy
    

Per ulteriori dettagli, consulta la sezione della documentazione.

Quali sono i prerequisiti per distribuire YOLOv8 su Amazon SageMaker?

Per distribuire YOLOv8 su Amazon SageMaker, assicurati di avere i seguenti prerequisiti:

  1. Account AWS: Account AWS attivo(iscriviti qui).
  2. Ruoli IAM: Configurazione di ruoli IAM con autorizzazioni per SageMaker, CloudFormation e Amazon S3.
  3. AWS CLI: Installato e configurato AWS Command Line Interface(guida all'installazione di AWS CLI ).
  4. AWS CDK: installato AWS Cloud Development Kit(guida all'installazione del CDK).
  5. Quote di servizio: Quote sufficienti per ml.m5.4xlarge per l'utilizzo di endpoint e notebook (richiedere un aumento della quota).

Per una configurazione dettagliata, consulta questa sezione.

Perché dovrei utilizzare Ultralytics YOLOv8 su Amazon SageMaker?

Utilizzare Ultralytics YOLOv8 su Amazon SageMaker offre diversi vantaggi:

  1. Scalabilità e gestione: SageMaker offre un ambiente gestito con funzioni come l'autoscaling, che aiuta a soddisfare le esigenze di inferenza in tempo reale.
  2. Integrazione con i servizi AWS: Integrazione perfetta con altri servizi AWS, come S3 per l'archiviazione dei dati, CloudFormation per l'infrastruttura come codice e CloudWatch per il monitoraggio.
  3. Facilità di distribuzione: Configurazione semplificata grazie agli script di AWS CDK e processi di distribuzione ottimizzati.
  4. Prestazioni: Sfrutta l'infrastruttura ad alte prestazioni di Amazon SageMaker per eseguire in modo efficiente attività di inferenza su larga scala.

Scopri i vantaggi dell'utilizzo di SageMaker nella sezione introduttiva.

Posso personalizzare la logica di inferenza per YOLOv8 su Amazon SageMaker?

Sì, puoi personalizzare la logica di inferenza di YOLOv8 su Amazon SageMaker:

  1. Modifica inference.py: Individua e personalizza la sezione output_fn nella funzione inference.py per personalizzare i formati di output.

    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. Distribuire il modello aggiornato: Assicurati di distribuire nuovamente il modello utilizzando i notebook Jupyter forniti (1_DeployEndpoint.ipynb) per includere queste modifiche.

Consulta i passi dettagliati per distribuire il modello modificato.

Come posso testare il modello YOLOv8 distribuito su Amazon SageMaker?

Per testare il modello YOLOv8 distribuito su Amazon SageMaker:

  1. Apri il Quaderno di prova: Individuare la posizione 2_TestEndpoint.ipynb nell'ambiente Jupyter di SageMaker.
  2. Esegui il notebook: Segui le istruzioni del notebook per inviare un'immagine all'endpoint, eseguire l'inferenza e visualizzare i risultati.
  3. Visualizza i risultati: Utilizza le funzionalità di plottaggio integrate per visualizzare le metriche delle prestazioni, come i riquadri di delimitazione degli oggetti rilevati.

Per le istruzioni complete sui test, visita la sezione dedicata ai test.



Creato 2024-01-04, Aggiornato 2024-07-05
Autori: glenn-jocher (7), ambitious-octopus (1), sergiuwaxmann (1), abirami-vina (1)

Commenti