Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Cómo Amazon SageMaker AI proporciona información de entrenamiento
En esta sección se explica cómo SageMaker AI hace que la información de entrenamiento, como los datos de entrenamiento, los hiperparámetros y otra información de configuración, esté disponible en su contenedor de Docker.
Cuando envíe una solicitud CreateTrainingJob a SageMaker AI para iniciar la entrenamiento de modelos, especifique la ruta de Amazon Elastic Container Registry (Amazon ECR) de la imagen de Docker que contiene el algoritmo de entrenamiento. También puede especificar la ubicación de Amazon Simple Storage Service (Amazon S3) en la que se almacenan los datos de entrenamiento y los parámetros específicos del algoritmo. SageMaker AI hace que esta información esté disponible para el contenedor de Docker de manera que su algoritmo de entrenamiento pueda utilizarlo. Esta sección explica cómo hacemos que esta información esté disponible para su contenedor de Docker. Para obtener información sobre un trabajo de entrenamiento, consulte CreateTrainingJob. Para obtener más información sobre la forma en que los contenedores de SageMaker AI organizan la información, consulte SageMaker Training e Inference Toolkits.
Temas
Hiperparámetros
SageMaker AI hace que los hiperparámetros de una solicitud CreateTrainingJob estén disponibles en el contenedor de Docker en el archivo /opt/ml/input/config/hyperparameters.json.
A continuación se muestra un ejemplo de una configuración de hiperparámetros en hyperparameters.json para especificar los hiperparámetros num_round y eta en la operación CreateTrainingJob de XGBoost.
{ "num_round": "128", "eta": "0.001" }
Para obtener una lista completa de los hiperparámetros que se pueden utilizar para el algoritmo XGBoost integrado en SageMaker AI, consulte Hiperparámetros XGBoost.
Los hiperparámetros que puede ajustar dependen del algoritmo que esté entrenando. Para obtener una lista de los hiperparámetros disponibles para un algoritmo integrado de SageMaker AI, búsquelos en la sección Hiperparámetros, en el enlace del algoritmo, en Utilizar de algoritmos integrados o modelos preentrenados de Amazon SageMaker AI.
Variables de entorno
SageMaker AI establece las siguientes variables de entorno en el contenedor:
-
TRAINING_JOB_NAME: se especifica en el parámetro
TrainingJobNamede la solicitudCreateTrainingJob. -
TRAINING_JOB_ARN: es el nombre de recurso de Amazon (ARN) del trabajo de entrenamiento devuelto como
TrainingJobArnen la respuestaCreateTrainingJob. -
Todas las variables de entorno especificadas en el parámetro Environment de la solicitud
CreateTrainingJob.
Configuración de datos de entrada
SageMaker AI hace que la información del canal de datos en el parámetro InputDataConfig de su solicitud CreateTrainingJob esté disponible en el archivo /opt/ml/input/config/inputdataconfig.json del contenedor de Docker.
Por ejemplo, supongamos que especifica tres canales de datos (train, evaluation y validation) en su solicitud. SageMaker AI proporciona el siguiente 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 AI proporciona solo información relevante sobre cada canal de datos (por ejemplo, el nombre del canal y el tipo de contenido) al contenedor, como se muestra en el ejemplo anterior. S3DistributionType se establecerá como FullyReplicated si se especifican EFS o FSxLustre como orígenes de datos de entrada.
Datos de capacitación
El parámetro TrainingInputMode en la AlgorithmSpecification de la solicitud CreateTrainingJob especifica cómo se pone a disposición del contenedor el conjunto de datos de entrenamiento. Están disponibles los siguientes modos de entrada.
-
Modo
FileSi utiliza el modo
Filecomo valor deTrainingInputMode, SageMaker AI establece los siguientes parámetros en el contenedor.-
El parámetro
TrainingInputModese escribe eninputdataconfig.jsoncomo “File”. -
Su directorio de canales de datos e escribe en
/opt/ml/input/data/.channel_name
Si utiliza el modo
File, SageMaker AI crea un directorio para cada canal. Por ejemplo, si dispone de tres canales denominadostraining,validationytesting, SageMaker AI crea los tres directorios siguientes en el contenedor de Docker:-
/opt/ml/input/data/training -
/opt/ml/input/data/validation -
/opt/ml/input/data/testing
El modo
Filetambién admite los siguientes orígenes de datos:-
Amazon Simple Storage Service (Amazon S3)
-
Amazon Elastic File System (Amazon EFS)
-
Amazon FSx para Lustre
nota
Los canales que utilizan orígenes de datos del sistema de archivos como Amazon EFS y Amazon FSx deben utilizar el modo
File. En este caso, la ruta del directorio proporcionada en el canal se monta en/opt/ml/input/data/.channel_name -
-
Modo
FastFileSi utiliza el modo
FastFilecomo suTrainingInputNodeParameter, SageMaker AI establece los siguientes parámetros en su contenedor.-
Al igual que en modo
File, en el modoFastFile, el parámetroTrainingInputModese escribe eninputdataconfig.jsoncomo “File”. -
Su directorio de canales de datos e escribe en
/opt/ml/input/data/.channel_name
El modo
FastFileadmite los siguientes orígenes de datos:-
Amazon S3
Si utiliza el modo
FastFile, el directorio de canales se monta con permiso de solo lectura.Históricamente, el modo
Fileprecedía al modoFastFile. Para garantizar la compatibilidad con versiones anteriores, los algoritmos que admiten el modoFiletambién pueden funcionar sin problemas con el modoFastFilesiempre que el parámetroTrainingInputModeesté configurado enFileeninputdataconfig.json..nota
Los canales que utilizan el modo
FastFiledeben utilizar unS3DataType“S3Prefix”.El modo
FastFilepresenta una vista de carpetas que utiliza la barra diagonal (/) como delimitador para agrupar los objetos de Amazon S3 en carpetas. Los prefijosS3Urino deben corresponder a un nombre de carpeta parcial. Por ejemplo, si un conjunto de datos de Amazon S3 contienes3://amzn-s3-demo-bucket/train-01/data.csv, nis3://amzn-s3-demo-bucket/trainnis3://amzn-s3-demo-bucket/train-01están permitidos como prefijosS3Uri.Se recomienda usar una barra diagonal final para definir el canal correspondiente a una carpeta. Por ejemplo, el canal
s3://amzn-s3-demo-bucket/train-01/para la carpetatrain-01. Sin la barra diagonal final, el canal sería ambiguo si existiera otra carpetas3://amzn-s3-demo-bucket/train-011/o archivos3://amzn-s3-demo-bucket/train-01.txt/. -
-
Modo
Pipe-
Parámetro
TrainingInputModeescrito eninputdataconfig.json: “Pipe” -
Directorio de canales de datos en el contenedor de Docker:
/opt/ml/input/data/channel_name_epoch_number -
Fuentes de datos compatibles: Amazon S3
Debe leer desde una canalización independiente para cada canal. Por ejemplo, si dispone de tres canales denominados
training,validationytesting, tienes que realizar la lectura desde las siguientes canalizaciones:-
/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, ...
Lea las canalizaciones de forma secuencial. Por ejemplo, si dispone de un canal denominado
training, lea las canalizaciones en este orden:-
Abra
/opt/ml/input/data/training_0en modo de lectura y léalo hasta final de archivo (EOF) o si ha terminado con la primera fecha de inicio, cierre el archivo de canalización pronto. -
Después de cerrar el primer archivo de canalización, busque
/opt/ml/input/data/training_1y léalo hasta que haya completado la segunda fecha de inicio y así sucesivamente.
Si el archivo de una fecha de inicio determinada no existe aún, es posible que tenga que volver a intentarlo con el código hasta que se cree la canalización. No hay restricción de secuenciación entre tipos de canales. Por ejemplo, puede leer varias fechas de inicio para el canal
training, por ejemplo, y solo comenzar a leer el canalvalidationcuando esté preparado. También puede leerlos simultáneamente si su algoritmo lo requiere.Para ver un ejemplo de un cuaderno de Jupyter que muestra cómo utilizar el modo Pipe al traer su propio contenedor, consulte Bring your own pipe-mode algorithm to Amazon SageMaker AI
. -
El entrenamiento de modelos de SageMaker AI admite buckets de directorio de S3 Express One Zone de alto rendimiento como ubicación de entrada de datos para el modo de archivo, el modo de archivo rápido y el modo de canalización. Para utilizar S3 Express One Zone, introduzca la ubicación del bucket del directorio de S3 Express One Zone en lugar de un bucket de uso general de Amazon S3. Proporcione el ARN del rol de IAM con la política pertinente de permisos y control de acceso. Consulte AmazonSageMakerFullAccesspolicy para obtener más información. Solo puede cifrar los datos de salida de SageMaker AI en buckets de directorio con cifrado del servidor con claves administradas de Amazon S3 (SSE-S3). No se admite el cifrado del servidor con claves de AWS KMS (SSE-KMS) para almacenar los datos de salida de SageMaker AI en los buckets de directorio. Para obtener más información, consulte S3 Express One Zone.
Configuración de entrenamiento distribuido
Si está realizando entrenamiento distribuido con varios contenedores, SageMaker AI crea información sobre todos los contenedores disponibles en el archivo /opt/ml/input/config/resourceconfig.json.
Para habilitar la comunicación entre contenedores, este archivo JSON contiene información relativa a todos los contenedores. SageMaker AI hace que este archivo esté disponible para los algoritmos de modo File y Pipe. El archivo proporciona la siguiente información:
-
current_host: el nombre del contenedor actual en la red del contenedor. Por ejemplo,algo-1. Los valores de host pueden cambiar en cualquier momento. No escriba código con valores específicos para esta variable. -
hosts: la lista de nombres de todos los contenedores en la red de contenedores ordenada lexicográficamente. Por ejemplo,["algo-1", "algo-2", "algo-3"]para un clúster de tres nodos. Los contenedores pueden utilizar estos nombres para dirigirse a otros contenedores en la red de contenedores. Los valores de host pueden cambiar en cualquier momento. No escriba código con valores específicos para estas variables. -
network_interface_name: el nombre de la interfaz de red que se expone al contenedor. Por ejemplo, los contenedores que ejecuten Message Passing Interface (MPI) pueden usar esta información para establecer el nombre de la interfaz de red. -
No utilice la información en
/etc/hostnameo/etc/hostsporque puede ser inexacta. -
La información del nombre de host podría no estar disponible de inmediato en el contenedor de algoritmos. Recomendamos agregar una política de reintentos en las operaciones de resolución de nombres de host a medida que los nodos estén disponibles en el clúster.
A continuación se muestra un archivo de ejemplo en el nodo 1 en un clúster de tres nodos:
{ "current_host": "algo-1", "hosts": ["algo-1","algo-2","algo-3"], "network_interface_name":"eth1" }