Activez le CI/CD des points de terminaison Amazon SageMaker multi-régions PlatoBlockchain Data Intelligence. Recherche verticale. Aï.

Activer le CI/CD des points de terminaison Amazon SageMaker multi-régions

Amazon Sage Maker et les Points de terminaison d’inférence SageMaker offrez une capacité de formation et de déploiement de vos charges de travail d’IA et d’apprentissage automatique (ML). Avec les points de terminaison d'inférence, vous pouvez déployer vos modèles pour une inférence en temps réel ou par lots. Les points de terminaison prennent en charge différents types de modèles ML hébergés à l'aide Conteneurs AWS Deep Learning ou vos propres conteneurs avec des algorithmes AI/ML personnalisés. Lorsque vous lancez des points de terminaison d'inférence SageMaker avec plusieurs instances, SageMaker distribue les instances sur plusieurs zones de disponibilité (dans une seule région) pour une haute disponibilité.

Toutefois, dans certains cas, afin de garantir la latence la plus faible possible pour les clients situés dans diverses zones géographiques, vous devrez peut-être déployer des points de terminaison d'inférence dans plusieurs régions. Le déploiement multirégional des points de terminaison SageMaker et d'autres composants d'application et d'infrastructure associés peut également faire partie d'une stratégie de reprise après sinistre pour vos charges de travail critiques visant à atténuer le risque de panne régionale.

Projets SageMaker implémente un ensemble de modèles MLOps prédéfinis qui peuvent aider à gérer les déploiements de points de terminaison. Dans cet article, nous montrons comment vous pouvez étendre un pipeline de projets MLOps SageMaker pour permettre le déploiement multirégional de vos points de terminaison d'inférence AI/ML.

Vue d'ensemble de la solution

SageMaker Projects déploie à la fois des pipelines MLOP de formation et de déploiement ; vous pouvez les utiliser pour entraîner un modèle et le déployer à l'aide d'un point de terminaison d'inférence. Pour réduire la complexité et le coût d'une solution multi-régions, nous supposons que vous entraînez le modèle dans une seule région et déployez des points de terminaison d'inférence dans deux régions ou plus.

Cet article présente une solution qui modifie légèrement un modèle de projet SageMaker pour prendre en charge le déploiement multi-régions. Pour mieux illustrer les modifications, la figure suivante affiche à la fois un pipeline MLOps standard créé automatiquement par SageMaker (étapes 1 à 5), ainsi que les modifications requises pour l'étendre à une région secondaire (étapes 6 à 11).

Le modèle SageMaker Projects déploie automatiquement une solution MLOps standard, qui comprend les composants suivants :

  1. Amazon Event Bridge moniteurs Code AWSCommit référentiels pour les modifications et démarre une exécution de AWS CodePipeline si une validation de code est détectée.
  2. S'il y a un changement de code, Création de code AWS orchestre la formation du modèle à l'aide des tâches de formation SageMaker.
  3. Une fois le travail de formation terminé, le Registre de modèles SageMaker enregistre et catalogue le modèle formé.
  4. Pour préparer la phase de déploiement, CodeBuild étend la valeur par défaut AWS CloudFormation fichiers de configuration de modèle avec les paramètres d'un modèle approuvé du registre de modèles.
  5. Enfin, CodePipeline exécute les modèles CloudFormation pour déployer le modèle approuvé sur les points de terminaison d'inférence de préparation et de production.

Les étapes supplémentaires suivantes modifient le modèle de projets MLOps pour activer le déploiement du modèle AI/ML dans la région secondaire :

  1. Une réplique du Service de stockage simple Amazon (Amazon S3) dans la région principale stockant les artefacts de modèle est requis dans la région secondaire.
  2. Le modèle CodePipeline est étendu avec davantage d'étapes pour exécuter un déploiement inter-régions du modèle approuvé.
  3. Dans le cadre du processus de déploiement entre régions, le modèle CodePipeline utilise un nouveau modèle CloudFormation pour déployer le point de terminaison d'inférence dans une région secondaire. Le modèle CloudFormation déploie le modèle à partir des artefacts de modèle du compartiment de réplica S3 créé à l'étape 6.

9 à 11 éventuellement, créez des ressources dans Amazon Route 53, Passerelle d'API Amazonet une AWS Lambda pour acheminer le trafic des applications vers les points de terminaison d’inférence dans la région secondaire.

Pré-requis

Créez un projet SageMaker dans votre région principale (us-east-2 dans cet article). Complétez les étapes dans Création, automatisation, gestion et mise à l'échelle des flux de travail ML à l'aide d'Amazon SageMaker Pipelines jusqu'à la section Modification de l'exemple de code pour un cas d'utilisation personnalisé.

Mettez à jour votre pipeline dans CodePipeline

Dans cette section, nous expliquons comment ajouter des étapes d'approbation manuelle de CodePipeline et de déploiement de modèles inter-régions à votre pipeline existant créé pour vous par SageMaker.

  1. Sur la console CodePipeline de votre région principale, recherchez et sélectionnez le pipeline contenant le nom de votre projet et se terminant par déployer. Ce pipeline a déjà été créé pour vous par SageMaker Projects. Vous modifiez ce pipeline pour ajouter des étapes de déploiement de point de terminaison AI/ML pour la région secondaire.
  2. Selectionnez Modifier.
  3. Selectionnez Ajouter une scène.
  4. Pour Nom de scène, Entrer SecondaryRegionDeployment.
  5. Selectionnez Ajouter une scène.
  6. Dans le SecondaryRegionDeployment étape, choisissez Ajouter un groupe d'actions.Dans ce groupe d'actions, vous ajoutez une étape d'approbation manuelle pour le déploiement du modèle dans la région secondaire.
  7. Pour Nom de l'action, Entrer ManualApprovaltoDeploytoSecondaryRegion.
  8. Pour Fournisseur d'actions, choisissez Approbation manuelle.
  9. Laissez tous les autres paramètres par défaut et choisissez OK.
  10. Dans le SecondaryRegionDeployment étape, choisissez Ajouter un groupe d'actions (après ManualApprovaltoDeploytoSecondaryRegion).Dans ce groupe d'actions, vous ajoutez une étape de déploiement AWS CloudFormation inter-régions. Vous spécifiez les noms des artefacts de build que vous créez plus loin dans cet article.
  11. Pour Nom de l'action, Entrer DeploytoSecondaryRegion.
  12. Pour Fournisseur d'actions, choisissez Formation cloud AWS.
  13. Pour Région, saisissez le nom de votre région secondaire (par exemple, us-west-2).
  14. Pour Artefacts d'entrée, Entrer BuildArtifact.
  15. Pour Mode Action, Entrer CreateorUpdateStack.
  16. Pour Nom de la pile, Entrer DeploytoSecondaryRegion.
  17. Sous Modèle, Pour Nom de l'artefact, sélectionnez BuildArtifact.
  18. Sous Modèle, Pour Nom du fichier, Entrer template-export-secondary-region.yml.
  19. Tourner Utiliser le fichier de configuration sur.
  20. Sous Modèle, Pour Nom de l'artefact, sélectionnez BuildArtifact.
  21. Sous Modèle, Pour Nom du fichier, Entrer secondary-region-config-export.json.
  22. Sous Compétences, choisissez CAPABILITY_NAMED_IAM.
  23. Pour Rôle, choisissez AmazonSageMakerServiceCatalogProductsUseRole créé par SageMaker Projects.
  24. Selectionnez OK.
  25. Selectionnez Épargnez.
  26. Si un Enregistrer les modifications du pipeline La boîte de dialogue apparaît, choisissez Épargnez nouveau.

Modifier le rôle IAM

Nous devons ajouter des autorisations supplémentaires au Gestion des identités et des accès AWS (IAM) rôle AmazonSageMakerServiceCatalogProductsUseRole créé par Catalogue de services AWS pour activer l'accès au compartiment CodePipeline et S3 pour le déploiement inter-régions.

  1. Sur la console IAM, choisissez Rôles dans le volet de navigation.
  2. Rechercher et sélectionner AmazonSageMakerServiceCatalogProductsUseRole.
  3. Choisissez la stratégie IAM sous Nom de la politique: AmazonSageMakerServiceCatalogProductsUseRole-XXXXXXXXX.
  4. Selectionnez Modifier la politique et alors JSON.
  5. Modifiez les autorisations AWS CloudFormation pour autoriser CodePipeline à synchroniser le compartiment S3 dans la région secondaire. Vous pouvez remplacer la stratégie IAM existante par celle mise à jour parmi les éléments suivants GitHub repo (voir lignes : 16-18, 198, 213)
  6. Selectionnez Politique de révision.
  7. Selectionnez Enregistrer les modifications.

Ajouter le modèle de déploiement pour la région secondaire

Pour lancer un point de terminaison d'inférence dans la région secondaire, le SecondaryRegionDeployment l'étape nécessite un modèle CloudFormation (pour endpoint-config-template-secondary-region.yml) et un fichier de configuration (secondary-region-config.json).

Le modèle CloudFormation est entièrement configuré via des paramètres ; vous pouvez le modifier davantage pour l'adapter à vos besoins. De même, vous pouvez utiliser le fichier de configuration pour définir les paramètres de configuration de lancement du point de terminaison, tels que le type d'instance et le nombre d'instances :

{
  "Parameters": {
    "StageName": "secondary-prod",
    "EndpointInstanceCount": "1",
    "EndpointInstanceType": "ml.m5.large",
    "SamplingPercentage": "100",
    "EnableDataCapture": "true"
  }

Pour ajouter ces fichiers à votre projet, téléchargez-les à partir des liens fournis et téléchargez-les sur Amazon SageMakerStudio dans la Région primaire. Dans Studio, choisissez Navigateur de fichiers puis le dossier contenant le nom de votre projet et se terminant par modeldeploy.

Téléchargez ces fichiers dans le dossier racine du référentiel de déploiement en choisissant l'icône de téléchargement. Assurez-vous que les fichiers se trouvent dans le dossier racine, comme indiqué dans la capture d'écran suivante.

Capture d'écran des fichiers de configuration

Modifier le fichier Python de build

Ensuite, nous devons ajuster le déploiement build.py fichier pour activer le déploiement du point de terminaison SageMaker dans la région secondaire pour effectuer les opérations suivantes :

  • Récupérer l'emplacement des artefacts du modèle et Registre des conteneurs élastiques Amazon (Amazon ECR) URI pour l'image du modèle dans la région secondaire
  • Préparez un fichier de paramètres utilisé pour transmettre les arguments spécifiques au modèle au modèle CloudFormation qui déploie le modèle dans la région secondaire.

Vous pouvez télécharger la mise à jour build.py fichier et remplacez celui existant dans votre dossier. Dans Studio, choisissez Navigateur de fichiers puis le dossier contenant le nom de votre projet et se terminant par modeldeploy. Localisez le fichier build.py et remplacez-le par celui que vous avez téléchargé.

Le modèle CloudFormation utilise les artefacts de modèle stockés dans un compartiment S3 et le chemin de l'image Amazon ECR pour déployer le point de terminaison d'inférence dans la région secondaire. Ceci est différent du déploiement à partir du registre modèle dans la région principale, car vous n’avez pas besoin d’avoir un registre modèle dans la région secondaire.

Capture d'écran des paramètres d'environnement primaires et secondaires

Modifier le fichier buildspec

buildspec.yml contient des instructions exécutées par CodeBuild. Nous modifions ce fichier pour effectuer les opérations suivantes :

  • Installez la bibliothèque SageMaker Python nécessaire pour prendre en charge l'exécution du code
  • Passez par les paramètres –secondary-region et spécifiques au modèle pour build.py
  • Ajoutez la synchronisation du contenu du compartiment S3 des régions principale aux régions secondaires
  • Exportez le modèle CloudFormation de région secondaire et le fichier de paramètres associé en tant qu'artefacts de l'étape CodeBuild

Ouvrez le buildspec.yml à partir du dossier de déploiement du modèle et apportez les modifications en surbrillance comme indiqué dans la capture d'écran suivante.

Capture d'écran du fichier yaml de construction

Alternativement, vous pouvez télécharger ce qui suit buildspec.yml fichier pour remplacer le fichier par défaut.

Ajouter des variables d'environnement CodeBuild

Au cours de cette étape, vous ajoutez les paramètres de configuration requis pour que CodeBuild crée les fichiers de configuration de déploiement de modèle dans la région secondaire.

  1. Sur la console CodeBuild dans la région principale, recherchez le projet contenant le nom de votre projet et se terminant par déployer. Ce projet a déjà été créé pour vous par SageMaker Projects.

Capture d'écran du pipeline de code

  1. Choisissez le projet et sur le Modifier menu, choisissez Environment.

Capture d'écran des configurations

  1. Dans le Configuration avancée section, désélectionner Autoriser AWS CodeBuild à modifier ce rôle de service afin qu'il puisse être utilisé avec ce projet de build.
  2. Ajoutez les variables d'environnement suivantes, en définissant les noms des modèles CloudFormation supplémentaires, de la région secondaire et des paramètres spécifiques au modèle :
    1. EXPORT_TEMPLATE_NAME_SECONDARY_REGION - Pour Valeur, Entrer template-export-secondary-region.yml et pour Type, choisissez Plaintext.
    2. EXPORT_TEMPLATE_SECONDARY_REGION_CONFIG - Pour Valeur, Entrer secondary-region-config-export.json et pour Type, choisissez Plaintext.
    3. AWS_SECONDARY_REGION - Pour Valeur, entrez us-west-2 et pour Type, choisissez Plaintext.
    4. CADRE - Pour Valeur, Entrer xgboost (remplacer par votre framework) et pour Type, choisissez Plaintext.
    5. MODÈLE_VERSION - Pour Valeur, saisissez 1.0-1 (remplacez par la version de votre modèle) et pour Type, choisissez Plaintext.
  3. Copiez la valeur de ARTIFACT_BUCKET dans le Bloc-notes ou un autre éditeur de texte. Vous aurez besoin de cette valeur à l'étape suivante.
  4. Selectionnez Mettre à jour l'environnement.

Vous avez besoin des valeurs que vous avez spécifiées pour la formation du modèle pour FRAMEWORK et les MODEL_VERSION. Par exemple, pour trouver ces valeurs pour le modèle Abalone utilisé dans le déploiement standard MLOps, ouvrez Studio et sur le Navigateur de fichiers menu, ouvrez le dossier avec le nom de votre projet et terminez par modelbuild. Aller vers pipelines/abalone et ouvrez le pipeline.py déposer. Rechercher sagemaker.image_uris.retrieve et copiez les valeurs pertinentes.

Capture d'écran du framework ML

Créer un compartiment de réplica S3 dans la région secondaire

Nous devons créer un compartiment S3 pour contenir les artefacts du modèle dans la région secondaire. SageMaker utilise ce compartiment pour obtenir la dernière version du modèle afin de lancer un point de terminaison d'inférence. Vous ne devez le faire qu'une seule fois. CodeBuild synchronise automatiquement le contenu du compartiment de la région principale avec le compartiment de réplication à chaque exécution de pipeline.

  1. Sur la console Amazon S3, choisissez Créer un seau.
  2. Pour Nom du compartiment, entrez la valeur de ARTEFACT_BUCKET copié à l'étape précédente et ajouter -replica jusqu'à la fin (par exemple, sagemaker-project-X-XXXXXXXX-replica.
  3. Pour Région AWS, entrez votre région secondaire (us-west-2).
  4. Laissez toutes les autres valeurs par défaut et choisissez Créer un seau.

Approuver un modèle pour le déploiement

La phase de déploiement du pipeline nécessite un modèle approuvé pour démarrer. Ceci est requis pour le déploiement dans la région principale.

  1. Dans Studio (région principale), choisissez Ressources SageMaker dans le volet de navigation.
  2. Pour Sélectionnez la ressource à afficher, choisissez Registre des modèles.
  3. Choisissez le nom du groupe de modèles en commençant par le nom de votre projet.
  4. Dans le volet de droite, vérifiez la version, l'étape et l'état du modèle.
  5. Si le statut indique en attente, choisissez la version du modèle, puis choisissez État de mise à jour.
  6. Changer le statut en A approuvé, Puis choisissez État de mise à jour.

Déployer et vérifier les modifications

Toutes les modifications requises pour le déploiement multi-régions de votre point de terminaison d'inférence SageMaker sont désormais terminées et vous pouvez démarrer le processus de déploiement.

  1. Dans Studio, enregistrez tous les fichiers que vous avez modifiés, choisissez Git, et choisissez le référentiel contenant le nom de votre projet et se terminant par déployer.
  2. Choisissez le signe plus pour apporter des modifications.
  3. Sous Changé, ajouter build.py et les buildspec.yml.
  4. Sous Non suivi, ajouter endpoint-config-template-secondary-region.yml et les secondary-region-config.json.
  5. Entrez un commentaire dans le Résumé champ et choisissez S’ENGAGER.
  6. Poussez les modifications vers le référentiel en choisissant Push.

L'envoi de ces modifications vers le référentiel CodeCommit déclenche une nouvelle exécution de pipeline, car un événement EventBridge surveille les validations poussées. Après quelques instants, vous pouvez surveiller l'exécution en accédant au pipeline sur la console CodePipeline.

Assurez-vous de fournir une approbation manuelle pour le déploiement en production et dans la région secondaire.

Vous pouvez vérifier que le point de terminaison de la région secondaire est créé sur la console SageMaker, en choisissant Tableau de bord dans le volet de navigation et en confirmant l'état du point de terminaison dans Activité récente.

Capture d'écran du tableau de bord de Sage Maker

Ajouter API Gateway et Route 53 (facultatif)

Vous pouvez éventuellement suivre les instructions dans Appeler un point de terminaison de modèle Amazon SageMaker à l'aide d'Amazon API Gateway et d'AWS Lambda pour exposer le point de terminaison d'inférence SageMaker dans la région secondaire en tant qu'API en utilisant API Gateway et Lambda.

Nettoyer

Pour supprimer le projet SageMaker, voir Supprimer un projet MLOps à l'aide d'Amazon SageMaker Studio. Pour vous assurer que le point de terminaison d'inférence secondaire est détruit, accédez à la console AWS CloudFormation et supprimez les piles associées dans vos régions principale et secondaire ; cela détruit les points de terminaison d'inférence SageMaker.

Conclusion

Dans cet article, nous avons montré comment un spécialiste MLOps peut modifier un modèle MLOps préconfiguré pour son propre cas d'utilisation de déploiement multirégional, tel que le déploiement de charges de travail dans plusieurs zones géographiques ou dans le cadre de la mise en œuvre d'une stratégie de reprise après sinistre multirégionale. Avec cette approche de déploiement, vous n'avez pas besoin de configurer les services dans la région secondaire et pouvez réutiliser les configurations CodePipeline et CloudBuild dans la région principale pour un déploiement interrégional. De plus, vous pouvez économiser sur les coûts en poursuivant la formation de vos modèles dans la région principale tout en utilisant l'inférence SageMaker dans plusieurs régions pour faire évoluer votre déploiement IA/ML à l'échelle mondiale.

Veuillez nous faire part de vos commentaires dans la section commentaires.


À propos des auteurs

Activez le CI/CD des points de terminaison Amazon SageMaker multi-régions PlatoBlockchain Data Intelligence. Recherche verticale. Aï. Mehran Najafi, PhD, est un architecte de solutions senior pour AWS axé sur les solutions IA/ML et SaaS à grande échelle.

Activez le CI/CD des points de terminaison Amazon SageMaker multi-régions PlatoBlockchain Data Intelligence. Recherche verticale. Aï.Steven Alyekhine est un architecte de solutions senior pour AWS axé sur les MLOps à grande échelle.

Horodatage:

Plus de Apprentissage automatique AWS