

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.

# Entraînement d’un modèle
<a name="ex1-train-model"></a>

Dans cette étape, vous choisissez un algorithme d’entraînement et exécutez une tâche d’entraînement pour le modèle. Le [SDK Amazon SageMaker Python](https://sagemaker.readthedocs.io/en/stable) fournit des estimateurs de framework et des estimateurs génériques pour entraîner votre modèle tout en orchestrant le cycle de vie du machine learning (ML) en accédant aux fonctionnalités d' SageMaker intelligence artificielle pour la formation et aux infrastructures AWS , telles qu'Amazon Elastic Container Registry (Amazon ECR), Amazon Elastic Compute Cloud (Amazon EC2), Amazon Simple Storage Service (Amazon S3) S3). Pour plus d'informations sur les estimateurs de framework intégrés à l' SageMaker IA, consultez [Frameworks](https://sagemaker.readthedocs.io/en/stable/frameworks/index.html) dans la documentation du [SDK Amazon SageMaker Python](https://sagemaker.readthedocs.io/en/stable). Pour plus d’informations sur les algorithmes intégrés, consultez [Built-in algorithmes et modèles préentraînés sur Amazon SageMaker](algos.md).

**Topics**
+ [Choisir l’algorithme d’entraînement](#ex1-train-model-select-algorithm)
+ [Créer et exécuter une tâche d’entraînement](#ex1-train-model-sdk)

## Choisir l’algorithme d’entraînement
<a name="ex1-train-model-select-algorithm"></a>

Pour choisir le bon algorithme pour votre jeu de données, vous devez généralement évaluer différents modèles afin de trouver les modèles les plus adaptés à vos données. Pour des raisons de simplicité, l'algorithme [Algorithme XGBoost avec Amazon AI SageMaker](xgboost.md) intégré à l' SageMaker IA est utilisé tout au long de ce didacticiel sans qu'il soit nécessaire de pré-évaluer les modèles.

**Astuce**  
Si vous souhaitez que l' SageMaker IA trouve un modèle adapté à votre jeu de données tabulaire, utilisez Amazon SageMaker Autopilot qui automatise une solution d'apprentissage automatique. Pour de plus amples informations, veuillez consulter [SageMaker Pilote automatique](autopilot-automate-model-development.md).

## Créer et exécuter une tâche d’entraînement
<a name="ex1-train-model-sdk"></a>

Après avoir déterminé le modèle à utiliser, commencez à créer un estimateur d' SageMaker IA pour la formation. Ce didacticiel utilise l'algorithme intégré XGBoost pour l'estimateur générique SageMaker AI.

**Pour exécuter une tâche d’entraînement du modèle**

1. Importez le [SDK Amazon SageMaker Python](https://sagemaker.readthedocs.io/en/stable) et commencez par récupérer les informations de base de votre session d' SageMaker IA en cours.

   ```
   import sagemaker
   
   region = sagemaker.Session().boto_region_name
   print("AWS Region: {}".format(region))
   
   role = sagemaker.get_execution_role()
   print("RoleArn: {}".format(role))
   ```

   Cela renvoie les informations suivantes :
   + `region`— La AWS région actuelle dans laquelle l'instance de bloc-notes SageMaker AI est exécutée.
   + `role` : le rôle IAM utilisé par l’instance de bloc-notes.
**Note**  
Vérifiez la version du SDK SageMaker Python en exécutant`sagemaker.__version__`. Ce tutoriel est basé sur `sagemaker>=2.20`. Si le kit SDK est obsolète, installez la dernière version en exécutant la commande suivante :   

   ```
   ! pip install -qU sagemaker
   ```
Si vous exécutez cette installation dans vos instances SageMaker Studio ou Notebook existantes, vous devez actualiser manuellement le noyau pour terminer l'application de la mise à jour de version.

1. Créez un estimateur XGBoost à l'aide de la classe `sagemaker.estimator.Estimator`. Dans l’exemple de code suivant, l’estimateur XGBoost se nomme `xgb_model`.

   ```
   from sagemaker.debugger import Rule, ProfilerRule, rule_configs
   from sagemaker.session import TrainingInput
   
   s3_output_location='s3://{}/{}/{}'.format(bucket, prefix, 'xgboost_model')
   
   container=sagemaker.image_uris.retrieve("xgboost", region, "1.2-1")
   print(container)
   
   xgb_model=sagemaker.estimator.Estimator(
       image_uri=container,
       role=role,
       instance_count=1,
       instance_type='ml.m4.xlarge',
       volume_size=5,
       output_path=s3_output_location,
       sagemaker_session=sagemaker.Session(),
       rules=[
           Rule.sagemaker(rule_configs.create_xgboost_report()),
           ProfilerRule.sagemaker(rule_configs.ProfilerReport())
       ]
   )
   ```

   Pour construire l'estimateur SageMaker AI, spécifiez les paramètres suivants :
   + `image_uri` : spécifiez l’URI de l’image du conteneur d’entraînement. Dans cet exemple, l' SageMaker URI du conteneur d'entraînement AI XGBoost est spécifiée à l'aide de. `sagemaker.image_uris.retrieve`
   + `role`— Le rôle Gestion des identités et des accès AWS (IAM) que l' SageMaker IA utilise pour effectuer des tâches en votre nom (par exemple, lire les résultats de formation, appeler les artefacts du modèle depuis Amazon S3 et écrire les résultats de formation sur Amazon S3). 
   + `instance_count` et `instance_type` : type et nombre d’instances de calcul de ML Amazon EC2 à utiliser pour l’entraînement des modèles. Dans le cadre de cet exercice d'entraînement, vous utilisez une instance `ml.m4.xlarge` unique, qui dispose de 4 processeurs, de 16 Go de mémoire, d'un stockage Amazon Elastic Block Store (Amazon EBS) et de performances réseau élevées. Pour plus d’informations sur les types d’instance de calcul EC2 pris en charge, consultez [Types d’instance Amazon EC2](https://aws.amazon.com/ec2/instance-types/). Pour plus d'informations sur la facturation, consultez les [ SageMaker tarifs Amazon](https://aws.amazon.com/sagemaker/pricing/). 
   + `volume_size` – Taille, en Go, du volume de stockage EBS à attacher à l'instance d'entraînement. Elle doit être suffisamment importante pour stocker des données d’entraînement si vous utilisez le mode `File` (le mode `File` est activé par défaut). Si vous ne spécifiez pas ce paramètre, il est défini par défaut sur 30.
   + `output_path`— Le chemin vers le compartiment S3 où l' SageMaker IA stocke l'artefact du modèle et les résultats d'entraînement.
   + `sagemaker_session`— L'objet de session qui gère les interactions avec les opérations d' SageMaker API et les autres AWS services utilisés par la tâche de formation.
   + `rules`— Spécifiez une liste de règles intégrées au SageMaker Debugger. Dans cet exemple, la règle `create_xgboost_report()` crée un rapport XGBoost qui fournit des informations sur les progrès et les résultats de l'entraînement. La règle `ProfilerReport()` crée un rapport concernant l'utilisation des ressources de calcul EC2. Pour de plus amples informations, veuillez consulter [SageMaker Rapport interactif du débogueur pour XGBoost](debugger-report-xgboost.md).
**Astuce**  
Si vous souhaitez exécuter un entraînement distribué sur des modèles d'apprentissage profond de grande taille, tels que les réseaux neuronaux convolutifs (CNN) et les modèles de traitement du langage naturel (NLP), utilisez SageMaker AI Distributed pour le parallélisme des données ou le parallélisme des modèles. Pour de plus amples informations, veuillez consulter [Formation distribuée sur Amazon SageMaker AI](distributed-training.md).

1. Définissez les hyperparamètres pour l'algorithme XGBoost en appelant la méthode `set_hyperparameters` de l'estimateur. Pour obtenir la liste complète des hyperparamètres XGBoost, consultez [Hyperparamètres XGBoost](xgboost_hyperparameters.md).

   ```
   xgb_model.set_hyperparameters(
       max_depth = 5,
       eta = 0.2,
       gamma = 4,
       min_child_weight = 6,
       subsample = 0.7,
       objective = "binary:logistic",
       num_round = 1000
   )
   ```
**Astuce**  
Vous pouvez également régler les hyperparamètres à l'aide de la fonction d'optimisation des hyperparamètres de l' SageMaker IA. Pour de plus amples informations, veuillez consulter [Réglage automatique du modèle grâce à l' SageMaker IA](automatic-model-tuning.md). 

1. Utilisation de la classe `TrainingInput` pour configurer un flux d'entrée de données pour l'entraînement. L'exemple de code suivant montre comment configurer des objets `TrainingInput` pour utiliser les jeux de données d'entraînement et de validation que vous avez chargés sur Amazon S3 dans la section [Diviser le jeu de données en jeux de données d'entraînement, de validation et de test](ex1-preprocess-data.md#ex1-preprocess-data-transform).

   ```
   from sagemaker.session import TrainingInput
   
   train_input = TrainingInput(
       "s3://{}/{}/{}".format(bucket, prefix, "data/train.csv"), content_type="csv"
   )
   validation_input = TrainingInput(
       "s3://{}/{}/{}".format(bucket, prefix, "data/validation.csv"), content_type="csv"
   )
   ```

1. Pour démarrer l'entraînement du modèle, appelez la méthode `fit` de l'estimateur avec les jeux de données d'entraînement et de validation. En définissant `wait=True`, la méthode `fit` affiche les journaux de progression et attend que l'entraînement se termine.

   ```
   xgb_model.fit({"train": train_input, "validation": validation_input}, wait=True)
   ```

   Pour plus d’informations sur l’entraînement des modèles, consultez [Entraînez un modèle avec Amazon SageMaker](how-it-works-training.md). Cette tâche d'entraînement de tutoriel peut prendre jusqu'à 10 minutes.

   Une fois le travail de formation terminé, vous pouvez télécharger un rapport de formation XGBoost et un rapport de profilage généré par SageMaker Debugger. Le rapport d'entraînement XGBoost vous offre des informations sur la progression et les résultats de l'entraînement, telles que la fonction de perte en lien avec l'itération, l'importance de la fonction, la matrice de confusion, les courbes de précision et d'autres résultats statistiques de l'entraînement. Par exemple, vous pouvez trouver la courbe de perte suivante à partir du rapport d’entraînement XGBoost qui indique clairement qu’il y a un problème de surajustement.  
![Le graphique figurant dans le rapport d’entraînement XGBoost.](http://docs.aws.amazon.com/fr_fr/sagemaker/latest/dg/images/get-started-ni/gs-ni-train-loss-curve-validation-overfitting.png)

   Exécutez le code suivant pour spécifier l’URI du compartiment S3 dans lequel les rapports d’entraînement de Debugger sont générés et vérifiez si les rapports existent.

   ```
   rule_output_path = xgb_model.output_path + "/" + xgb_model.latest_training_job.job_name + "/rule-output"
   ! aws s3 ls {rule_output_path} --recursive
   ```

   Téléchargez les rapports d'entraînement et de profilage Debugger XGBoost dans l'espace de travail actuel :

   ```
   ! aws s3 cp {rule_output_path} ./ --recursive
   ```

   Exécutez le script IPython suivant pour obtenir le lien de fichier du rapport d'entraînement XGBoost :

   ```
   from IPython.display import FileLink, FileLinks
   display("Click link below to view the XGBoost Training report", FileLink("CreateXgboostReport/xgboost_report.html"))
   ```

   Le script IPython suivant renvoie le lien de fichier du rapport de profilage Debugger qui affiche les résumés et les détails de l'utilisation des ressources d'instance EC2, des résultats de détection de goulot d'étranglement système et des résultats de profilage d'opération de Python :

   ```
   profiler_report_name = [rule["RuleConfigurationName"] 
                           for rule in xgb_model.latest_training_job.rule_job_summary() 
                           if "Profiler" in rule["RuleConfigurationName"]][0]
   profiler_report_name
   display("Click link below to view the profiler report", FileLink(profiler_report_name+"/profiler-output/profiler-report.html"))
   ```
**Astuce**  
Si les rapports HTML n'affichent pas de tracés dans la JupyterLab vue, vous devez sélectionner **Trust HTML** en haut des rapports.  
Pour identifier les problèmes d'entraînement, tels que le surajustement, la disparition des dégradés et les autres problèmes qui empêchent la convergence de votre modèle, utilisez SageMaker Debugger et effectuez des actions automatisées lors du prototypage et de l'entraînement de vos modèles ML. Pour de plus amples informations, veuillez consulter [SageMaker Débogueur Amazon](train-debugger.md). Pour obtenir une analyse complète des paramètres du modèle, consultez l'exemple de [bloc-notes Explainability with Amazon SageMaker Debugger](https://sagemaker-examples.readthedocs.io/en/latest/sagemaker-debugger/xgboost_census_explanations/xgboost-census-debugger-rules.html#Explainability-with-Amazon-SageMaker-Debugger). 

Vous disposez désormais d'un modèle XGBoost entraîné. SageMaker L'IA stocke l'artefact du modèle dans votre compartiment S3. Pour trouver l’emplacement de l’artefact du modèle, exécutez le code suivant pour imprimer l’attribut model\_data de l’estimateur `xgb_model` :

```
xgb_model.model_data
```

**Astuce**  
Pour mesurer les biais qui peuvent survenir à chaque étape du cycle de vie du machine learning (collecte de données, apprentissage et réglage des modèles, surveillance des modèles de machine learning déployés à des fins de prédiction), utilisez SageMaker Clarify. Pour de plus amples informations, veuillez consulter [Explicabilité du modèle](clarify-model-explainability.md). Pour un exemple de bout en bout, consultez le bloc-notes d'exemples [Équité et explicabilité avec SageMaker ](https://sagemaker-examples.readthedocs.io/en/latest/sagemaker-clarify/fairness_and_explainability/fairness_and_explainability.html) Clarify.