Vai al contenuto

Una guida per la distribuzione di YOLO11 su endpoint Amazon SageMaker

La distribuzione di modelli avanzati di computer vision come YOLO11 di Ultralytics su Amazon SageMaker Endpoints apre una vasta gamma di possibilità per varie applicazioni di machine learning. La chiave per utilizzare efficacemente questi modelli risiede nella comprensione della loro configurazione e dei processi di distribuzione. YOLO11 diventa ancora più potente quando integrato perfettamente con Amazon SageMaker, un servizio di machine learning robusto e scalabile di AWS.

Questa guida ti accompagnerà passo dopo passo nel processo di distribuzione dei modelli PyTorch YOLO11 su Amazon SageMaker Endpoints. Imparerai le basi della preparazione del tuo ambiente AWS, della configurazione appropriata del modello e dell'utilizzo di strumenti come AWS CloudFormation e AWS Cloud Development Kit (CDK) per la distribuzione.

Amazon SageMaker

Panoramica di Amazon SageMaker

Amazon SageMaker è un servizio di machine learning di Amazon Web Services (AWS) che semplifica il processo di creazione, addestramento e implementazione di modelli di machine learning. Fornisce un'ampia gamma di strumenti per la gestione di vari aspetti dei flussi di lavoro di machine learning. Ciò include funzionalità automatizzate per la messa a punto dei modelli, opzioni per l'addestramento di modelli su larga scala e metodi semplici per l'implementazione di modelli in produzione. SageMaker supporta framework di machine learning popolari, offrendo la flessibilità necessaria per diversi progetti. Le sue funzionalità coprono anche l'etichettatura dei dati, la gestione del flusso di lavoro e l'analisi delle prestazioni.

Distribuzione di YOLO11 su Amazon SageMaker Endpoints

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

Architettura AWS

Passaggio 1: Configura il tuo ambiente AWS

Innanzitutto, assicurati di avere i seguenti prerequisiti:

  • Un account AWS: se non ne hai già uno, registrati per 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 dovrebbe avere policy che gli consentano di accedere a questi servizi.

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

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

  • Quota di servizio adeguata: verifica di disporre di quote sufficienti per due risorse separate in Amazon SageMaker: una per ml.m5.4xlarge per l'utilizzo dell'endpoint e un altro per ml.m5.4xlarge per l'utilizzo dell'istanza notebook. Ognuno di questi richiede un valore di quota minimo. Se le tue quote attuali sono inferiori a questo requisito, è importante richiedere un aumento per ciascuna. Puoi richiedere un aumento della quota seguendo le istruzioni dettagliate nel Documentazione di AWS Service Quotas.

Passaggio 2: Clona il repository YOLO11 SageMaker

Il passaggio successivo consiste nel clonare lo specifico repository AWS che contiene le risorse per la distribuzione di YOLO11 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
    
  • Spostarsi nella directory clonata: cambiare la directory nel repository clonato:

    cd host-yolov8-on-sagemaker-endpoint/yolov8-pytorch-cdk
    

Fase 3: Impostazione dell'ambiente CDK

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

  • Crea un ambiente virtuale Python: questo isola il tuo ambiente Python e le dipendenze. Esegui:

    python3 -m venv .venv
    
  • Attiva l'ambiente virtuale:

    source .venv/bin/activate
    
  • Installa le dipendenze: installa le dipendenze python richieste per il progetto:

    pip3 install -r requirements.txt
    
  • Aggiorna la libreria AWS CDK: assicurati di avere l'ultima versione della libreria AWS CDK:

    pip install --upgrade aws-cdk-lib
    

Fase 4: Creazione dello stack AWS CloudFormation

  • Sintetizza l'applicazione CDK: genera il modello AWS CloudFormation dal tuo codice CDK:

    cdk synth
    
  • Bootstrap dell'applicazione CDK: prepara il tuo ambiente AWS per il deployment di CDK:

    cdk bootstrap
    
  • Distribuisci lo stack: questo creerà le risorse AWS necessarie e distribuirà il tuo modello:

    cdk deploy
    

Fase 5: Distribuzione del modello YOLO

Prima di approfondire le istruzioni di implementazione, assicurati di controllare la gamma di modelli YOLO11 offerti da Ultralytics. Questo ti aiuterà a scegliere il modello più appropriato per i requisiti del tuo progetto.

Dopo aver creato l'AWS CloudFormation Stack, il passo successivo è distribuire YOLO11.

  • Apri l'istanza del notebook: vai alla console AWS e naviga al servizio Amazon SageMaker. Seleziona "Istanze notebook" dalla dashboard, quindi individua l'istanza notebook creata dallo script di deployment CDK. Apri l'istanza notebook per accedere all'ambiente Jupyter.

  • Accedere e modificare inference.py: dopo aver aperto l'istanza del notebook SageMaker in Jupyter, individuare il file inference.py. Modificare la funzione output_fn in inference.py come mostrato di seguito e salvare le modifiche allo script, assicurandosi 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)
    
  • Distribuisci l'endpoint utilizzando 1_DeployEndpoint.ipynb: nell'ambiente Jupyter, apri il notebook 1_DeployEndpoint.ipynb che si trova nella directory sm-notebook. Segui le istruzioni nel notebook ed esegui le celle per scaricare il modello YOLO11, impacchettalo con il codice di inferenza aggiornato e caricalo in un bucket Amazon S3. Il notebook ti guiderà attraverso la creazione e la distribuzione di un endpoint SageMaker per il modello YOLO11.

Passo 6: Test del tuo deployment

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

  • Apri il notebook di test: nello stesso ambiente Jupyter, individua e apri il notebook 2_TestEndpoint.ipynb, anch'esso 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, traccerai l'output per visualizzare le prestazioni e l'accuratezza del modello, come mostrato di seguito.

Risultati dei test YOLO11

  • Pulizia delle risorse: il notebook di test ti guiderà anche attraverso il processo di pulizia dell'endpoint e del modello ospitato. Questo è un passo importante per gestire i costi e le risorse in modo efficace, soprattutto se non prevedi di utilizzare immediatamente il modello distribuito.

Passo 7: Monitoraggio e gestione

Dopo il test, il monitoraggio e la gestione continui del modello distribuito sono essenziali.

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

  • Gestisci l'endpoint: utilizza la console SageMaker per la gestione continua dell'endpoint. Ciò include il ridimensionamento, l'aggiornamento o la ridistribuzione del modello come richiesto.

Completando questi passaggi, avrai distribuito e testato con successo un modello YOLO11 su Amazon SageMaker Endpoints. Questo processo non solo ti fornisce un'esperienza pratica nell'utilizzo dei servizi AWS per la distribuzione del machine learning, ma pone anche le basi per la distribuzione di altri modelli avanzati in futuro.

Riepilogo

Questa guida ti ha accompagnato passo dopo passo attraverso la distribuzione di YOLO11 su Amazon SageMaker Endpoints utilizzando AWS CloudFormation e AWS Cloud Development Kit (CDK). Il processo include 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, consultare questo articolo sul blog di AWS Machine Learning. Puoi anche consultare la Documentazione ufficiale di Amazon SageMaker per ulteriori approfondimenti su varie funzionalità.

Sei interessato a saperne di più sulle diverse integrazioni di YOLO11? Visita la pagina della guida alle integrazioni di Ultralytics per scoprire strumenti e funzionalità aggiuntive che possono migliorare i tuoi progetti di machine learning.

FAQ

Come posso distribuire il modello Ultralytics YOLO11 su Amazon SageMaker Endpoints?

Per distribuire il modello Ultralytics YOLO11 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 la CLI AWS configurata. Installa AWS CDK se non è già stato fatto (fai riferimento alle istruzioni di AWS CDK).
  2. Clona il repository YOLO11 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 l'ambiente CDK: Crea un ambiente virtuale python, attivalo, installa le dipendenze e aggiorna la libreria AWS CDK.
    python3 -m venv .venv
    source .venv/bin/activate
    pip3 install -r requirements.txt
    pip install --upgrade aws-cdk-lib
    
  4. Distribuisci utilizzando AWS CDK: Sintetizza e distribuisci lo stack CloudFormation, avvia l'ambiente.
    cdk synth
    cdk bootstrap
    cdk deploy
    

Per ulteriori dettagli, consultare la sezione della documentazione.

Quali sono i prerequisiti per il deployment di YOLO11 su Amazon SageMaker?

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

  1. Account AWS: Account AWS attivo (registrati qui).
  2. Ruoli IAM: ruoli IAM configurati con autorizzazioni per SageMaker, CloudFormation e Amazon S3.
  3. AWS CLI: Interfaccia a riga di comando AWS installata e configurata (guida all'installazione di AWS CLI).
  4. AWS CDK: AWS Cloud Development Kit installato (guida all'installazione di CDK).
  5. Quote di servizio: Quote sufficienti per ml.m5.4xlarge istanze sia per l'endpoint che per l'utilizzo del notebook (richiedi un aumento della quota).

Per una configurazione dettagliata, consultare questa sezione.

Perché dovrei usare Ultralytics YOLO11 su Amazon SageMaker?

L'utilizzo di Ultralytics YOLO11 su Amazon SageMaker offre diversi vantaggi:

  1. Scalabilità e gestione: SageMaker fornisce un ambiente gestito con funzionalità come lo scaling automatico, che aiuta nelle esigenze di inferenza in tempo reale.
  2. Integrazione con i servizi AWS: Integra senza problemi 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 implementazione: Configurazione semplificata tramite script AWS CDK e processi di implementazione ottimizzati.
  4. Performance: Sfrutta l'infrastruttura ad alte prestazioni di Amazon SageMaker per eseguire in modo efficiente attività di inferenza su larga scala.

Scopri di più sui vantaggi dell'utilizzo di SageMaker nella sezione introduttiva.

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

Sì, è possibile personalizzare la logica di inferenza per YOLO11 su Amazon SageMaker:

  1. Modifica inference.py: Individua e personalizza il output_fn funzione nel inference.py file 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. Distribuisci il modello aggiornato: Assicurati di ridistribuire il modello utilizzando i notebook Jupyter forniti (1_DeployEndpoint.ipynb) per includere queste modifiche.

Consulta i passaggi dettagliati per la distribuzione del modello modificato.

Come posso testare il modello YOLO11 distribuito su Amazon SageMaker?

Per testare il modello YOLO11 distribuito su Amazon SageMaker:

  1. Apri il notebook di test: Individua il 2_TestEndpoint.ipynb notebook nell'ambiente SageMaker Jupyter.
  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 tracciamento integrate per visualizzare le metriche di performance, come i riquadri di delimitazione attorno agli oggetti rilevati.

Per istruzioni di test complete, visitare la sezione relativa ai test.



📅 Creato 1 anno fa ✏️ Aggiornato 2 mesi fa

Commenti