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 d'avoir mis en place les conditions préalables suivantes :

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

  • RĂ´les IAM configurĂ©s : Tu auras 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 as suffisamment de quotas pour deux ressources distinctes dans Amazon SageMaker : un pour ml.m5.4xlarge pour l'utilisation des terminaux et un autre pour ml.m5.4xlarge pour l'utilisation de l'instance de notebook. Chacune de ces ressources 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 de la 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.

def output_fn(prediction_output, content_type):
    print("Executing output_fn from inference.py ...")
    infer = {}
    for result in prediction_output:
        if 'boxes' in result._keys and result.boxes is not None:
            infer['boxes'] = result.boxes.numpy().data.tolist()
        if 'masks' in result._keys and result.masks is not None:
            infer['masks'] = result.masks.numpy().data.tolist()
        if 'keypoints' in result._keys and result.keypoints is not None:
            infer['keypoints'] = result.keypoints.numpy().data.tolist()
        if 'probs' in result._keys and 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.

  • Lance le carnet de test : Suis les instructions du carnet pour tester le point de terminaison SageMaker dĂ©ployĂ©. Cela comprend l'envoi d'une image au point de terminaison et l'exĂ©cution d'infĂ©rences. Ensuite, tu traceras 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.



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

Commentaires