Rationalisez les flux de travail d'apprentissage automatique, du développement local aux expériences évolutives en utilisant l' SageMaker IA et Hydra - Recommandations AWS

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Rationalisez les flux de travail d'apprentissage automatique, du développement local aux expériences évolutives en utilisant l' SageMaker IA et Hydra

Créée par David Sauerwein (AWS), Julian Ferdinand Grueber (AWS) et Marco Geiger (AWS)

Récapitulatif

Ce modèle fournit une approche unifiée pour configurer et exécuter des algorithmes d'apprentissage automatique (ML), des tests locaux à la production sur Amazon SageMaker AI. Les algorithmes ML sont au centre de ce modèle, mais son approche s'étend à l'ingénierie des fonctionnalités, à l'inférence et aux pipelines ML complets. Ce modèle illustre la transition entre le développement de scripts locaux et les tâches de formation à l' SageMaker IA à travers un exemple de cas d'utilisation.

Un flux de travail ML typique consiste à développer et tester des solutions sur une machine locale, à exécuter des expériences à grande échelle (par exemple, avec différents paramètres) dans le cloud et à déployer la solution approuvée dans le cloud. Ensuite, la solution déployée doit être surveillée et maintenue. Sans approche unifiée de ce flux de travail, les développeurs doivent souvent refactoriser leur code à chaque étape. Si la solution dépend d'un grand nombre de paramètres susceptibles de changer à n'importe quel stade de ce flux de travail, il peut devenir de plus en plus difficile de rester organisé et cohérent.

Ce modèle répond à ces défis. Tout d'abord, il élimine le besoin de refactoriser le code entre les environnements en fournissant un flux de travail unifié qui reste cohérent, qu'il s'exécute sur des machines locales, dans des conteneurs ou sur SageMaker l'IA. Ensuite, il simplifie la gestion des paramètres grâce au système de configuration d'Hydra, où les paramètres sont définis dans des fichiers de configuration distincts qui peuvent être facilement modifiés et combinés, avec enregistrement automatique de la configuration de chaque exécution. Pour plus de détails sur la manière dont ce modèle permet de relever ces défis, voir Informations supplémentaires.

Conditions préalables et limitations

Prérequis

Limites

  • Le code cible actuellement uniquement les postes de formation SageMaker liés à l'IA. Il est simple de l'étendre aux tâches de traitement et à l'ensemble des pipelines d' SageMaker IA.

  • Pour une configuration d' SageMaker IA entièrement productive, des détails supplémentaires doivent être mis en place. Il peut s'agir de clés custom AWS Key Management Service (AWS KMS) pour le calcul et le stockage, ou de configurations réseau. Vous pouvez également configurer ces options supplémentaires en utilisant Hydra dans un sous-dossier dédié du config dossier.

  • Certains Services AWS ne sont pas disponibles du tout Régions AWS. Pour connaître la disponibilité par région, consultez la section AWS Services par région. Pour des points de terminaison spécifiques, consultez Points de terminaison de service et quotas, puis choisissez le lien correspondant au service.

Architecture

Le schéma suivant décrit l'architecture de la solution.

Flux de travail pour créer et exécuter des formations sur l' SageMaker IA ou des tâches HPO.

Le schéma suivant illustre le flux de travail suivant :

  1. Le data scientist peut itérer l'algorithme à petite échelle dans un environnement local, ajuster les paramètres et tester rapidement le script d'apprentissage sans avoir besoin de Docker ou SageMaker d'IA. (Pour plus de détails, consultez la tâche « Exécuter localement pour des tests rapides » dans Epics.)

  2. Une fois satisfait de l'algorithme, le data scientist crée et envoie l'image Docker vers le référentiel Amazon Elastic Container Registry (Amazon ECR) nommé. hydra-sm-artifact (Pour plus de détails, consultez « Exécuter des flux de travail sur l' SageMaker IA » dans Epics.)

  3. Le data scientist lance des tâches d'entraînement basées sur l' SageMaker IA ou des tâches d'optimisation des hyperparamètres (HPO) à l'aide de scripts Python. Pour les tâches de formation régulières, la configuration ajustée est écrite dans le bucket Amazon Simple Storage Service (Amazon S3) nommé. hydra-sample-config Pour les tâches HPO, le jeu de configuration par défaut situé dans le config dossier est appliqué.

  4. La tâche de formation basée sur l' SageMaker IA extrait l'image Docker, lit les données d'entrée depuis le compartiment hydra-sample-data Amazon S3 et récupère la configuration depuis le compartiment Amazon S3 hydra-sample-config ou utilise la configuration par défaut. Après l'entraînement, la tâche enregistre les données de sortie dans le compartiment Amazon S3hydra-sample-data.

Automatisation et mise à l'échelle

Outils

Services AWS

  • AWS CloudFormationvous aide à configurer les AWS ressources, à les approvisionner rapidement et de manière cohérente, et à les gérer tout au long de leur cycle de vie à travers Comptes AWS et Régions AWS.

  • AWS Command Line Interface (AWS CLI) est un outil open source qui vous permet d'interagir Services AWS par le biais de commandes dans votre interface de ligne de commande. Pour ce modèle, le AWS CLI est utile à la fois pour la configuration initiale des ressources et pour les tests.

  • Amazon Elastic Container Registry (Amazon ECR) est un service géré de registre d'images de conteneurs sécurisé, évolutif et fiable.

  • Amazon SageMaker AI est un service géré d'apprentissage automatique (ML) qui vous aide à créer et à former des modèles de machine learning, puis à les déployer dans un environnement hébergé prêt pour la production. SageMaker AI Training est un service de ML entièrement géré au sein de l' SageMaker IA qui permet la formation de modèles de ML à grande échelle. L'outil peut gérer efficacement les exigences informatiques des modèles de formation, en utilisant l'évolutivité intégrée et l'intégration avec d'autres modèles. Services AWS SageMaker AI Training prend également en charge des algorithmes et des conteneurs personnalisés, ce qui le rend flexible pour un large éventail de flux de travail ML.

  • Amazon Simple Storage Service (Amazon S3) est un service de stockage d'objets basé sur le cloud qui vous permet de stocker, de protéger et de récupérer n'importe quel volume de données.

Autres outils

  • Docker est un ensemble de produits PaaS (plate-forme en tant que service) qui utilisent la virtualisation au niveau du système d'exploitation pour fournir des logiciels dans des conteneurs. Il a été utilisé dans ce modèle pour garantir des environnements cohérents à différentes étapes, du développement au déploiement, ainsi que pour garantir la fiabilité des dépendances et du code. La conteneurisation de Docker a facilité le dimensionnement et le contrôle des versions dans l'ensemble du flux de travail.

  • Hydra est un outil de gestion de configuration qui offre la flexibilité nécessaire pour gérer plusieurs configurations et une gestion dynamique des ressources. Il joue un rôle essentiel dans la gestion des configurations d'environnement, permettant un déploiement fluide dans différents environnements. Pour plus de détails sur Hydra, voir Informations supplémentaires.

  • Python est un langage de programmation informatique polyvalent. Python a été utilisé pour écrire le code ML et le flux de travail de déploiement.

  • Poetry est un outil de gestion des dépendances et d'empaquetage en Python.

Référentiel de code

Le code de ce modèle est disponible dans le dépôt GitHub configuring-sagemaker-training-jobs-with-hydra.

Bonnes pratiques

  • Choisissez un rôle IAM pour le déploiement et le démarrage des tâches de formation à l' SageMaker IA qui respecte le principe du moindre privilège et accorde les autorisations minimales requises pour effectuer une tâche. Pour plus d'informations, consultez les sections Accorder le moindre privilège et Bonnes pratiques en matière de sécurité dans la documentation IAM.

  • Utilisez des informations d'identification temporaires pour accéder au rôle IAM dans le terminal.

Épopées

TâcheDescriptionCompétences requises

Créez et activez l'environnement virtuel.

Pour créer et activer l'environnement virtuel, exécutez les commandes suivantes à la racine du référentiel :

poetry install poetry shell
AWS général

Déployez l'infrastructure.

Pour déployer l'infrastructure à l'aide de CloudFormation, exécutez la commande suivante :

aws cloudformation deploy --template-file infra/hydra-sagemaker-setup.yaml --stack-name hydra-sagemaker-setup --capabilities CAPABILITY_NAMED_IAM
AWS général, DevOps ingénieur

Téléchargez les exemples de données.

Pour télécharger les données d'entrée d'openml sur votre machine locale, exécutez la commande suivante :

python scripts/download_data.py
AWS général

Exécutez localement pour des tests rapides.

Pour exécuter le code d'entraînement localement à des fins de test, exécutez la commande suivante :

python mypackage/train.py data.train_data_path=data/train.csv evaluation.base_dir_path=data

Les journaux de toutes les exécutions sont stockés par heure d'exécution dans un dossier appeléoutputs. Pour plus d'informations, consultez la section « Sortie » du GitHub référentiel.

Vous pouvez également effectuer plusieurs entraînements en parallèle, avec différents paramètres, en utilisant cette --multirun fonctionnalité. Pour plus de détails, consultez la documentation d'Hydra.

Spécialiste des données
TâcheDescriptionCompétences requises

Définissez les variables d'environnement.

Pour exécuter votre tâche sur l' SageMaker IA, définissez les variables d'environnement suivantes, en indiquant votre identifiant Région AWS et votre Compte AWS identifiant :

export ECR_REPO_NAME=hydra-sm-artifact export image_tag=latest export AWS_REGION="<your_aws_region>" # for instance, us-east-1 export ACCOUNT_ID="<your_account_id>" export BUCKET_NAME_DATA=hydra-sample-data-$ACCOUNT_ID export BUCKET_NAME_CONFIG=hydra-sample-config-$ACCOUNT_ID export AWS_DEFAULT_REGION=$AWS_REGION export ROLE_ARN=arn:aws:iam::${ACCOUNT_ID}:role/hydra-sample-sagemaker export INPUT_DATA_S3_PATH=s3://$BUCKET_NAME_DATA/hydra-on-sm/input/ export OUTPUT_DATA_S3_PATH=s3://$BUCKET_NAME_DATA/hydra-on-sm/output/
AWS général

Créez et publiez une image Docker.

Pour créer l'image Docker et la transférer vers le référentiel Amazon ECR, exécutez la commande suivante :

chmod +x scripts/create_and_push_image.sh scripts/create_and_push_image.sh $ECR_REPO_NAME $image_tag $AWS_REGION $ACCOUNT_ID

Cette tâche suppose que vous disposez d'informations d'identification valides dans votre environnement. L'image Docker est envoyée vers le référentiel Amazon ECR spécifié dans la variable d'environnement de la tâche précédente et est utilisée pour activer le conteneur SageMaker AI dans lequel la tâche de formation sera exécutée.

Ingénieur ML, General AWS

Copiez les données d'entrée sur Amazon S3.

Le poste de formation à l' SageMaker IA doit récupérer les données d'entrée. Pour copier les données d'entrée dans le compartiment Amazon S3 pour les données, exécutez la commande suivante :

aws s3 cp data/train.csv "${INPUT_DATA_S3_PATH}train.csv"
Ingénieur de données, General AWS

Soumettez des offres de formation en SageMaker IA.

Pour simplifier l'exécution de vos scripts, spécifiez les paramètres de configuration par défaut dans le default.yaml fichier. En plus de garantir la cohérence entre les cycles, cette approche offre également la flexibilité nécessaire pour remplacer facilement les paramètres par défaut selon les besoins. Consultez l’exemple suivant:

python scripts/start_sagemaker_training_job.py sagemaker.role_arn=$ROLE_ARN sagemaker.config_s3_bucket=$BUCKET_NAME_CONFIG sagemaker.input_data_s3_path=$INPUT_DATA_S3_PATH sagemaker.output_data_s3_path=$OUTPUT_DATA_S3_PATH
AWS général, ingénieur ML, scientifique des données

Exécutez le réglage des hyperparamètres de l' SageMaker IA.

L'exécution du réglage des hyperparamètres de l' SageMaker IA est similaire à la soumission d'une tâche de formation SageMaker AII. Cependant, le script d'exécution diffère sur certains points importants, comme vous pouvez le voir dans le fichier start_sagemaker_hpo_job.py. Les hyperparamètres à régler doivent être transmis via la charge utile du boto3, et non par un canal vers le poste de formation.

Pour démarrer la tâche d'optimisation des hyperparamètres (HPO), exécutez les commandes suivantes :

python scripts/start_sagemaker_hpo_job.py sagemaker.role_arn=$ROLE_ARN sagemaker.config_s3_bucket=$BUCKET_NAME_CONFIG sagemaker.input_data_s3_path=$INPUT_DATA_S3_PATH sagemaker.output_data_s3_path=$OUTPUT_DATA_S3_PATH
Spécialiste des données

Résolution des problèmes

ProblèmeSolution

Jeton expiré

Exportez de nouvelles AWS informations d'identification.

Absence d'autorisations IAM

Assurez-vous d'exporter les informations d'identification d'un rôle IAM disposant de toutes les autorisations IAM requises pour déployer le CloudFormation modèle et démarrer les tâches de formation à l' SageMaker IA.

Ressources connexes

Informations supplémentaires

Ce modèle permet de relever les défis suivants :

Cohérence entre le développement local et le déploiement à grande échelle : grâce à ce modèle, les développeurs peuvent utiliser le même flux de travail, qu'ils utilisent des scripts Python locaux, qu'ils exécutent des conteneurs Docker locaux, qu'ils mènent des expériences de grande envergure sur l' SageMaker IA ou qu'ils déploient en production sur SageMaker l'IA. Cette cohérence est importante pour les raisons suivantes :

  • Itération plus rapide — Cela permet une expérimentation locale rapide sans nécessiter d'ajustements majeurs lors de la mise à l'échelle.

  • Pas de refactorisation : la transition vers des expériences de plus grande envergure sur l' SageMaker IA se fait sans difficulté et ne nécessite aucune refonte de la configuration existante.

  • Amélioration continue — Le développement de nouvelles fonctionnalités et l'amélioration continue de l'algorithme sont simples car le code reste le même dans tous les environnements.

Gestion de la configuration : ce modèle utilise Hydra, un outil de gestion de configuration, pour offrir les avantages suivants :

  • Les paramètres sont définis dans des fichiers de configuration, distincts du code.

  • Les différents ensembles de paramètres peuvent être facilement échangés ou combinés.

  • Le suivi des expériences est simplifié car la configuration de chaque exécution est enregistrée automatiquement.

  • Les expériences dans le cloud peuvent utiliser la même structure de configuration que les exécutions locales, ce qui garantit la cohérence.

Avec Hydra, vous pouvez gérer efficacement la configuration en activant les fonctionnalités suivantes :

  • Divisez les configurations : divisez les configurations de votre projet en éléments plus petits et faciles à gérer qui peuvent être modifiés indépendamment. Cette approche facilite la gestion de projets complexes.

  • Ajustez facilement les paramètres par défaut : modifiez rapidement vos configurations de base afin de tester plus facilement de nouvelles idées.

  • Alignez les entrées CLI et les fichiers de configuration : combinez facilement les entrées de ligne de commande avec vos fichiers de configuration. Cette approche réduit l'encombrement et la confusion, ce qui rend votre projet plus facile à gérer au fil du temps.