Zum Inhalt springen

A Guide to Deploying YOLO11 on Amazon SageMaker Endpoints

Deploying advanced computer vision models like Ultralytics' YOLO11 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. YOLO11 becomes even more powerful when integrated seamlessly with Amazon SageMaker, a robust and scalable machine learning service by AWS.

This guide will take you through the process of deploying YOLO11 PyTorch models on Amazon SageMaker Endpoints step by step. You'll learn the essentials of preparing your AWS environment, configuring the model appropriately, and using tools like AWS CloudFormation and the AWS Cloud Development Kit (CDK) for deployment.

Amazon SageMaker

Amazon SageMaker Übersicht

Amazon SageMaker ist ein Service für maschinelles Lernen von Amazon Web Services (AWS), der das Erstellen, Trainieren und Bereitstellen von Modellen für maschinelles Lernen vereinfacht. Er bietet eine breite Palette von Tools für verschiedene Aspekte von Machine Learning Workflows. Dazu gehören automatisierte Funktionen für das Tuning von Modellen, Optionen für das Training von Modellen in großem Umfang und einfache Methoden für den Einsatz von Modellen in der Produktion. SageMaker unterstützt gängige Frameworks für maschinelles Lernen und bietet so die nötige Flexibilität für unterschiedliche Projekte. Die Funktionen umfassen auch die Datenbeschriftung, das Workflow-Management und die Leistungsanalyse.

Deploying YOLO11 on Amazon SageMaker Endpoints

Deploying YOLO11 on Amazon SageMaker lets you use its managed environment for real-time inference and take advantage of features like autoscaling. Take a look at the AWS architecture below.

AWS Architektur

Schritt 1: Einrichten deiner AWS-Umgebung

Zuerst musst du sicherstellen, dass du die folgenden Voraussetzungen erfüllst:

  • Ein AWS-Konto: Wenn du noch keins hast, melde dich für ein AWS-Konto an.

  • Konfigurierte IAM-Rollen: Sie benötigen eine IAM-Rolle mit den erforderlichen Berechtigungen für Amazon SageMaker, AWS CloudFormation und Amazon S3. Diese Rolle sollte über Richtlinien verfügen, die den Zugriff auf diese Dienste ermöglichen.

  • AWS CLI: Falls noch nicht installiert, lade die AWS-Befehlszeilenschnittstelle (CLI) herunter, installiere sie und konfiguriere sie mit deinen Kontodaten. Befolge für die Installation die Anweisungen von AWS CLI .

  • AWS CDK: Falls noch nicht installiert, installiere das AWS Cloud Development Kit (CDK), das für das Skripting der Bereitstellung verwendet wird. Befolge die Anweisungen für die Installation des AWS CDK.

  • Angemessene Service-Quote: Bestätigen Sie, dass Sie über ausreichende Quoten für zwei separate Ressourcen in Amazon SageMaker verfügen: eine für ml.m5.4xlarge für die Endpunktnutzung und eine weitere für ml.m5.4xlarge für die Nutzung von Notebook-Instanzen. Für jede dieser Kategorien ist mindestens ein Quotenwert erforderlich. Wenn deine aktuellen Quoten unter dieser Anforderung liegen, ist es wichtig, dass du eine Erhöhung für jede einzelne beantragst. Du kannst eine Quotenerhöhung beantragen, indem du die detaillierten Anweisungen in der AWS Service Quotas Dokumentation.

Step 2: Clone the YOLO11 SageMaker Repository

The next step is to clone the specific AWS repository that contains the resources for deploying YOLO11 on SageMaker. This repository, hosted on GitHub, includes the necessary CDK scripts and configuration files.

  • Klone das GitHub-Repository: Führe den folgenden Befehl in deinem Terminal aus, um das host-yolov8-on-sagemaker-endpoint Repository zu klonen:
git clone https://github.com/aws-samples/host-yolov8-on-sagemaker-endpoint.git
  • Navigiere zu dem geklonten Verzeichnis: Wechsle dein Verzeichnis in das geklonte Repository:
cd host-yolov8-on-sagemaker-endpoint/yolov8-pytorch-cdk

Schritt 3: Einrichten der CDK-Umgebung

Jetzt, wo du den nötigen Code hast, richtest du deine Umgebung für die Bereitstellung mit AWS CDK ein.

  • Erstelle eine Python Virtuelle Umgebung: Damit isolierst du deine Python Umgebung und Abhängigkeiten. Ausführen:
python3 -m venv .venv
  • Aktiviere die virtuelle Umgebung:
source .venv/bin/activate
  • Abhängigkeiten installieren: Installiere die erforderlichen Python Abhängigkeiten für das Projekt:
pip3 install -r requirements.txt
  • Aktualisiere die AWS CDK-Bibliothek: Stelle sicher, dass du die neueste Version der AWS CDK-Bibliothek hast:
pip install --upgrade aws-cdk-lib

Schritt 4: Erstelle den AWS CloudFormation Stack

  • Synthetisiere die CDK-Anwendung: Erstelle die AWS CloudFormation-Vorlage aus deinem CDK-Code:
cdk synth
  • Bootstrap der CDK-Anwendung: Bereite deine AWS-Umgebung für die CDK-Bereitstellung vor:
cdk bootstrap
  • Stelle den Stack bereit: Damit werden die erforderlichen AWS-Ressourcen erstellt und dein Modell bereitgestellt:
cdk deploy

Step 5: Deploy the YOLO Model

Before diving into the deployment instructions, be sure to check out the range of YOLO11 models offered by Ultralytics. This will help you choose the most appropriate model for your project requirements.

After creating the AWS CloudFormation Stack, the next step is to deploy YOLO11.

  • Öffne die Notebook-Instanz: Rufe die AWS-Konsole auf und navigiere zum Amazon SageMaker Service. Wähle "Notebook Instances" aus dem Dashboard und suche dann die Notebook Instance, die von deinem CDK Deployment Script erstellt wurde. Öffne die Notebook-Instanz, um auf die Jupyter-Umgebung zuzugreifen.

  • Öffne und ändere inference.py: Nachdem du die SageMaker-Notebook-Instanz in Jupyter geöffnet hast, suche die Datei inference.py. Bearbeite die Funktion output_fn in inference.py wie unten gezeigt und speichere deine Änderungen im Skript, um sicherzustellen, dass es keine Syntaxfehler gibt.

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)
  • Deploy the Endpoint Using 1_DeployEndpoint.ipynb: In the Jupyter environment, open the 1_DeployEndpoint.ipynb notebook located in the sm-notebook directory. Follow the instructions in the notebook and run the cells to download the YOLO11 model, package it with the updated inference code, and upload it to an Amazon S3 bucket. The notebook will guide you through creating and deploying a SageMaker endpoint for the YOLO11 model.

Schritt 6: Testen deines Einsatzes

Now that your YOLO11 model is deployed, it's important to test its performance and functionality.

  • Öffne das Test Notebook: Suche in derselben Jupyter-Umgebung das Notizbuch 2_TestEndpoint.ipynb, das sich ebenfalls im Verzeichnis sm-notebook befindet, und öffne es.

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

Testing Results YOLO11

  • Ressourcen zum Aufräumen: Das Testnotizbuch führt dich auch durch den Prozess des Aufräumens des Endpunkts und des gehosteten Modells. Dies ist ein wichtiger Schritt, um Kosten und Ressourcen effektiv zu verwalten, vor allem, wenn du nicht vorhast, das bereitgestellte Modell sofort zu nutzen.

Schritt 7: Überwachung und Management

Nach der Erprobung ist eine kontinuierliche Überwachung und Verwaltung deines eingesetzten Modells unerlässlich.

  • Überwache mit Amazon CloudWatch: Überprüfe regelmäßig die Leistung und den Zustand deines SageMaker-Endpunkts mit Amazon CloudWatch.

  • Verwalte den Endpunkt: Verwende die SageMaker-Konsole für die laufende Verwaltung des Endpunkts. Dazu gehört das Skalieren, Aktualisieren oder Umstellen des Modells nach Bedarf.

By completing these steps, you will have successfully deployed and tested a YOLO11 model on Amazon SageMaker Endpoints. This process not only equips you with practical experience in using AWS services for machine learning deployment but also lays the foundation for deploying other advanced models in the future.

Zusammenfassung

This guide took you step by step through deploying YOLO11 on Amazon SageMaker Endpoints using AWS CloudFormation and the AWS Cloud Development Kit (CDK). The process includes cloning the necessary GitHub repository, setting up the CDK environment, deploying the model using AWS services, and testing its performance on SageMaker.

Weitere technische Details findest du in diesem Artikel auf dem AWS Machine Learning Blog. Du kannst auch die offizielle Amazon SageMaker-Dokumentation lesen, um mehr über die verschiedenen Funktionen und Merkmale zu erfahren.

Are you interested in learning more about different YOLO11 integrations? Visit the Ultralytics integrations guide page to discover additional tools and capabilities that can enhance your machine-learning projects.

FAQ

How do I deploy the Ultralytics YOLO11 model on Amazon SageMaker Endpoints?

To deploy the Ultralytics YOLO11 model on Amazon SageMaker Endpoints, follow these steps:

  1. Richte deine AWS-Umgebung ein: Stelle sicher, dass du ein AWS-Konto, IAM-Rollen mit den erforderlichen Berechtigungen und die AWS CLI konfiguriert hast. Installiere AWS CDK, falls noch nicht geschehen (siehe AWS CDK-Anleitung).
  2. Clone the YOLO11 SageMaker Repository:
    git clone https://github.com/aws-samples/host-yolov8-on-sagemaker-endpoint.git
    cd host-yolov8-on-sagemaker-endpoint/yolov8-pytorch-cdk
    
  3. Einrichten der CDK-Umgebung: Erstelle eine virtuelle Umgebung Python , aktiviere sie, installiere die Abhängigkeiten und aktualisiere die AWS CDK-Bibliothek.
    python3 -m venv .venv
    source .venv/bin/activate
    pip3 install -r requirements.txt
    pip install --upgrade aws-cdk-lib
    
  4. Bereitstellen mit AWS CDK: Synthese und Bereitstellung des CloudFormation-Stacks, Bootstrap der Umgebung.
    cdk synth
    cdk bootstrap
    cdk deploy
    

Weitere Informationen findest du im Abschnitt Dokumentation.

What are the prerequisites for deploying YOLO11 on Amazon SageMaker?

To deploy YOLO11 on Amazon SageMaker, ensure you have the following prerequisites:

  1. AWS-Konto: Aktives AWS-Konto(melde dich hier an).
  2. IAM-Rollen: Konfigurierte IAM-Rollen mit Berechtigungen für SageMaker, CloudFormation und Amazon S3.
  3. AWS CLI: Installiere und konfiguriere die AWS-Befehlszeilenschnittstelle(AWS CLI installation guide).
  4. AWS CDK: Installiertes AWS Cloud Development Kit(CDK Setup Guide).
  5. Dienstleistungskontingente: Ausreichende Quoten für ml.m5.4xlarge Instanzen für die Nutzung von Endpunkten und Notebooks (eine Quotenerhöhung beantragen).

Detaillierte Informationen zur Einrichtung findest du in diesem Abschnitt.

Why should I use Ultralytics YOLO11 on Amazon SageMaker?

Using Ultralytics YOLO11 on Amazon SageMaker offers several advantages:

  1. Skalierbarkeit und Verwaltung: SageMaker bietet eine verwaltete Umgebung mit Funktionen wie der automatischen Skalierung, die bei Echtzeit-Inferenzanforderungen hilft.
  2. Integration mit AWS-Diensten: Integriere nahtlos andere AWS-Dienste, wie S3 für die Datenspeicherung, CloudFormation für Infrastructure as Code und CloudWatch für die Überwachung.
  3. Einfacher Einsatz: Vereinfachte Einrichtung mit AWS CDK-Skripten und optimierte Bereitstellungsprozesse.
  4. Leistung: Nutze die leistungsstarke Infrastruktur von Amazon SageMaker für die effiziente Ausführung umfangreicher Inferenzaufgaben.

Erfahre mehr über die Vorteile von SageMaker im Abschnitt Einführung.

Can I customize the inference logic for YOLO11 on Amazon SageMaker?

Yes, you can customize the inference logic for YOLO11 on Amazon SageMaker:

  1. Ändern Sie inference.py: Finde und passe die output_fn Funktion in der inference.py Datei, um die Ausgabeformate anzupassen.

    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. Aktualisiertes Modell bereitstellen: Stelle sicher, dass du das Modell mithilfe der bereitgestellten Jupyter-Notebooks neu bereitstellst (1_DeployEndpoint.ipynb), um diese Änderungen zu berücksichtigen.

Beachte die detaillierten Schritte für den Einsatz des geänderten Modells.

How can I test the deployed YOLO11 model on Amazon SageMaker?

To test the deployed YOLO11 model on Amazon SageMaker:

  1. Öffne das Testheft: Finden Sie die 2_TestEndpoint.ipynb Notizbuch in der SageMaker Jupyter-Umgebung.
  2. Führe das Notebook aus: Befolge die Anweisungen des Notizbuchs, um ein Bild an den Endpunkt zu senden, eine Inferenz durchzuführen und die Ergebnisse anzuzeigen.
  3. Ergebnisse visualisieren: Nutze die integrierten Plot-Funktionen, um Leistungskennzahlen zu visualisieren, z. B. Bounding Boxes um erkannte Objekte.

Ausführliche Anleitungen zu den Prüfungen findest du im Abschnitt Prüfungen.

📅 Created 9 months ago ✏️ Updated 22 days ago

Kommentare