Proporcione metadatos del conjunto de datos a trabajos de capacitación con un archivo de manifiesto aumentado - Amazon SageMaker

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.

Proporcione metadatos del conjunto de datos a trabajos de capacitación con un archivo de manifiesto aumentado

Para incluir metadatos con su conjunto de datos en un trabajo de capacitación, use un archivo de manifiesto aumentado. Al utilizar un archivo de manifiesto aumentado, el conjunto de datos debe almacenarse en Amazon Simple Storage Service (Amazon S3), y debe configurar su trabajo de entrenamiento para el uso del conjunto de datos almacenado allí. Debe especificar la ubicación y el formato de este conjunto de datos para uno o varios Channel. Los manifiestos aumentados solo pueden admitir el modo de entrada de canalización. Consulte la sección Channelpara obtener más información sobre el modo de entrada de tuberías. InputMode

Al especificar los parámetros de un canal, debe especificar una ruta al archivo, algo conocido como un S3Uri. Amazon SageMaker interpreta este URI en función de lo especificado S3DataType en S3DataSource. La opción AugmentedManifestFile define un formato de manifiesto que incluye metadatos con los datos de entrada. El uso de un archivo de manifiesto aumentado es una alternativa al procesamiento previo cuando ha etiquetado datos. Para los trabajos de capacitación con datos etiquetados, normalmente debe procesar previamente el conjunto de datos para combinar los datos de entrada con los metadatos antes de la capacitación. Si su conjunto de datos de capacitación es grande, el procesamiento previo puede resultar lento y costoso.

Formato de archivo de manifiesto aumentado

Un archivo de manifiesto aumentado debe formatearse en formato de líneas JSON. En formato de líneas JSON, cada línea del archivo es un objeto JSON completo seguido de un separador de nueva línea.

Durante el entrenamiento, SageMaker analiza cada línea JSON y envía algunos o todos sus atributos al algoritmo de entrenamiento. Especifique el contenido del atributo que se va a pasar y el orden en que lo va a hacer con el parámetro AttributeNames de la API CreateTrainingJob. El AttributeNames parámetro es una lista ordenada de nombres de atributos que SageMaker se busca en el objeto JSON para utilizarla como entrada de entrenamiento.

Por ejemplo, si muestra ["line", "book"] para AttributeNames, los datos de entrada deben incluir los nombres de atributo de line y book en el orden especificado. En este ejemplo, el siguiente contenido del archivo de manifiesto aumentado es válido:

{"author": "Herman Melville", "line": "Call me Ishmael", "book": "Moby Dick"} {"line": "It was love at first sight.", "author": "Joseph Heller", "book": "Catch-22"}

SageMaker ignora los nombres de atributos que no figuran en la lista, incluso si van antes, después o se encuentran entre los atributos de la lista.

Al usar archivos de manifiesto aumentados, observe las siguientes directrices:

  • El orden de los atributos mostrados en el parámetro AttributeNames determina el orden de los atributos pasados al algoritmo en el trabajo de capacitación.

  • La lista AttributeNames puede ser un subconjunto de todos los atributos de la línea JSON. SageMaker ignora los atributos que no figuran en la lista del archivo.

  • Puede especificar cualquier tipo de datos permitidos por el formato JSON en AttributeNames, incluidos texto, valores numéricos, matrices de datos u objetos.

  • Para incluir un URI de S3 como nombre de atributo, añada el sufijo -ref a este.

Si un nombre de atributo contiene el sufijo -ref, el valor del atributo debe ser un URI de S3 que apunte a un archivo de datos al que se pueda acceder en el trabajo de capacitación. Por ejemplo, si AttributeNames contiene ["image-ref", "is-a-cat"], el siguiente ejemplo muestra un archivo de manifiesto aumentado válido:

{"image-ref": "s3://mybucket/sample01/image1.jpg", "is-a-cat": 1} {"image-ref": "s3://mybucket/sample02/image2.jpg", "is-a-cat": 0}

En el caso de la primera línea JSON de este archivo de manifiesto, SageMaker recupera el image1.jpg archivo s3://mybucket/sample01/ y la representación en cadena del is-a-cat atributo "1" para la clasificación de la imagen.

sugerencia

Para crear un archivo de manifiesto aumentado, usa Amazon SageMaker Ground Truth y crea un trabajo de etiquetado. Para obtener más información sobre la salida de un trabajo de etiquetado, consulte Datos de salida.

Transmitir datos del archivo de manifiesto aumentado

El formato de manifiesto aumentado le permite realizar el entrenamiento en modo de canalización con archivos sin necesidad de crear archivos RecordIO. Debe especificar los canales de capacitación y de validación como valores para el parámetro InputDataConfig de la solicitud CreateTrainingJob. Los archivos de manifiesto aumentados son solo compatibles con los canales con el modo de entrada de datos por canal. Para cada canal, los datos se extraen de su archivo de manifiesto aumentado y transmiten (en orden) al algoritmo a través de la canalización denominada del canal. El modo de canalización usa el método primero en entrar, primero en salir (FIFO) para que los registros se procesen en el orden en que se pusieron en cola. Para obtener información sobre el modo de entrada de canalización, consulte Input Mode.

Los nombres de atributo con un sufijo "-ref" apuntan a los datos binarios preformateados. En algunos casos, el algoritmo sabe cómo analizar los datos. En otros casos, podría tener que incluir los datos para que los registros se delimiten para el algoritmo. Si el algoritmo es compatible con los datos con formato RecordIO, la especificación de RecordIO para RecordWrapperType resuelve este problema. Si el algoritmo no es compatible con el formato RecordIO, especifique None para RecordWrapperType y asegúrese de que sus datos se analicen correctamente para su algoritmo.

Al usar el ejemplo ["image-ref", "is-a-cat"], si usa el encapsulamiento RecordIO, la siguiente transmisión de datos se envía a la cola:

recordio_formatted(s3://mybucket/foo/image1.jpg)recordio_formatted("1")recordio_formatted(s3://mybucket/bar/image2.jpg)recordio_formatted("0")

Las imágenes que no se encapsulan con el formato RecordIO se transmiten con el valor de atributo is-a-cat correspondiente como un registro. Esto puede dar lugar a un problema, ya que el algoritmo podría no delimitar las imágenes y los atributos correctamente. Para obtener más información sobre el uso de archivos de manifiesto aumentados para la clasificación de imágenes, consulte Train with Augmented Manifest Image Format.

Con los archivos de manifiesto aumentados y el modo Pipe en general, no se aplican los límites de tamaño del volumen de EBS. Esto incluye configuraciones que, de lo contrario, deben estar dentro del límite de tamaño del volumen de EBS, como S3DataDistributionType . Para obtener más información sobre el modo de canalización y cómo usarlo, consulte la sección Using Your Own Training Algorithms - Input Data Configuration.

Uso de un archivo de manifiesto aumentado (consola)

Para completar este procedimiento, se necesita lo siguiente:

  • La URL del bucket de S3 en el que almacenó el archivo de manifiesto aumentado.

  • Para almacenar los datos que se muestran en el archivo de manifiesto aumentado en un bucket de S3.

  • La URL del bucket de S3 en el que desea almacenar la salida del trabajo.

Para usar un archivo de manifiesto aumentado en un trabajo de capacitación (consola)
  1. Abre la SageMaker consola de Amazon en https://console.aws.amazon.com/sagemaker/.

  2. En el panel de navegación, elija Entrenamiento; a continuación, elija Trabajos de entrenamiento.

  3. Elija Crear trabajo de entrenamiento.

  4. Proporcione un nombre para el trabajo de entrenamiento. El nombre debe ser único en una AWS región de la AWS cuenta. Puede tener de 1 a 63 caracteres. Los caracteres válidos son: a-z, A-Z, 0-9 y . : + = @ _ % - (guion).

  5. Elija el algoritmo que desee usar. Para obtener más información acerca de los algoritmos integrados admitidos, consulte Usa algoritmos SageMaker integrados de Amazon o modelos previamente entrenados. Si desea usar un algoritmo personalizado, asegúrese de que sea compatible con el modo de canalización.

  6. (Opcional) En Resource configuration (Configuración de recursos), acepte los valores predeterminados o, para reducir el tiempo de computación, aumente el consumo de recursos.

    1. (Opcional) En Instance type (Tipo de instancia), elija el tipo de instancia de computación de machine learning que desea utilizar. En la mayoría de los casos, ml.m4.xlarge es suficiente.

    2. En Instance count (Recuento de instancias), use el valor predeterminado, 1.

    3. (Opcional) En Additional volume per instance (GB) (Volumen adicional por instancia [GB]), elija el tamaño del volumen de almacenamiento de machine learning que desea aprovisionar. En la mayoría de los casos, puede usar el valor predeterminado, que es 1. Si usa un conjunto de datos voluminoso, utilice un tamaño más grande.

  7. Proporcione información sobre los datos de entrada para el conjunto de datos de capacitación.

    1. En Channel name (Nombre de canal), acepte el valor predeterminado (train) o escriba un nombre más significativo, como training-augmented-manifest-file.

    2. Para InputMode, elija Pipe.

    3. Para el tipo de distribución de datos S3, elija FullyReplicated. Al entrenar cada vez más, la replicación completa hace que cada instancia de computación de machine learning use una copia completa del conjunto de datos ampliado. En los algoritmos basados en lo neuronal, como Algoritmo de Modelo de tema neuronal (NTM), elija ShardedByS3Key.

    4. Si los datos especificados en el archivo de manifiesto aumentado se descomprimen, establezca el Compression type (Tipo de compresión) en None (Ninguno). Si los datos se comprimen con gzip, establézcalos en Gzip.

    5. (Opcional) En Content type (Tipo de contenido), especifique el tipo MIME adecuado. El Tipo de contenido es el tipo de extensiones multipropósito de correo Internet (MIME) de los datos.

    6. En Record wrapper (Contenedor de registros), si el conjunto de datos especificado en el archivo de manifiesto aumentado se guarda en formato RecordIO, elija RecordIO. Si su conjunto de datos no se guarda como archivo con formato RecordIO, elija None (Ninguno).

    7. Para el tipo de datos S3, elija AugmentedManifestFile.

    8. En S3 location (Ubicación de S3), proporcione la ruta al bucket donde almacenó el archivo de manifiesto aumentado.

    9. Para los nombres de los AugmentedManifestFile atributos, especifique el nombre del atributo que desee usar. El nombre de atributo debe estar presente en el archivo de manifiesto aumentado y distingue entre mayúsculas y minúsculas.

    10. (Opcional) Para añadir más nombres de atributo, elija Add row (Añadir fila) y especifique otro nombre de atributo para cada atributo.

    11. (Opcional) Para ajustar el orden de los nombres de atributo, elija los botones hacia arriba o hacia abajo situados junto a los nombres. Al usar un archivo de manifiesto aumentado, el orden de los nombres de atributo especificados es importante.

    12. Seleccione Listo.

  8. En Configuración de datos de salida, proporcione la siguiente información:

    1. En Ubicación de S3, escriba la ruta al bucket de S3 donde desea almacenar los datos de salida.

    2. (Opcional) Puede usar su clave de cifrado AWS Key Management Service (AWS KMS) para cifrar los datos de salida en reposo. En Encryption key (Clave de cifrado), proporcione el ID de clave o su número de recurso de Amazon (ARN). Para obtener más información, consulte Claves de cifrado administradas por KMS.

  9. (Opcional) En Etiquetas, agregue una o más etiquetas al trabajo de entrenamiento. Una etiqueta son los metadatos que puede definir y asignar a los recursos de AWS . En este caso, puede usar las etiquetas para ayudarle a administrar sus trabajos de capacitación. Una etiqueta consta de una clave y un valor que define el usuario. Por ejemplo, es posible que desee crear una etiqueta con Project como clave y un valor que hace referencia a un proyecto relacionado con el trabajo de capacitación, como Home value forecasts.

  10. Seleccione Crear trabajo de formación. SageMaker crea y ejecuta el trabajo de formación.

Una vez finalizado el trabajo de entrenamiento, SageMaker almacena los artefactos del modelo en el depósito cuya ruta proporcionó para la ruta de salida de S3 en el campo de configuración de datos de salida. Para implementar el modelo para obtener predicciones, consulte Paso 5: Implementar el modelo en Amazon EC2.

Uso de un archivo de manifiesto aumentado (API)

A continuación, se muestra cómo entrenar un modelo con un archivo de manifiesto aumentado mediante la biblioteca de Python de SageMaker alto nivel:

import sagemaker # Create a model object set to using "Pipe" mode. model = sagemaker.estimator.Estimator( training_image, role, instance_count=1, instance_type='ml.p3.2xlarge', volume_size = 50, max_run = 360000, input_mode = 'Pipe', output_path=s3_output_location, sagemaker_session=session ) # Create a train data channel with S3_data_type as 'AugmentedManifestFile' and attribute names. train_data = sagemaker.inputs.TrainingInput( your_augmented_manifest_file, distribution='FullyReplicated', content_type='application/x-recordio', s3_data_type='AugmentedManifestFile', attribute_names=['source-ref', 'annotations'], input_mode='Pipe', record_wrapping='RecordIO' ) data_channels = {'train': train_data} # Train a model. model.fit(inputs=data_channels, logs=True)

Una vez finalizado el trabajo de entrenamiento, SageMaker almacena los artefactos del modelo en el depósito cuya ruta proporcionó para la ruta de salida de S3 en el campo de configuración de datos de salida. Para implementar el modelo para obtener predicciones, consulte Paso 5: Implementar el modelo en Amazon EC2.