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.
Mise à disposition d’informations d’entraînement par Amazon SageMaker AI
Cette section explique comment SageMaker AI met à la disposition de votre conteneur Docker des informations d’entraînement telles que des données d’entraînement, des hyperparamètres et d’autres informations de configuration.
Lorsque vous envoyez une demande CreateTrainingJob à SageMaker AI pour démarrer l’entraînement du modèle, vous spécifiez le chemin d’Amazon Elastic Container Registry (Amazon ECR) de l’image Docker qui contient l’algorithme d’entraînement. Vous spécifiez également l’emplacement Amazon Simple Storage Service (Amazon S3) dans lequel les données d’entraînement sont stockées, ainsi que les paramètres spécifiques à l’algorithme. SageMaker AI met ces informations à 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 façon dont les conteneurs SageMaker AI organisent les informations, consultez Boîtes à outils d’entraînement et d’inférence SageMaker.
Rubriques
Hyperparamètres
SageMaker AI rend les hyperparamètres d’une requête CreateTrainingJob disponibles dans le conteneur Docker dans le fichier /opt/ml/input/config/hyperparameters.json.
Voici un exemple de configuration d’hyperparamètres dans hyperparameters.json permettant de spécifier les hyperparamètres num_round et eta dans l’opération CreateTrainingJob pour XGBoost.
{ "num_round": "128", "eta": "0.001" }
Pour obtenir la liste complète des hyperparamètres pouvant être utilisés pour l’algorithme XGBoost intégré à SageMaker AI, consultez Hyperparamètres XGBoost.
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é de SageMaker AI, reportez-vous à la liste Hyperparamètres sous le lien de l’algorithme dans Utilisation des algorithmes intégrés d’Amazon SageMaker AI ou des modèles pré-entraînés.
Variables d’environnement
SageMaker AI définit les variables d’environnement suivantes dans votre conteneur :
-
TRAINING_JOB_NAME : spécifiée dans le paramètre
TrainingJobNamede la requêteCreateTrainingJob. -
TRAINING_JOB_ARN : Amazon Resource Name (ARN) de la tâche d’entraînement renvoyée en tant que
TrainingJobArndans la réponseCreateTrainingJob. -
Toutes les variables d’environnement spécifiées dans le paramètre Environnement de la demande
CreateTrainingJob.
Configuration des données d’entrée
SageMaker AI met à disposition les informations de canal de données spécifiées dans le paramètre InputDataConfig de votre demande CreateTrainingJob dans le fichier /opt/ml/input/config/inputdataconfig.json de votre conteneur Docker.
Par exemple, supposons que vous spécifiiez trois canaux de données (train, evaluation et validation) dans votre requête. SageMaker AI fournit les informations JSON suivantes :
{ "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 AI 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 sur FullyReplicated si vous spécifiez EFS ou FSxLustre comme sources de données d’entrée.
Données d’entraînement
Le paramètre TrainingInputMode dans AlgorithmSpecification de la demande CreateTrainingJob 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
FileSi vous utilisez le mode
Filecomme valeurTrainingInputMode, SageMaker AI définit les paramètres suivants dans votre conteneur.-
Votre paramètre
TrainingInputModeest écrit dansinputdataconfig.jsonsous la forme « File ». -
Votre répertoire de canaux de données est écrit dans
/opt/ml/input/data/.channel_name
Si vous utilisez le mode
File, SageMaker AI crée un répertoire pour chaque canal. Par exemple, si vous avez trois canaux nomméstraining,validationettesting, 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
Fileprend é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ème de fichiers telles qu’Amazon EFS et Amazon FSx doivent utiliser le mode
File. Dans ce cas, le chemin de répertoire fourni dans le canal est monté à l’emplacement/opt/ml/input/data/.channel_name -
-
Mode
FastFileSi vous utilisez le mode
FastFilecomme paramètreTrainingInputNodeParameter, SageMaker AI définit les paramètres suivants dans votre conteneur.-
Comme en mode
File, en modeFastFile, votre paramètreTrainingInputModeest écrit dansinputdataconfig.jsonsous la forme « File ». -
Votre répertoire de canaux de données est écrit dans
/opt/ml/input/data/.channel_name
Le mode
FastFileprend 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
Filea précédé le modeFastFile. Pour garantir la rétrocompatibilité, les algorithmes qui prennent en charge le modeFilepeuvent également fonctionner sans problème avec le modeFastFiletant que le paramètreTrainingInputModeest défini surFiledansinputdataconfig.json..Note
Les canaux qui utilisent le mode
FastFiledoivent utiliser unS3DataType« S3Prefix ».Le mode
FastFileprésente une vue de dossier qui utilise la barre oblique (/) comme délimiteur pour regrouper les objets Amazon S3 dans des dossiers. Les préfixesS3Urine doivent pas correspondre à un nom de dossier partiel. Par exemple, si un jeu de données Amazon S3 contients3://amzn-s3-demo-bucket/train-01/data.csv, nis3://amzn-s3-demo-bucket/trainnis3://amzn-s3-demo-bucket/train-01ne sont autorisés comme préfixesS3Uri.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 dossiertrain-01. Sans la barre oblique finale, le canal serait ambigu s’il existait un autre dossiers3://amzn-s3-demo-bucket/train-011/ou fichiers3://amzn-s3-demo-bucket/train-01.txt/. -
-
Mode
Pipe-
Paramètre
TrainingInputModeécrit dansinputdataconfig.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,validationettesting, 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 :-
Ouvrez
/opt/ml/input/data/training_0en mode lecture et lisez-le jusqu’à la fin de fichier (EOF) ou, si vous avez fini d’utiliser la première époque, fermez le fichier tube de manière anticipée. -
Après avoir fermé le premier fichier tube, recherchez
/opt/ml/input/data/training_1et 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
traininget commencer à lire le canalvalidationlorsque vous êtes prêt. Vous pouvez également les lire simultanément si votre algorithme le nécessite.Pour bénéficier d’un exemple de bloc-notes Jupyter qui montre comment utiliser le mode Tube lorsque vous apportez votre propre conteneur, consultez Apporter votre propre algorithme en mode Tube sur Amazon SageMaker AI
. -
L’entraînement des modèles SageMaker AI 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 Pipe. 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. Reportez-vous à AmazonSageMakerFullAccesspolicy pour plus de détails. Vous ne pouvez chiffrer vos données de sortie SageMaker AI que dans des compartiments de répertoire avec le chiffrement côté serveur et les clés gérées par Amazon S3 (SSE-S3). Le chiffrement côté serveur à l’aide de clés AWS KMS (SSE-KMS) n’est actuellement pas pris en charge pour le stockage des données de sortie SageMaker AI dans les compartiments de répertoire. Pour plus d’informations, consultez S3 Express One Zone.
Configuration d’entraînement distribué
Si vous effectuez un entraînement distribué avec plusieurs conteneurs, SageMaker AI rend les informations sur tous les conteneurs disponibles dans le fichier /opt/ml/input/config/resourceconfig.json.
Pour activer la communication entre les conteneurs, ce fichier JSON contient des informations sur tous les conteneurs. SageMaker AI rend ce fichier disponible pour les algorithmes en mode File et Pipe. 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/hostnameou/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" }