Skip to content

Guide pour le déploiement de YOLOv8 sur les terminaux Amazon SageMaker

Le déploiement de modèles avancés de vision par ordinateur tels que Ultralytics' YOLOv8 sur les terminaux Amazon SageMaker ouvre un large éventail de possibilités pour diverses applications d'apprentissage automatique. La clé pour utiliser efficacement ces modèles réside dans la compréhension de leurs processus d'installation, de configuration et de déploiement. YOLOv8 devient encore plus puissant lorsqu'il est intégré de manière transparente à Amazon SageMaker, un service d'apprentissage automatique robuste et évolutif d'AWS.

Ce guide te guidera pas à pas dans le processus de déploiement des modèles YOLOv8 PyTorch sur Amazon SageMaker Endpoints. Tu apprendras l'essentiel pour préparer ton environnement AWS, configurer le modèle de manière appropriée et utiliser des outils comme AWS CloudFormation et le kit de développement AWS Cloud (CDK) pour le déploiement.

Amazon SageMaker

Présentation d'Amazon SageMaker

Amazon SageMaker est un service d'apprentissage automatique d'Amazon Web Services (AWS) qui simplifie le processus de construction, d'entraînement et de déploiement des modèles d'apprentissage automatique. Il fournit une large gamme d'outils pour gérer divers aspects des flux de travail d'apprentissage automatique. Cela comprend des fonctions automatisées pour le réglage des modèles, des options pour l'entraînement des modèles à l'échelle et des méthodes simples pour déployer les modèles en production. SageMaker prend en charge les frameworks d'apprentissage automatique les plus répandus, offrant ainsi la flexibilité nécessaire à divers projets. Ses fonctionnalités couvrent également l'étiquetage des données, la gestion des flux de travail et l'analyse des performances.

DĂ©ploiement de YOLOv8 sur les terminaux Amazon SageMaker

Le déploiement de YOLOv8 sur Amazon SageMaker te permet d'utiliser son environnement géré pour l'inférence en temps réel et de profiter de fonctionnalités telles que l'autoscaling. Jette un coup d'œil à l'architecture AWS ci-dessous.

Architecture AWS

Étape 1 : Configurer ton environnement AWS

Tout d'abord, assure-toi que les conditions préalables suivantes sont réunies :

  • Un compte AWS : Si tu n'en as pas encore, inscris-toi Ă  un compte AWS.

  • RĂ´les IAM configurĂ©s : vous aurez besoin d’un rĂ´le IAM avec les autorisations nĂ©cessaires pour Amazon SageMaker, AWS CloudFormation et Amazon S3. Ce rĂ´le doit avoir des politiques qui lui permettent d’accĂ©der Ă  ces services.

  • AWS CLI: Si ce n'est pas dĂ©jĂ  fait, tĂ©lĂ©charge et installe l'interface de ligne de commande AWS (CLI) et configure-la avec les dĂ©tails de ton compte. Suis les instructions d'AWS CLI pour l'installation.

  • AWS CDK : s'il n'est pas dĂ©jĂ  installĂ©, installe le kit de dĂ©veloppement AWS Cloud (CDK), qui sera utilisĂ© pour la crĂ©ation de scripts pour le dĂ©ploiement. Suis les instructions d' installation du CDK AWS.

  • Quota de service adĂ©quat : Confirme que tu disposes de quotas suffisants pour deux ressources distinctes dans Amazon SageMaker : l'une pour ml.m5.4xlarge pour l'utilisation des points d'extrĂ©mitĂ© et une autre pour ml.m5.4xlarge pour l'utilisation de l'instance de notebook. Chacun d'entre eux nĂ©cessite un minimum d'une valeur de quota. Si tes quotas actuels sont infĂ©rieurs Ă  cette exigence, il est important de demander une augmentation pour chacun d'entre eux. Tu peux demander une augmentation de quota en suivant les instructions dĂ©taillĂ©es dans la section Documentation sur les quotas de service AWS.

Étape 2 : Cloner le dépôt SageMaker YOLOv8

L'étape suivante consiste à cloner le dépôt AWS spécifique qui contient les ressources nécessaires au déploiement de YOLOv8 sur SageMaker. Ce dépôt, hébergé sur GitHub, comprend les scripts CDK et les fichiers de configuration nécessaires.

  • Clone le dĂ©pĂ´t GitHub : ExĂ©cute la commande suivante dans ton terminal pour cloner le dĂ©pĂ´t host-yolov8-on-sagemaker-endpoint :
git clone https://github.com/aws-samples/host-yolov8-on-sagemaker-endpoint.git
  • Navigue jusqu'au rĂ©pertoire clonĂ© : Change ton rĂ©pertoire pour le rĂ©fĂ©rentiel clonĂ© :
cd host-yolov8-on-sagemaker-endpoint/yolov8-pytorch-cdk

Étape 3 : Configurer l'environnement CDK

Maintenant que tu as le code nécessaire, configure ton environnement pour le déploiement avec AWS CDK.

  • CrĂ©e un environnement virtuel Python : Cela permet d'isoler ton environnement Python et ses dĂ©pendances. ExĂ©cute :
python3 -m venv .venv
  • Active l'environnement virtuel :
source .venv/bin/activate
  • Installer les dĂ©pendances : Installe les dĂ©pendances Python requises pour le projet :
pip3 install -r requirements.txt
  • Mettre Ă  jour la bibliothèque AWS CDK : Assure-toi d'avoir la dernière version de la bibliothèque AWS CDK :
pip install --upgrade aws-cdk-lib

Étape 4 : créer la pile AWS CloudFormation

  • SynthĂ©tise l'application CDK : GĂ©nère le modèle AWS CloudFormation Ă  partir de ton code CDK :
cdk synth
  • Amorce l'application CDK : PrĂ©pare ton environnement AWS pour le dĂ©ploiement du CDK :
cdk bootstrap
  • DĂ©ploie la pile : Cela permettra de crĂ©er les ressources AWS nĂ©cessaires et de dĂ©ployer ton modèle :
cdk deploy

Étape 5 : Déployer le modèle YOLOv8

Avant de te plonger dans les instructions de déploiement, n'oublie pas de consulter la gamme de modèlesYOLOv8 proposés par Ultralytics. Cela t'aidera à choisir le modèle le plus approprié aux exigences de ton projet.

Après avoir créé la pile AWS CloudFormation, l'étape suivante consiste à déployer YOLOv8.

  • Ouvre l'instance du carnet de notes : Va dans la console AWS et navigue jusqu'au service Amazon SageMaker. SĂ©lectionne "Notebook Instances" dans le tableau de bord, puis localise l'instance de notebook qui a Ă©tĂ© crĂ©Ă©e par ton script de dĂ©ploiement CDK. Ouvre l'instance de notebook pour accĂ©der Ă  l'environnement Jupyter.

  • Accède Ă  inference.py et modifie-le : Après avoir ouvert l'instance de notebook SageMaker dans Jupyter, localise le fichier inference.py. Modifie la fonction output_fn dans inference.py comme indiquĂ© ci-dessous et enregistre tes modifications dans le script, en veillant Ă  ce qu'il n'y ait pas d'erreurs de syntaxe.

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)
  • DĂ©ployer le point final Ă  l'aide de 1_DeployEndpoint.ipynb : Dans l'environnement Jupyter, ouvre le carnet 1_DeployEndpoint.ipynb situĂ© dans le rĂ©pertoire sm-notebook. Suis les instructions du notebook et exĂ©cute les cellules pour tĂ©lĂ©charger le modèle YOLOv8 , l'emballer avec le code d'infĂ©rence mis Ă  jour et le tĂ©lĂ©charger dans un seau Amazon S3. Le notebook te guidera dans la crĂ©ation et le dĂ©ploiement d'un point de terminaison SageMaker pour le modèle YOLOv8 .

Étape 6 : Test de ton déploiement

Maintenant que ton modèle YOLOv8 est déployé, il est important de tester ses performances et ses fonctionnalités.

  • Ouvre le carnet de test : Dans le mĂŞme environnement Jupyter, localise et ouvre le carnet 2_TestEndpoint.ipynb, Ă©galement dans le rĂ©pertoire sm-notebook.

  • ExĂ©cuter le bloc-notes de test : suivez les instructions du bloc-notes pour tester le point de terminaison SageMaker dĂ©ployĂ©. Cela inclut l’envoi d’une image au point de terminaison et l’exĂ©cution d’infĂ©rences. Ensuite, vous tracerez la sortie pour visualiser les performances et la prĂ©cision du modèle, comme indiquĂ© ci-dessous.

RĂ©sultats des tests YOLOv8

  • Ressources de nettoyage : Le carnet de test te guidera Ă©galement dans le processus de nettoyage du point d'extrĂ©mitĂ© et du modèle hĂ©bergĂ©. C'est une Ă©tape importante pour gĂ©rer efficacement les coĂ»ts et les ressources, surtout si tu ne prĂ©vois pas d'utiliser immĂ©diatement le modèle dĂ©ployĂ©.

Étape 7 : Suivi et gestion

Après les tests, la surveillance et la gestion continues de ton modèle déployé sont essentielles.

  • Surveille avec Amazon CloudWatch : VĂ©rifie rĂ©gulièrement les performances et la santĂ© de ton point de terminaison SageMaker Ă  l'aide d'Amazon CloudWatch.

  • GĂ©rer le point d'accès : Utilise la console SageMaker pour la gestion continue du point de terminaison. Cela comprend la mise Ă  l'Ă©chelle, la mise Ă  jour ou le redĂ©ploiement du modèle selon les besoins.

En terminant ces étapes, tu auras réussi à déployer et à tester un modèle YOLOv8 sur Amazon SageMaker Endpoints. Ce processus te permet non seulement d'acquérir une expérience pratique de l'utilisation des services AWS pour le déploiement de l'apprentissage automatique, mais aussi de poser les bases pour le déploiement d'autres modèles avancés à l'avenir.

Résumé

Ce guide t'a accompagné pas à pas dans le déploiement de YOLOv8 sur Amazon SageMaker Endpoints à l'aide d'AWS CloudFormation et de l'AWS Cloud Development Kit (CDK). Le processus comprend le clonage du dépôt GitHub nécessaire, la configuration de l'environnement CDK, le déploiement du modèle à l'aide des services AWS et le test de ses performances sur SageMaker.

Pour plus de détails techniques, reporte-toi à cet article sur le blog AWS Machine Learning. Tu peux aussi consulter la documentation officielle d'Amazon SageMaker pour en savoir plus sur les différentes caractéristiques et fonctionnalités.

Tu souhaites en savoir plus sur les différentes intégrations de YOLOv8 ? Visite la page du guide des intégrationsUltralytics pour découvrir des outils et des capacités supplémentaires qui peuvent améliorer tes projets d'apprentissage automatique.

FAQ

Comment déployer le modèle Ultralytics YOLOv8 sur Amazon SageMaker Endpoints ?

Pour déployer le modèle Ultralytics YOLOv8 sur Amazon SageMaker Endpoints, suis les étapes suivantes :

  1. Configure ton environnement AWS: Assure-toi d'avoir un compte AWS, des rôles IAM avec les permissions nécessaires et l'AWS CLI configuré. Installe le CDK AWS si ce n'est pas déjà fait (voir les instructions du CDK AWS).
  2. Clone le dépôt SageMaker YOLOv8:
    git clone https://github.com/aws-samples/host-yolov8-on-sagemaker-endpoint.git
    cd host-yolov8-on-sagemaker-endpoint/yolov8-pytorch-cdk
    
  3. Configurer l'environnement CDK: Créer un environnement virtuel Python , l'activer, installer les dépendances et mettre à jour la bibliothèque AWS CDK.
    python3 -m venv .venv
    source .venv/bin/activate
    pip3 install -r requirements.txt
    pip install --upgrade aws-cdk-lib
    
  4. Déployer à l'aide de AWS CDK: Synthétise et déploie la pile CloudFormation, démarre l'environnement.
    cdk synth
    cdk bootstrap
    cdk deploy
    

Pour plus de détails, consulte la section documentation.

Quelles sont les conditions préalables au déploiement de YOLOv8 sur Amazon SageMaker ?

Pour déployer YOLOv8 sur Amazon SageMaker, assure-toi d'avoir les prérequis suivants :

  1. Compte AWS: Compte AWS actif(s'inscrire ici).
  2. Rôles IAM: Rôles IAM configurés avec des autorisations pour SageMaker, CloudFormation et Amazon S3.
  3. AWS CLI: Installation et configuration de l'interface de ligne de commande AWS(guide d'installation AWS CLI ).
  4. AWS CDK: Kit de développement cloud AWS installé(guide d'installation du CDK).
  5. Quotas de service: Des quotas suffisants pour ml.m5.4xlarge pour l'utilisation des terminaux et des ordinateurs portables (demande une augmentation de quota).

Pour une configuration détaillée, reporte-toi à cette section.

Pourquoi devrais-je utiliser Ultralytics YOLOv8 sur Amazon SageMaker ?

L'utilisation de Ultralytics YOLOv8 sur Amazon SageMaker offre plusieurs avantages :

  1. Évolutivité et gestion: SageMaker fournit un environnement géré avec des fonctions telles que l'autoscaling, qui aide à répondre aux besoins d'inférence en temps réel.
  2. Intégration avec les services AWS: Intègre de manière transparente d'autres services AWS, tels que S3 pour le stockage des données, CloudFormation pour l'infrastructure en tant que code et CloudWatch pour la surveillance.
  3. Facilité de déploiement: Configuration simplifiée à l'aide de scripts AWS CDK et processus de déploiement rationalisés.
  4. Performance: Tire parti de l'infrastructure haute performance d'Amazon SageMaker pour exécuter efficacement des tâches d'inférence à grande échelle.

Explore davantage les avantages de l'utilisation de SageMaker dans la section d'introduction.

Puis-je personnaliser la logique d'inférence pour YOLOv8 sur Amazon SageMaker ?

Oui, tu peux personnaliser la logique d'inférence pour YOLOv8 sur Amazon SageMaker :

  1. Modifier inference.py: Localise et personnalise le output_fn dans la fonction inference.py pour adapter les formats de sortie.

    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. Déploie le modèle mis à jour: Assure-toi de redéployer le modèle en utilisant les carnets Jupyter fournis (1_DeployEndpoint.ipynb) pour inclure ces changements.

Reporte-toi aux étapes détaillées pour déployer le modèle modifié.

Comment puis-je tester le modèle YOLOv8 déployé sur Amazon SageMaker ?

Pour tester le modèle YOLOv8 déployé sur Amazon SageMaker :

  1. Ouvre le cahier de test: Localise le 2_TestEndpoint.ipynb notebook dans l'environnement Jupyter de SageMaker.
  2. Exécute le carnet: Suis les instructions du carnet pour envoyer une image au point de terminaison, effectuer une inférence et afficher les résultats.
  3. Visualiser les résultats: Utilise les fonctionnalités de traçage intégrées pour visualiser les mesures de performance, telles que les boîtes de délimitation autour des objets détectés.

Pour obtenir des instructions complètes sur les tests, visite la section des tests.



Créé le 2024-01-04, Mis à jour le 2024-07-05
Auteurs : glenn-jocher (7), ambitious-octopus (1), sergiuwaxmann (1), abirami-vina (1)

Commentaires