

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.

# Comment Amazon SageMaker AI fournit des informations de formation
<a name="your-algorithms-training-algo-running-container"></a>

Cette section explique comment l' SageMaker IA met les informations d'entraînement, telles que les données d'entraînement, les hyperparamètres et autres informations de configuration, à la disposition de votre conteneur Docker. 

Lorsque vous envoyez une [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html)demande à SageMaker AI pour démarrer l'entraînement du modèle, vous spécifiez le chemin Amazon Elastic Container Registry (Amazon ECR) de l'image Docker contenant l'algorithme d'entraînement. Vous spécifiez également l'emplacement Amazon Simple Storage Service (Amazon S3) où les données d'entraînement sont stockées, ainsi que les paramètres spécifiques à l'algorithme. SageMaker L'IA met ces informations à la disposition du conteneur Docker afin que votre algorithme d'entraînement puisse les utiliser. Cette section explique comment ces informations sont rendues disponibles pour votre conteneur Docker. Pour plus d’informations sur la création d’une tâche d’entraînement, consultez `CreateTrainingJob`. Pour plus d'informations sur la manière dont les conteneurs SageMaker AI organisent les informations, consultez[SageMaker Boîtes à outils de formation et d'inférence](amazon-sagemaker-toolkits.md).

**Topics**
+ [Hyperparamètres](#your-algorithms-training-algo-running-container-hyperparameters)
+ [Variables d’environnement](#your-algorithms-training-algo-running-container-environment-variables)
+ [Configuration des données d’entrée](#your-algorithms-training-algo-running-container-inputdataconfig)
+ [Données d’entraînement](#your-algorithms-training-algo-running-container-trainingdata)
+ [Configuration d’entraînement distribué](#your-algorithms-training-algo-running-container-dist-training)

## Hyperparamètres
<a name="your-algorithms-training-algo-running-container-hyperparameters"></a>

 SageMaker L'IA rend les hyperparamètres d'une `CreateTrainingJob` requête disponibles dans le conteneur Docker du `/opt/ml/input/config/hyperparameters.json` fichier.

Voici un exemple de configuration d'hyperparamètres permettant de spécifier `hyperparameters.json` les `eta` hyperparamètres `num_round` et dans l'`CreateTrainingJob`opération pour. [XGBoost](https://docs.aws.amazon.com/sagemaker/latest/dg/xgboost.html) 

```
{
    "num_round": "128",
    "eta": "0.001"
}
```

Pour une liste complète des hyperparamètres pouvant être utilisés pour l' XGBoost algorithme intégré de l' SageMaker IA, voir [XGBoostHyperparamètres](https://docs.aws.amazon.com/sagemaker/latest/dg/xgboost_hyperparameters.html).

Les hyperparamètres que vous pouvez régler dépendent de l’algorithme que vous entraînez. Pour obtenir la liste des hyperparamètres disponibles pour un algorithme intégré à l' SageMaker IA, retrouvez-les dans **Hyperparamètres** sous le lien de l'algorithme dans Utiliser les [algorithmes intégrés ou les modèles pré-entraînés d'Amazon SageMaker AI](https://docs.aws.amazon.com/sagemaker/latest/dg/algos.html).

## Variables d’environnement
<a name="your-algorithms-training-algo-running-container-environment-variables"></a>

SageMaker L'IA définit les variables d'environnement suivantes dans votre conteneur :
+ TRAINING\$1JOB\$1NAME : spécifiée dans le paramètre `TrainingJobName` de la requête `CreateTrainingJob`.
+ TRAINING\$1JOB\$1ARN : Amazon Resource Name (ARN) de la tâche d’entraînement renvoyée en tant que `TrainingJobArn` dans la réponse `CreateTrainingJob`.
+ Toutes les variables d’environnement spécifiées dans le paramètre [Environnement](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html#sagemaker-CreateTrainingJob-request-Environment) de la demande `CreateTrainingJob`.

## Configuration des données d’entrée
<a name="your-algorithms-training-algo-running-container-inputdataconfig"></a>

SageMaker L'IA met les informations du canal de données contenues dans le `InputDataConfig` paramètre de votre `CreateTrainingJob` demande à disposition dans le `/opt/ml/input/config/inputdataconfig.json` fichier de votre conteneur Docker.

Supposons, par exemple, que vous spécifiez trois canaux de données (`train``evaluation`, et`validation`) dans votre demande. SageMaker AI fournit le JSON suivant :

```
{
  "train" : {"ContentType":  "trainingContentType",
             "TrainingInputMode": "File",
             "S3DistributionType": "FullyReplicated",
             "RecordWrapperType": "None"},
  "evaluation" : {"ContentType":  "evalContentType",
                  "TrainingInputMode": "File",
                  "S3DistributionType": "FullyReplicated",
                  "RecordWrapperType": "None"},
  "validation" : {"TrainingInputMode": "File",
                  "S3DistributionType": "FullyReplicated",
                  "RecordWrapperType": "None"}
}
```

**Note**  
SageMaker L'IA fournit uniquement des informations pertinentes sur chaque canal de données (par exemple, le nom du canal et le type de contenu) au conteneur, comme indiqué dans l'exemple précédent. `S3DistributionType`sera défini comme `FullyReplicated` si vous spécifiiez EFS ou FSx Lustre comme sources de données d'entrée.

## Données d’entraînement
<a name="your-algorithms-training-algo-running-container-trainingdata"></a>

Le paramètre `TrainingInputMode` dans `AlgorithmSpecification` de la demande [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html) spécifie comment le jeu de données d’entraînement est mis à la disposition de votre conteneur. Les modes d’entrée suivants sont disponibles.
+ **Mode `File`**

  Si vous utilisez `File` le mode comme `TrainingInputMode` valeur, l' SageMaker IA définit les paramètres suivants dans votre conteneur.
  + Votre paramètre `TrainingInputMode` est écrit dans `inputdataconfig.json` sous la forme « File ».
  + Votre répertoire de canaux de données est écrit dans `/opt/ml/input/data/channel_name`.

  Si vous utilisez `File` le mode, SageMaker l'IA crée un répertoire pour chaque canal. Par exemple, si vous avez trois canaux nommés `training` `validation``testing`, et que SageMaker AI crée les trois répertoires suivants dans votre conteneur Docker : 
  + `/opt/ml/input/data/training`
  + `/opt/ml/input/data/validation`
  + `/opt/ml/input/data/testing`

  Le mode `File` prend également en charge les sources de données suivantes.
  + Amazon Simple Storage Service (Amazon S3)
  + Amazon Elastic File System (Amazon EFS)
  + Amazon FSx pour Lustre
**Note**  
Les canaux qui utilisent des sources de données de systèmes de fichiers telles qu'Amazon EFS et Amazon FSx doivent utiliser `File` le mode. Dans ce cas, le chemin de répertoire fourni dans le canal est monté à l’emplacement `/opt/ml/input/data/channel_name`.
+ **Mode `FastFile`**

  Si vous utilisez `FastFile` le mode comme votre`TrainingInputNodeParameter`, l' SageMaker IA définit les paramètres suivants dans votre conteneur.
  + Comme en mode `File`, en mode `FastFile`, votre paramètre `TrainingInputMode` est écrit dans `inputdataconfig.json` sous la forme « File ».
  + Votre répertoire de canaux de données est écrit dans `/opt/ml/input/data/channel_name`.

  Le mode `FastFile` prend en charge les sources de données suivantes.
  + Amazon S3

  Si vous utilisez le mode `FastFile`, le répertoire des canaux est monté avec une autorisation en lecture seule.

  Historiquement, le mode `File` a précédé le mode `FastFile`. Pour garantir la rétrocompatibilité, les algorithmes qui prennent en charge le mode `File` peuvent également fonctionner sans problème avec le mode `FastFile` tant que le paramètre `TrainingInputMode` est défini sur `File` dans `inputdataconfig.json.`.
**Note**  
Les canaux qui utilisent le mode `FastFile` doivent utiliser un `S3DataType` « S3Prefix ».  
Le mode `FastFile` présente une vue de dossier qui utilise la barre oblique (`/`) comme délimiteur pour regrouper les objets Amazon S3 dans des dossiers. Les préfixes `S3Uri` ne doivent pas correspondre à un nom de dossier partiel. Par exemple, si un jeu de données Amazon S3 contient `s3://amzn-s3-demo-bucket/train-01/data.csv`, ni `s3://amzn-s3-demo-bucket/train` ni `s3://amzn-s3-demo-bucket/train-01` ne sont autorisés comme préfixes `S3Uri`.  
Une barre oblique finale est recommandée pour définir un canal correspondant à un dossier. Par exemple, le canal `s3://amzn-s3-demo-bucket/train-01/` du dossier `train-01`. Sans la barre oblique finale, le canal serait ambigu s’il existait un autre dossier `s3://amzn-s3-demo-bucket/train-011/` ou fichier `s3://amzn-s3-demo-bucket/train-01.txt/`.
+ **Mode `Pipe`**
  + Paramètre `TrainingInputMode` écrit dans `inputdataconfig.json` : « Pipe »
  + Répertoire du canal de données dans le conteneur Docker : `/opt/ml/input/data/channel_name_epoch_number`
  + Sources de données prises en charge : Amazon S3

  Vous devez lire à partir d’un tube séparé pour chaque canal. Par exemple, si vous disposez de trois canaux nommés `training`, `validation` et `testing`, vous devez lire à partir des tubes suivants :
  + `/opt/ml/input/data/training_0, /opt/ml/input/data/training_1, ...`
  + `/opt/ml/input/data/validation_0, /opt/ml/input/data/validation_1, ...`
  + `/opt/ml/input/data/testing_0, /opt/ml/input/data/testing_1, ...`

  Lisez les tubes de manière séquentielle. Par exemple, si vous avez un canal appelé `training`, lisez les tubes selon cette séquence : 

  1. Ouvrez `/opt/ml/input/data/training_0` en mode lecture et lisez-le sur end-of-file (EOF) ou, si vous en avez terminé avec la première époque, fermez le fichier pipe plus tôt. 

  1. Après avoir fermé le premier fichier tube, recherchez `/opt/ml/input/data/training_1` et lisez-le jusqu’à ce que vous ayez terminé la deuxième époque, etc.

  Si le fichier correspondant à une époque donnée n’existe pas encore, votre code devra peut-être réessayer jusqu’à ce que le tube soit créé. Il n’y a aucune restriction de séquençage parmi les types de canal. Par exemple, vous pouvez lire plusieurs époques pour le canal `training` et commencer à lire le canal `validation` lorsque vous êtes prêt. Vous pouvez également les lire simultanément si votre algorithme le nécessite.

  Pour un exemple de bloc-notes Jupyter qui montre comment utiliser le mode Pipe lorsque vous apportez votre propre conteneur, consultez l'article [Apporter votre propre algorithme en mode tuyau à Amazon AI](https://github.com/aws/amazon-sagemaker-examples/blob/main/advanced_functionality/pipe_bring_your_own/pipe_bring_your_own.ipynb). SageMaker 

  

SageMaker L'entraînement par modèle d'IA prend en charge les compartiments de répertoire S3 Express One Zone à hautes performances comme emplacement d'entrée de données pour le mode fichier, le mode fichier rapide et le mode tube. Pour utiliser S3 Express One Zone, entrez l’emplacement du compartiment de répertoire S3 Express One Zone au lieu d’un compartiment Amazon S3 à usage général. Fournissez l’ARN du rôle IAM avec la politique de contrôle d’accès et d’autorisation requise. Pour plus d'informations, consultez [AmazonSageMakerFullAccesspolicy](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonSageMakerFullAccess.html). Vous ne pouvez chiffrer vos données de sortie d' SageMaker IA que dans des compartiments de répertoire avec un chiffrement côté serveur avec des clés gérées par Amazon S3 (SSE-S3). Le chiffrement côté serveur à l'aide de AWS KMS clés (SSE-KMS) n'est actuellement pas pris en charge pour le stockage des données de sortie de l' SageMaker IA dans des compartiments d'annuaire. Pour plus d’informations, consultez [S3 Express One Zone](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-one-zone.html).

## Configuration d’entraînement distribué
<a name="your-algorithms-training-algo-running-container-dist-training"></a>

Si vous effectuez une formation distribuée avec plusieurs conteneurs, l' SageMaker IA rend les informations relatives à tous les conteneurs disponibles dans le `/opt/ml/input/config/resourceconfig.json` fichier.

Pour permettre la communication entre conteneurs, ce fichier JSON contient des informations pour tous les conteneurs. SageMaker L'IA rend ce fichier disponible pour les algorithmes à la fois `File` et pour les algorithmes de `Pipe` mode. Le fichier fournit les informations suivantes :
+ `current_host` : nom du conteneur actuel sur le réseau de conteneurs. Par exemple, `algo-1`. Les valeurs d’hôte peuvent changer à tout moment. N’écrivez pas de code contenant des valeurs spécifiques pour cette variable.
+ `hosts` : liste des noms de tous les conteneurs sur le réseau de conteneurs, triée de manière lexicographique. Par exemple, `["algo-1", "algo-2", "algo-3"]` pour un cluster à trois nœuds. Les conteneurs peuvent utiliser ces noms pour traiter d’autres conteneurs sur le réseau de conteneurs. Les valeurs d’hôte peuvent changer à tout moment. N’écrivez pas de code contenant des valeurs spécifiques pour ces variables.
+ `network_interface_name` : nom de l’interface réseau qui est exposée à votre conteneur. Par exemple, les conteneurs utilisant l’interface Message Passing Interface (MPI) peuvent utiliser ces informations pour définir le nom de l’interface réseau.
+ N’utilisez pas les informations de `/etc/hostname` ou `/etc/hosts`, car elles peuvent être inexactes.
+ Les informations sur les noms d’hôte peuvent ne pas être immédiatement disponibles pour le conteneur de l’algorithme. Nous vous recommandons d’ajouter une politique de nouvelle tentative aux opérations de résolution de nom d’hôte quand les nœuds deviennent disponibles dans le cluster.

Voici un exemple de fichier sur le nœud 1 d’un cluster à trois nœuds :

```
{
    "current_host": "algo-1",
    "hosts": ["algo-1","algo-2","algo-3"],
    "network_interface_name":"eth1"
}
```