Utiliza la formación incremental en Amazon SageMaker - 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.

Utiliza la formación incremental en Amazon SageMaker

Con el paso del tiempo, puede que un modelo genere inferencias que no sean tan buenas como lo eran antes. Con la capacitación incremental, puede utilizar los artefactos de un modelo ya existente y utilizar un conjunto de datos ampliado para capacitar un nuevo modelo. La capacitación incremental le ahorra tiempo y recursos.

Utilice la capacitación incremental para:

  • Capacitar un nuevo modelo utilizando un conjunto de datos ampliado que contenga un patrón subyacente que no se haya tenido en cuenta en la capacitación anterior que generó un rendimiento de modelo deficiente.

  • Utilizar los artefactos de modelo o una parte de los artefactos de modelo de un modelo disponible públicamente en un trabajo de capacitación. No es necesario capacitar un nuevo modelo desde cero.

  • Reanudar un trabajo de capacitación que se detuvo.

  • Capacitar varias variantes de un modelo, ya sea con una configuración de hiperparámetros diferente o con varios conjuntos de datos diferentes.

Para obtener más información sobre cómo capacitar trabajos, consulte Entrena a un modelo con Amazon SageMaker.

Puede entrenar de forma incremental mediante la SageMaker consola o el SDK de Amazon SageMaker Python.

importante

Solo tres algoritmos integrados admiten actualmente la capacitación incremental: Detección de objetos - MXNet, Clasificación de imágenes - MXNet y Algoritmo de segmentación semántica.

Realización de una capacitación incremental (consola)

Para completar este procedimiento, se necesita lo siguiente:

  • El URI del bucket de Amazon Simple Storage Service (Amazon S3) en el que se almacenaron los datos de entrenamiento.

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

  • La ruta de Amazon Elastic Container Registry donde se almacena el código de entrenamiento. Para obtener más información, consulte las Rutas de Docker Registry y código de ejemplo.

  • La dirección URL del bucket de S3 donde ha almacenado los artefactos de modelo que desee utilizar en la capacitación incremental. Para encontrar la dirección URL de artefactos de modelo, consulte la página de detalles del trabajo de capacitación utilizado para crear el modelo. Para encontrar la página de detalles, en la SageMaker consola, elija Inferencia, elija Modelos y, a continuación, elija el modelo.

Para reiniciar un trabajo de capacitación detenido, utilice la dirección URL para los artefactos del modelo que están almacenados en la página de detalles, como lo haría con un modelo o un trabajo de capacitación completado.

Para realizar una capacitación incremental (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. El trabajo de capacitación nombre debe tener entre 1 y 63 caracteres. Los caracteres válidos son: a-z, A-Z, 0-9 y . : + = @ _ % - (guion).

  5. Elija el algoritmo que desee usar. Para obtener información acerca de algoritmos, consulte Algoritmos integrados y modelos previamente entrenados en Amazon SageMaker.

  6. (Opcional) Para Configuración de recursos, deje los valores predeterminados o aumente el consumo de recursos para reducir el tiempo de cálculo.

    1. (Opcional) En 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 Recuento de instancias, use el valor predeterminado 1.

    3. (Opcional) En 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. Para Nombre de canal, deje el valor predeterminado (train) o escriba un nombre más significativo para el conjunto de datos de entrenamiento, como por ejemplo expanded-training-dataset.

    2. Para InputMode, elija Archivo. Para capacitaciones incrementales, debe utilizar el modo de entrada de archivos.

    3. Para el tipo de distribución de datos S3, elija FullyReplicated. Esto hace que cada instancia de computación de machine learning use una replicación completa del conjunto de datos ampliado al realizar entrenamientos incrementales.

    4. Si el conjunto de datos ampliado no está comprimido, establezca el Tipo de compresión en Ninguno. Si el conjunto de datos ampliado se comprime utilizando Gzip, establézcalo en Gzip.

    5. (Opcional) Si utiliza el modo de entrada de archivos, deje Tipo de contenido vacío. Para el modo de entrada de canalización, especifique el tipo MIME adecuado. El Tipo de contenido es el tipo de extensiones multipropósito de correo Internet (MIME) de los datos.

    6. Para Contenedor de registros, si el conjunto de datos se guarda en formato RecordIO, elija RecordIO. Si su conjunto de datos no se guarda como archivo con formato RecordIO, elija Ninguno.

    7. Para Tipo de datos de S3, si el conjunto de datos se almacena como archivo único, elija S3Prefix. Si el conjunto de datos se almacena como varios archivos en una carpeta, elija Manifiesto.

    8. Para Ubicación de S3, proporcione la dirección URL a la ruta donde ha almacenado el conjunto de datos ampliado.

    9. Seleccione Listo.

  8. Para utilizar artefactos de modelos en un trabajo de capacitación, tiene que añadir un nuevo canal y proporcionar la información necesaria sobre los artefactos de modelo.

    1. Para Configuración de datos de entrada, seleccione Agregar canal.

    2. Para Nombre de canal, escriba model para identificar este canal como el origen de los artefactos de modelo.

    3. Para InputMode, elija Archivo. Los artefactos de modelo se almacenan como archivos.

    4. Para el tipo de distribución de datos S3, elija FullyReplicated. Esto indica que cada instancia de computación de machine learning debe utilizar todos los artefactos de modelos para el entrenamiento.

    5. Para Tipo de compresión, seleccione Ninguno ya que estamos utilizando un modelo para el canal.

    6. Deje Tipo de contenido vacío. El Tipo de contenido es el tipo de extensiones multipropósito de correo Internet (MIME) de los datos. Para los artefactos de los modelos, lo dejamos vacío.

    7. Establezca Contenedor de registros en Ninguno porque los artefactos de modelos no se almacenan en formato RecordIO.

    8. Para Tipo de datos de S3, si está utilizando un algoritmo integrado o un algoritmo que almacena el modelo como único archivo, elija S3Prefix. Si utiliza un algoritmo que almacena el modelo como varios archivos, elija Manifiesto.

    9. Para Ubicación de S3, proporcione la dirección URL a la ruta donde ha almacenado los artefactos del modelo. Normalmente, el modelo se almacena con el nombre model.tar.gz. Para encontrar la dirección URL de los artefactos del modelo, en el panel de navegación, haga clic en Inferencia y luego elija Modelos. En la lista de modelos, elija un modelo para mostrar su página de detalles. La dirección URL de los artefactos del modelo se muestra en Contenedor principal.

    10. Seleccione Listo.

  9. 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) En Clave de cifrado, puede añadir su clave de cifrado AWS Key Management Service (AWS KMS) para cifrar los datos de salida en reposo. 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.

  10. (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 una clave y un valor haciendo referencia a un proyecto que está relacionado con el trabajo de capacitación como, por ejemplo, Home value forecasts.

  11. Elija Crear trabajo de formación. SageMaker crea y ejecuta un trabajo de formación.

Una vez que el trabajo de entrenamiento se haya completado, los artefactos del modelo recién entrenado se almacenan en Ruta de salida de S3 que ha proporcionado en el campo Configuración de datos de salida. Para implementar el modelo para obtener predicciones, consulte Implemente el modelo en Amazon EC2.

Realización de un entrenamiento incremental (API)

En este ejemplo, se muestra cómo usar SageMaker las API para entrenar un modelo mediante el algoritmo de clasificación de SageMaker imágenes y el conjunto de datos de imágenes Caltech 256 y, a continuación, entrenar un modelo nuevo con el primero. Utiliza Amazon S3 para orígenes de entrada y salida. Consulte el bloc de notas de muestra de capacitación incremental para obtener más información acerca de cómo usar la capacitación incremental.

nota

En este ejemplo hemos usado el conjunto de datos originales en la capacitación incremental; sin embargo puede utilizar diferentes conjuntos de datos, como, por ejemplo, los que contienen muestras que se han añadido recientemente. Cargue los nuevos conjuntos de datos en S3 y realice ajustes en la variable data_channels utilizada para capacitar el nuevo modelo.

Obtenga un rol AWS Identity and Access Management (IAM) que otorgue los permisos necesarios e inicialice las variables de entorno:

import sagemaker from sagemaker import get_execution_role role = get_execution_role() print(role) sess = sagemaker.Session() bucket=sess.default_bucket() print(bucket) prefix = 'ic-incr-training'

Obtenga la imagen de capacitación para el algoritmo de clasificación de imágenes:

from sagemaker.amazon.amazon_estimator import get_image_uri training_image = get_image_uri(sess.boto_region_name, 'image-classification', repo_version="latest") #Display the training image print (training_image)

Descargue los conjuntos de datos de entrenamiento y de validación y cárguelos en Amazon Simple Storage Service (Amazon S3):

import os import urllib.request import boto3 # Define a download function def download(url): filename = url.split("/")[-1] if not os.path.exists(filename): urllib.request.urlretrieve(url, filename) # Download the caltech-256 training and validation datasets download('http://data.mxnet.io/data/caltech-256/caltech-256-60-train.rec') download('http://data.mxnet.io/data/caltech-256/caltech-256-60-val.rec') # Create four channels: train, validation, train_lst, and validation_lst s3train = 's3://{}/{}/train/'.format(bucket, prefix) s3validation = 's3://{}/{}/validation/'.format(bucket, prefix) # Upload the first files to the train and validation channels !aws s3 cp caltech-256-60-train.rec $s3train --quiet !aws s3 cp caltech-256-60-val.rec $s3validation --quiet

Defina los hiperparámetros de entrenamiento:

# Define hyperparameters for the estimator hyperparams = { "num_layers": "18", "resize": "32", "num_training_samples": "50000", "num_classes": "10", "image_shape": "3,28,28", "mini_batch_size": "128", "epochs": "3", "learning_rate": "0.1", "lr_scheduler_step": "2,3", "lr_scheduler_factor": "0.1", "augmentation_type": "crop_color", "optimizer": "sgd", "momentum": "0.9", "weight_decay": "0.0001", "beta_1": "0.9", "beta_2": "0.999", "gamma": "0.9", "eps": "1e-8", "top_k": "5", "checkpoint_frequency": "1", "use_pretrained_model": "0", "model_prefix": "" }

Cree un objeto de estimador y capacite el primer modelo utilizando los conjuntos de datos de entrenamiento y validación:

# Fit the base estimator s3_output_location = 's3://{}/{}/output'.format(bucket, prefix) ic = sagemaker.estimator.Estimator(training_image, role, instance_count=1, instance_type='ml.p2.xlarge', volume_size=50, max_run=360000, input_mode='File', output_path=s3_output_location, sagemaker_session=sess, hyperparameters=hyperparams) train_data = sagemaker.inputs.TrainingInput(s3train, distribution='FullyReplicated', content_type='application/x-recordio', s3_data_type='S3Prefix') validation_data = sagemaker.inputs.TrainingInput(s3validation, distribution='FullyReplicated', content_type='application/x-recordio', s3_data_type='S3Prefix') data_channels = {'train': train_data, 'validation': validation_data} ic.fit(inputs=data_channels, logs=True)

Para utilizar el modelo para capacitar de manera incremental otro modelo, cree un nuevo objeto de estimador y utilice los artefactos del modelo (ic.model_data, en este ejemplo) para el argumento de entrada model_uri:

# Given the base estimator, create a new one for incremental training incr_ic = sagemaker.estimator.Estimator(training_image, role, instance_count=1, instance_type='ml.p2.xlarge', volume_size=50, max_run=360000, input_mode='File', output_path=s3_output_location, sagemaker_session=sess, hyperparameters=hyperparams, model_uri=ic.model_data) # This parameter will ingest the previous job's model as a new channel incr_ic.fit(inputs=data_channels, logs=True)

Una vez que haya completado el trabajo de capacitación, los artefactos del modelo recién capacitado se almacenan en la S3 output path que ha proporcionado en Output_path. Para implementar el modelo para obtener predicciones, consulte Implemente el modelo en Amazon EC2.