

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
<a name="streamline-machine-learning-workflows-by-using-amazon-sagemaker"></a>

*David Sauerwein, Marco Geiger et Julian Ferdinand Grueber, Amazon Web Services*

## Résumé
<a name="streamline-machine-learning-workflows-by-using-amazon-sagemaker-summary"></a>

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, dans lequel 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](#streamline-machine-learning-workflows-by-using-amazon-sagemaker-additional).

## Conditions préalables et limitations
<a name="streamline-machine-learning-workflows-by-using-amazon-sagemaker-prereqs"></a>

**Conditions préalables**
+ Un actif Compte AWS
+ Un [rôle d'utilisateur Gestion des identités et des accès AWS (IAM) pour le](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html) déploiement et le démarrage des tâches de formation à l' SageMaker IA
+ AWS Command Line Interface (AWS CLI) version 2.0 ou ultérieure [installée](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html) et [configurée](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html)
+ [Poetry](https://python-poetry.org/) version 1.8 ou ultérieure, mais antérieure à 2.0, installée
+ [Docker installé](https://www.docker.com/)
+ [Version 3.10.x](https://www.python.org/downloads/release/python-31011/) de Python

**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](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/). Pour des points de terminaison spécifiques, consultez [Points de terminaison de service et quotas](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html), puis choisissez le lien correspondant au service.

## Architecture
<a name="streamline-machine-learning-workflows-by-using-amazon-sagemaker-architecture"></a>

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.](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/1db57484-f85c-49a6-b870-471dade02b26/images/d80e7474-a975-4d92-8f66-2d34e33053fd.png)


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](#streamline-machine-learning-workflows-by-using-amazon-sagemaker-epics).)

1. 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](#streamline-machine-learning-workflows-by-using-amazon-sagemaker-epics).)

1. 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é.

1. 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 S3`hydra-sample-data`.

**Automatisation et mise à l'échelle**
+ [Pour une formation, un recyclage ou une inférence automatisés, vous pouvez intégrer le AWS CLI code à des services tels que [AWS Lambda[AWS CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html)](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html), ou Amazon. EventBridge](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-what-is.html)
+ La mise à l'échelle peut être réalisée en modifiant les configurations relatives à la taille des instances ou en ajoutant des configurations pour la formation distribuée.

## Outils
<a name="streamline-machine-learning-workflows-by-using-amazon-sagemaker-tools"></a>

**Services AWS**
+ [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)vous 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, de bout Comptes AWS en bout Régions AWS.
+ [AWS Command Line Interface (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) 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](https://docs.aws.amazon.com/AmazonECR/latest/userguide/what-is-ecr.html)) est un service géré de registre d'images de conteneurs sécurisé, évolutif et fiable.
+ [Amazon SageMaker AI](https://docs.aws.amazon.com/sagemaker/?id=docs_gateway) 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)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) 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](https://www.docker.com/) est un ensemble de produits de plateforme en tant que service (PaaS) 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](https://hydra.cc/) outil de gestion de configuration qui offre la flexibilité nécessaire à la gestion de plusieurs configurations et à la 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](#streamline-machine-learning-workflows-by-using-amazon-sagemaker-additional).
+ [Python](https://www.python.org/) 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](https://python-poetry.org/) 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](https://github.com/aws-samples/configuring-sagemaker-training-jobs-with-hydra).

## Bonnes pratiques
<a name="streamline-machine-learning-workflows-by-using-amazon-sagemaker-best-practices"></a>
+ 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](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#grant-least-priv) et [Bonnes pratiques en matière de sécurité](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) dans la documentation IAM.
+ Utilisez des informations d'identification temporaires pour accéder au rôle IAM dans le terminal.

## Épopées
<a name="streamline-machine-learning-workflows-by-using-amazon-sagemaker-epics"></a>

### Configuration de l'environnement
<a name="set-up-the-environment"></a>


| Sous-tâche | Description | Compé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 :<pre>poetry install <br />poetry shell</pre> | AWS général | 
| Déployez l'infrastructure.  | Pour déployer l'infrastructure à l'aide de CloudFormation, exécutez la commande suivante :<pre>aws cloudformation deploy --template-file infra/hydra-sagemaker-setup.yaml --stack-name hydra-sagemaker-setup  --capabilities CAPABILITY_NAMED_IAM</pre> | 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](https://www.openml.org/) sur votre machine locale, exécutez la commande suivante :<pre>python scripts/download_data.py</pre> | 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 :<pre>python mypackage/train.py data.train_data_path=data/train.csv evaluation.base_dir_path=data</pre><br />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](https://github.com/aws-samples/configuring-sagemaker-training-jobs-with-hydra).<br />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](https://hydra.cc/docs/tutorials/basic/running_your_app/multi-run/). | Scientifique des données | 

### Exécutez des flux de travail sur l' SageMaker IA
<a name="run-workflows-on-sm"></a>


| Sous-tâche | Description | Compé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 :<pre>export ECR_REPO_NAME=hydra-sm-artifact<br />export image_tag=latest<br />export AWS_REGION="<your_aws_region>" # for instance, us-east-1<br />export ACCOUNT_ID="<your_account_id>"<br />export BUCKET_NAME_DATA=hydra-sample-data-$ACCOUNT_ID<br />export BUCKET_NAME_CONFIG=hydra-sample-config-$ACCOUNT_ID<br />export AWS_DEFAULT_REGION=$AWS_REGION<br />export ROLE_ARN=arn:aws:iam::${ACCOUNT_ID}:role/hydra-sample-sagemaker<br />export INPUT_DATA_S3_PATH=s3://$BUCKET_NAME_DATA/hydra-on-sm/input/<br />export OUTPUT_DATA_S3_PATH=s3://$BUCKET_NAME_DATA/hydra-on-sm/output/</pre> | 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 :<pre>chmod +x scripts/create_and_push_image.sh<br />scripts/create_and_push_image.sh $ECR_REPO_NAME $image_tag $AWS_REGION $ACCOUNT_ID</pre><br />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 : <pre>aws s3 cp data/train.csv "${INPUT_DATA_S3_PATH}train.csv" </pre> | 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:<pre>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</pre> | 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](https://github.com/aws-samples/configuring-sagemaker-training-jobs-with-hydra/blob/main/scripts/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.<br />Pour démarrer la tâche d'optimisation des hyperparamètres (HPO), exécutez les commandes suivantes :<pre>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</pre> | Scientifique des données | 

## Résolution des problèmes
<a name="streamline-machine-learning-workflows-by-using-amazon-sagemaker-troubleshooting"></a>


| Problème | Solution | 
| --- | --- | 
| 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
<a name="streamline-machine-learning-workflows-by-using-amazon-sagemaker-resources"></a>
+ [Entraînez un modèle avec Amazon SageMaker AI](https://docs.aws.amazon.com/sagemaker/latest/dg/how-it-works-training.html) (AWS documentation)
+ [Qu'est-ce que le réglage des hyperparamètres ?](https://aws.amazon.com/what-is/hyperparameter-tuning/#:~:text=Hyperparameter%20tuning%20allows%20data%20scientists,the%20model%20as%20a%20hyperparameter.)

## Informations supplémentaires
<a name="streamline-machine-learning-workflows-by-using-amazon-sagemaker-additional"></a>

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](https://hydra.cc/) 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.

 