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 fournit des informations de formation
Cette section explique comment SageMaker mettre 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 CreateTrainingJob
demande SageMaker pour démarrer l'entraînement du modèle, vous spécifiez le chemin Amazon Elastic Container Registry (AmazonECR) de l'image Docker qui contient 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 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 SageMaker conteneurs organisent les informations, consultezSageMaker Boîtes à outils de formation et d'inférence.
Rubriques
Hyperparamètres
SageMaker 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
{ "num_round": "128", "eta": "0.001" }
Pour obtenir la liste complète des hyperparamètres pouvant être utilisés pour l'XGBoostalgorithme SageMaker intégré, voir XGBoostHyperparamètres.
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 SageMaker intégré, retrouvez-les dans Hyperparamètres sous le lien de l'algorithme dans Utiliser des algorithmes SageMaker intégrés ou des modèles pré-entraînés d'Amazon.
Variables d'environnement
SageMaker définit les variables d'environnement suivantes dans votre conteneur :
-
TRAINING_ JOB _ NAME — Spécifié dans le
TrainingJobName
paramètre de laCreateTrainingJob
demande. -
TRAINING_ JOB _ ARN — Le nom de ressource Amazon (ARN) de la tâche de formation a été renvoyé tel qu'il
TrainingJobArn
figurait dans laCreateTrainingJob
réponse. -
Toutes les variables d'environnement spécifiées dans le paramètre Environnement de la requête
CreateTrainingJob
.
Configuration des données d'entrée
SageMaker rend les informations du canal de données contenues dans le InputDataConfig
paramètre de votre CreateTrainingJob
requête disponibles 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
, etvalidation
) dans votre demande. SageMakerfournit les éléments suivants JSON :
{ "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 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 le 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
File
Si vous utilisez
File
mode commeTrainingInputMode
valeur, SageMaker définissez les paramètres suivants dans votre conteneur.-
Votre paramètre
TrainingInputMode
est écrit dansinputdataconfig.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 crée un répertoire pour chaque canal. Par exemple, si vous avez trois canaux nomméstraining
, etvalidation
testing
, SageMaker 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 (AmazonEFS)
-
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 votreTrainingInputNodeParameter
, SageMaker définissez les paramètres suivants dans votre conteneur.-
Comme en mode
File
, en modeFastFile
, votre paramètreTrainingInputMode
est écrit dansinputdataconfig.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 modeFastFile
. Pour garantir la rétrocompatibilité, les algorithmes qui prennent en charge le modeFile
peuvent également fonctionner sans problème avec le modeFastFile
tant que le paramètreTrainingInputMode
est défini surFile
dansinputdataconfig.json.
.Note
Les canaux qui utilisent le mode
FastFile
doivent utiliser unS3DataType
« 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éfixesS3Uri
ne 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/train
nis3://amzn-s3-demo-bucket/train-01
ne 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
,validation
ettesting
, 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_0
en mode lecture et lisez-le dans end-of-file (EOF) ou, si vous en avez terminé avec la première époque, fermez le fichier pipe plus tôt. -
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 canalvalidation
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 Bring your own pipe-mode algorithm
to Amazon. SageMaker -
SageMaker model training prend en charge les compartiments de répertoire S3 Express One Zone à hautes performances en tant qu'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 ARN au IAM rôle la politique de contrôle d'accès et d'autorisation requise. Pour plus d'informations, consultez AmazonSageMakerFullAccesspolicy. Vous ne pouvez chiffrer vos données de SageMaker sortie que dans des compartiments d'annuaire avec un chiffrement côté serveur avec des clés gérées par Amazon S3 (-S3). SSE 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 SageMaker de sortie dans des compartiments de répertoire. Pour plus d'informations, consultez S3 Express One Zone.
Configuration d'entraînement distribué
Si vous effectuez une formation distribuée avec plusieurs conteneurs, SageMaker rend les informations relatives à tous les conteneurs disponibles dans le /opt/ml/input/config/resourceconfig.json
fichier.
Pour permettre la communication entre conteneurs, ce JSON fichier contient des informations pour tous les conteneurs. SageMaker 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 exécutant l'interface de passage de message (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" }