Zum Inhalt springen

Ein Leitfaden f├╝r den Einsatz von YOLOv8 auf Amazon SageMaker-Endpunkten

Der Einsatz fortschrittlicher Computer-Vision-Modelle wie Ultralytics' YOLOv8 auf Amazon SageMaker Endpunkten er├Âffnet eine Vielzahl von M├Âglichkeiten f├╝r verschiedene Machine-Learning-Anwendungen. Der Schl├╝ssel zur effektiven Nutzung dieser Modelle liegt im Verst├Ąndnis ihrer Einrichtung, Konfiguration und Bereitstellung. YOLOv8 wird noch leistungsf├Ąhiger, wenn es nahtlos in Amazon SageMaker integriert wird, einem robusten und skalierbaren Service f├╝r maschinelles Lernen von AWS.

Dieser Leitfaden f├╝hrt dich Schritt f├╝r Schritt durch den Einsatz von YOLOv8 PyTorch Modellen auf Amazon SageMaker Endpoints. Du lernst, wie du deine AWS-Umgebung vorbereitest, das Modell richtig konfigurierst und Tools wie AWS CloudFormation und das AWS Cloud Development Kit (CDK) f├╝r den Einsatz verwendest.

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.

Einsatz von YOLOv8 auf Amazon SageMaker Endpunkten

Wenn du YOLOv8 auf Amazon SageMaker einsetzt, kannst du die verwaltete Umgebung f├╝r Echtzeit-Inferenzen nutzen und von Funktionen wie der automatischen Skalierung profitieren. Wirf einen Blick auf die AWS-Architektur unten.

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.

Schritt 2: Klone das YOLOv8 SageMaker Repository

Im n├Ąchsten Schritt klonst du das spezielle AWS-Repository, das die Ressourcen f├╝r den Einsatz von YOLOv8 auf SageMaker enth├Ąlt. Dieses Repository, das auf GitHub gehostet wird, enth├Ąlt die notwendigen CDK-Skripte und Konfigurationsdateien.

  • 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

Schritt 5: Einsetzen des YOLOv8 Modells

Bevor du dich in die Einrichtungsanleitung vertiefst, solltest du dir die verschiedenen YOLOv8 Modelle ansehen, die von Ultralytics angeboten werden. Das wird dir helfen, das am besten geeignete Modell f├╝r deine Projektanforderungen auszuw├Ąhlen.

Nachdem du den AWS CloudFormation Stack erstellt hast, ist der n├Ąchste Schritt die Bereitstellung von YOLOv8.

  • ├ľ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)
  • Stelle den Endpunkt mit 1_DeployEndpoint.ipynb bereit: ├ľffne in der Jupyter-Umgebung das Notizbuch 1_DeployEndpoint.ipynb, das sich im Verzeichnis sm-notebook befindet. Befolge die Anweisungen im Notizbuch und f├╝hre die Zellen aus, um das YOLOv8 Modell herunterzuladen, es mit dem aktualisierten Inferenzcode zu verpacken und es in einen Amazon S3 Bucket hochzuladen. Das Notizbuch f├╝hrt dich durch die Erstellung und den Einsatz eines SageMaker-Endpunkts f├╝r das Modell YOLOv8 .

Schritt 6: Testen deines Einsatzes

Jetzt, wo dein YOLOv8 Modell im Einsatz ist, ist es wichtig, seine Leistung und Funktionalit├Ąt zu testen.

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

  • F├╝hren Sie das Test-Notebook aus: Befolgen Sie die Anweisungen im Notebook, um den bereitgestellten SageMaker-Endpunkt zu testen. Dazu geh├Âren das Senden eines Bildes an den Endpunkt und das Ausf├╝hren von R├╝ckschl├╝ssen. Anschlie├čend stellen Sie die Ausgabe dar, um die Leistung und Genauigkeit des Modells zu visualisieren, wie unten gezeigt.

Testergebnisse YOLOv8

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

Wenn du diese Schritte abgeschlossen hast, hast du erfolgreich ein YOLOv8 Modell auf Amazon SageMaker Endpoints eingesetzt und getestet. Dieser Prozess vermittelt dir nicht nur praktische Erfahrung in der Nutzung von AWS-Diensten f├╝r den Einsatz von maschinellem Lernen, sondern legt auch den Grundstein f├╝r den Einsatz anderer fortgeschrittener Modelle in der Zukunft.

Zusammenfassung

Dieser Leitfaden f├╝hrt dich Schritt f├╝r Schritt durch den Einsatz von YOLOv8 auf Amazon SageMaker Endpoints mit AWS CloudFormation und dem AWS Cloud Development Kit (CDK). Der Prozess umfasst das Klonen des erforderlichen GitHub-Repositorys, das Einrichten der CDK-Umgebung, den Einsatz des Modells mithilfe der AWS-Services und das Testen seiner Leistung auf 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.

Bist du daran interessiert, mehr ├╝ber die verschiedenen YOLOv8 Integrationen zu erfahren? Besuche den Ultralytics Integrationsleitfaden, um weitere Tools und Funktionen zu entdecken, die deine Machine-Learning-Projekte verbessern k├Ânnen.

FAQ

Wie setze ich das Modell Ultralytics YOLOv8 auf Amazon SageMaker Endpoints ein?

Um das Modell Ultralytics YOLOv8 auf Amazon SageMaker Endpoints einzusetzen, befolge diese Schritte:

  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. Klone das YOLOv8 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.

Was sind die Voraussetzungen f├╝r den Einsatz von YOLOv8 auf Amazon SageMaker?

Um YOLOv8 auf Amazon SageMaker einzusetzen, musst du die folgenden Voraussetzungen erf├╝llen:

  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.

Warum sollte ich Ultralytics YOLOv8 auf Amazon SageMaker verwenden?

Die Verwendung von Ultralytics YOLOv8 auf Amazon SageMaker bietet mehrere Vorteile:

  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.

Kann ich die Schlussfolgerungslogik f├╝r YOLOv8 auf Amazon SageMaker anpassen?

Ja, du kannst die Schlussfolgerungslogik f├╝r YOLOv8 auf Amazon SageMaker anpassen:

  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.

Wie kann ich das bereitgestellte YOLOv8 Modell auf Amazon SageMaker testen?

Um das bereitgestellte YOLOv8 Modell auf Amazon SageMaker zu testen:

  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.



Erstellt am 2024-01-04, Aktualisiert am 2024-07-05
Autoren: glenn-jocher (7), ambitious-octopus (1), sergiuwaxmann (1), abirami-vina (1)

Kommentare