Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
In che modo Amazon SageMaker fornisce informazioni sulla formazione
Questa sezione spiega come SageMaker rendere disponibili nel contenitore Docker le informazioni sulla formazione, come dati di addestramento, iperparametri e altre informazioni di configurazione.
Quando invii una CreateTrainingJob
richiesta SageMaker per avviare l'addestramento del modello, specifichi il percorso Amazon Elastic Container Registry (AmazonECR) dell'immagine Docker che contiene l'algoritmo di training. È inoltre necessario specificare la posizione di Amazon Simple Storage Service (Amazon S3) in cui vengono archiviati i dati di addestramento e i parametri specifici dell'algoritmo. SageMaker rende queste informazioni disponibili nel contenitore Docker in modo che l'algoritmo di addestramento possa utilizzarle. Questa sezione spiega come rendere queste informazioni disponibili al tuo container Docker. Per informazioni sulla creazione di un processo di addestramento, consulta CreateTrainingJob
. Per ulteriori informazioni sul modo in cui i SageMaker contenitori organizzano le informazioni, consultaSageMaker Toolkit di formazione e inferenza.
Argomenti
Iperparametri
SageMaker rende disponibili gli iperparametri di una CreateTrainingJob
richiesta nel contenitore Docker del /opt/ml/input/config/hyperparameters.json
file.
Di seguito è riportato un esempio di configurazione di iperparametri in hyperparameters.json
per specificare gli num_round
e gli eta
iperparametri nell'operazione per. CreateTrainingJob
XGBoost
{ "num_round": "128", "eta": "0.001" }
Gli iperparametri che puoi ottimizzare dipendono dall'algoritmo che stai addestrando. Per un elenco degli iperparametri disponibili per un algoritmo SageMaker integrato, trovali elencati in Iperparametri sotto il link dell'algoritmo in Use Amazon SageMaker Built-in Algorithms or Pre-training Models.
Variabili di ambiente
SageMaker imposta le seguenti variabili di ambiente nel tuo contenitore:
-
TRAINING_ JOB _ NAME — Specificato nel
TrainingJobName
parametro dellaCreateTrainingJob
richiesta. -
TRAINING_ JOB _ ARN — L'Amazon Resource Name (ARN) del processo di formazione è stato restituito come
TrainingJobArn
nellaCreateTrainingJob
risposta. -
Tutte le variabili di ambiente specificate nel parametro Ambiente nella richiesta
CreateTrainingJob
.
Configurazione dei dati di input
SageMaker rende disponibili le informazioni sul canale dati contenute nel InputDataConfig
parametro della CreateTrainingJob
richiesta nel /opt/ml/input/config/inputdataconfig.json
file nel contenitore Docker.
Ad esempio, supponiamo di specificare tre canali di dati (train
evaluation
, evalidation
) nella richiesta. SageMakerfornisce quanto segue: 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"} }
Nota
SageMaker fornisce al contenitore solo informazioni pertinenti su ciascun canale di dati (ad esempio, il nome del canale e il tipo di contenuto), come mostrato nell'esempio precedente. S3DistributionType
verranno impostati come FullyReplicated
se fossero specificati EFS o FSxLustre come fonti di dati di input.
Dati di addestramento
Il parametro TrainingInputMode
nella AlgorithmSpecification
della richiesta CreateTrainingJob
specifica in che modo il set di dati di addestramento viene reso disponibile per il container. Sono disponibili le modalità di input seguenti:
-
Modalità
File
Se usi
File
mode comeTrainingInputMode
valore, SageMaker imposta i seguenti parametri nel tuo contenitore.-
Il parametro
TrainingInputMode
viene scritto ininputdataconfig.json
come "File". -
La directory del tuo canale dati viene scritta in
/opt/ml/input/data/
.channel_name
Se usi
File
mode, SageMaker crea una directory per ogni canale. Ad esempio, se hai tre canali denominatitraining
, evalidation
testing
, SageMaker crea le seguenti tre directory nel tuo contenitore Docker:-
/opt/ml/input/data/training
-
/opt/ml/input/data/validation
-
/opt/ml/input/data/testing
La modalità
File
supporta le seguenti origini dati.-
Amazon Simple Storage Service (Amazon S3)
-
Amazon Elastic File System (AmazonEFS)
-
Amazon FSx per Lustre
Nota
I canali che utilizzano fonti di dati del file system come Amazon EFS e Amazon FSx devono utilizzare
File
la modalità. In questo caso, il percorso della directory fornito nel canale viene montato in/opt/ml/input/data/
.channel_name
-
-
Modalità
FastFile
Se utilizzi
FastFile
la modalità come impostazioneTrainingInputNodeParameter
, SageMaker imposta i seguenti parametri nel contenitore.-
Analogamente alla modalità
File
, nella modalitàFastFile
il tuo parametroTrainingInputMode
viene scritto ininputdataconfig.json
come "File". -
La directory del tuo canale dati viene scritta in
/opt/ml/input/data/
.channel_name
La modalità
FastFile
supporta le seguenti origini dati.-
Amazon S3
Se utilizzi la modalità
FastFile
, la directory dei canali viene montata con l'autorizzazione di sola lettura.Storicamente, la modalità
File
precedeva la modalitàFastFile
. Per garantire la compatibilità con le versioni precedenti, gli algoritmi che supportano la modalitàFile
possono funzionare senza problemi anche con la modalitàFastFile
, purché il parametroTrainingInputMode
sia impostato suFile
ininputdataconfig.json.
.Nota
I canali che utilizzano la modalità
FastFile
devono utilizzare unS3DataType
di "S3Prefix".La modalità
FastFile
presenta una visualizzazione di cartelle che utilizza la barra in avanti (/
) come delimitatore per raggruppare oggetti Amazon S3 nelle cartelle. I prefissiS3Uri
non devono corrispondere a un nome parziale di cartella. Ad esempio, se un set di dati Amazon S3 contienes3://amzn-s3-demo-bucket/train-01/data.csv
, allora non sono consentiti nés3://amzn-s3-demo-bucket/train
nés3://amzn-s3-demo-bucket/train-01
come prefissiS3Uri
.Consigliamo di utilizzare una barra finale per definire un canale corrispondente a una cartella. Ad esempio, il canale
s3://amzn-s3-demo-bucket/train-01/
per la cartellatrain-01
. Senza la barra finale, il canale sarebbe ambiguo se esistesse un'altra cartellas3://amzn-s3-demo-bucket/train-011/
o un files3://amzn-s3-demo-bucket/train-01.txt/
. -
-
Modalità
Pipe
-
Il parametro
TrainingInputMode
scritto ininputdataconfig.json
: "Pipe" -
Directory del canale dati nel container Docker:
/opt/ml/input/data/
channel_name_epoch_number
-
Fonti di dati supportate: Amazon S3
Devi leggere da una pipe separata per ogni canale. Ad esempio, se hai tre canali denominati
training
,validation
etesting
, devi leggere dalle seguenti pipe:-
/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, ...
Leggi le pipe sequenzialmente. Ad esempio, se hai un canale che si chiama
training
, leggi le pipe in questa sequenza:-
/opt/ml/input/data/training_0
Apritelo in modalità lettura e leggetelo su end-of-file (EOF) oppure, se avete finito con la prima epoca, chiudete il file pipe in anticipo. -
Dopo aver chiuso il primo file pipe, cerca
/opt/ml/input/data/training_1
e leggilo finché non hai completato la seconda epoca e così via.
Se il file per una determinata epoca non esiste ancora, il tuo codice potrebbe dover riprovare finché non viene creata la pipe. Non c'è alcuna restrizione di sequenziamento sui tipi di canale. Ad esempio, puoi leggere più epoche per il canale
training
, e iniziare a leggere il canalevalidation
solo quando sei pronto. In alternativa, li puoi leggere simultaneamente se il tuo algoritmo lo richiede.Per un esempio di notebook Jupyter che mostra come usare la modalità Pipe quando porti il tuo contenitore, vedi Bring your own pipe-mode
algorithm to Amazon. SageMaker -
SageMaker model training supporta i bucket di directory S3 Express One Zone ad alte prestazioni come posizione di input dei dati per la modalità file, la modalità fast file e la modalità pipe. Per utilizzare S3 Express One Zone, inserisci la posizione del bucket di directory S3 Express One Zone anziché un bucket Amazon S3 per uso generico. Fornisci al IAM ruolo ARN la politica di controllo degli accessi e autorizzazioni richiesta. Fare riferimento a AmazonSageMakerFullAccesspolicy per ulteriori dettagli. Puoi crittografare i dati di SageMaker output in bucket di directory solo con crittografia lato server con chiavi gestite di Amazon S3 (-S3). SSE La crittografia lato server con AWS KMS chiavi (SSE-KMS) non è attualmente supportata per l'archiviazione dei dati di output nei bucket di directory. SageMaker Per ulteriori informazioni, consulta S3 Express One Zone.
Configurazione dell’addestramento distribuito
Se stai eseguendo corsi di formazione distribuiti con più contenitori, SageMaker rende disponibili nel /opt/ml/input/config/resourceconfig.json
file le informazioni su tutti i contenitori.
Per abilitare la comunicazione tra contenitori, questo JSON file contiene informazioni per tutti i contenitori. SageMaker rende questo file disponibile per entrambi File
gli algoritmiPipe
. Il file fornisce le informazioni che seguono:
-
current_host
: il nome del container corrente sulla rete di container. Ad esempioalgo-1
. I valori host possono cambiare in qualsiasi momento. Non scrivere codice con valori specifici per questa variabile. -
hosts
: l'elenco dei nomi di tutti i container nella rete di container, ordinato in ordine lessicografico. Ad esempio,["algo-1", "algo-2", "algo-3"]
per un cluster a tre nodi. I container possono utilizzare questi nomi per gestire altri container sulla rete di container. I valori host possono cambiare in qualsiasi momento. Non scrivere codice con valori specifici per queste variabili. -
network_interface_name
: il nome dell'interfaccia di rete esposta al tuo container. Ad esempio, i contenitori che eseguono Message Passing Interface (MPI) possono utilizzare queste informazioni per impostare il nome dell'interfaccia di rete. -
Non utilizzare le informazioni in
/etc/hostname
o/etc/hosts
perché potrebbero non essere accurate. -
Le informazioni sul nome host potrebbero non essere immediatamente disponibili per il container degli algoritmi. Ti consigliamo di aggiungere una policy per i nuovi tentativi sulle operazioni di risoluzione del nome host man mano che i nodi diventano disponibili nel cluster.
Di seguito è riportato un file di esempio sul nodo 1 in un cluster a tre nodi.
{ "current_host": "algo-1", "hosts": ["algo-1","algo-2","algo-3"], "network_interface_name":"eth1" }