Clases de entrenamiento

El SDK de Vertex AI incluye varias clases que puedes usar cuando entrenas tu modelo. La mayoría de las clases de entrenamiento se usan para crear, entrenar y mostrar tu modelo. Usa HyperparameterTuningJob para ajustar los hiperparámetros del trabajo de entrenamiento. Usa PipelineJob para administrar el flujo de trabajo de aprendizaje automático (AA) de modo que puedas automatizar y supervisar tus sistemas de AA.

En los siguientes temas, se proporciona una descripción de alto nivel de cada clase relacionada con el entrenamiento en el SDK de Vertex AI.

Clases de entrenamiento de AutoML para datos estructurados

El SDK de Vertex AI incluye las siguientes clases que se usan para entrenar un modelo estructurado de AutoML.

AutoMLForecastingTrainingJob

La clase AutoMLForecastingTrainingJob usa el método de entrenamiento AutoML para entrenar y ejecutar un modelo de previsión. El método de entrenamiento AutoML es una buena opción para la mayoría de los casos de uso de previsión. Si tu caso de uso no se beneficia de Seq2seq ni del método de entrenamiento Temporal fusion transformer que ofrecen las clases SequenceToSequencePlusForecastingTrainingJob y TemporalFusionTransformerForecastingTrainingJob, respectivamente, entonces es probable que AutoML sea el mejor método de entrenamiento para las predicciones de previsión.

Para ver un código de muestra en el que se muestra cómo usar AutoMLForecastingTrainingJob, consulta la muestra Crea una previsión de una canalización de entrenamiento en GitHub.

AutoMLTabularTrainingJob

La clase AutoMLTabularTrainingJob representa un trabajo que crea, entrena y muestra un modelo tabular AutoML. Para obtener más información sobre el entrenamiento de modelos tabulares y Vertex AI, consulta Datos tabulares y Descripción general de los datos tabulares.

En el siguiente fragmento de código de muestra, se indica cómo puedes usar el SDK de Vertex AI para crear y ejecutar un modelo tabular de AutoML:

dataset = aiplatform.TabularDataset('projects/my-project/location/us-central1/datasets/{DATASET_ID}')

job = aiplatform.AutoMLTabularTrainingJob(
  display_name="train-automl",
  optimization_prediction_type="regression",
  optimization_objective="minimize-rmse",
)

model = job.run(
    dataset=dataset,
    target_column="target_column_name",
    training_fraction_split=0.6,
    validation_fraction_split=0.2,
    test_fraction_split=0.2,
    budget_milli_node_hours=1000,
    model_display_name="my-automl-model",
    disable_early_stopping=False,
)

SequenceToSequencePlusForecastingTrainingJob

La clase SequenceToSequencePlusForecastingTrainingJob usa el método de entrenamiento Seq2seq+ para entrenar y ejecutar un modelo de previsión. El método de entrenamiento Seq2seq+ es una buena opción para experimentar. Su algoritmo es más simple y usa un espacio de búsqueda más pequeño que la opción AutoML. Seq2seq+ es una buena opción si deseas obtener resultados rápidos y tus conjuntos de datos tienen menos de 1 GB.

Para ver un código de muestra que indica cómo usar SequenceToSequencePlusForecastingTrainingJob, consulta la muestra Seq2seq Crea una previsión de canalización de entrenamiento en GitHub.

TemporalFusionTransformerForecastingTrainingJob

La clase TemporalFusionTransformerForecastingTrainingJob usa el método de entrenamiento del Transformador temporal de fusión (TFT) para entrenar y ejecutar un modelo de previsión. El método de entrenamiento del TFT implementa un modelo de red neuronal profunda (DNN) basado en la atención que usa una tarea de previsión de varios horizontes para producir predicciones.

Para ver un código de muestra que indica cómo usar TemporalFusionTransformerForecastingTrainingJob, consulta la muestra Crea un transformador de fusión temporal para la predicción de canalización de entrenamiento en GitHub.

TimeSeriesDenseEncoderForecastingTrainingJob

La clase TimeSeriesDenseEncoderForecastingTrainingJob usa el método de entrenamiento del codificador denso de series temporales (TiDE) para entrenar y ejecutar un modelo de previsión. TiDE usa un perceptrón de varias capas (MLP) para proporcionar la velocidad de previsión de modelos lineales con variables y variables no lineales. Para obtener más información sobre TiDE, consulta Progresos recientes en la previsión a largo plazo y esta entrada de blog de Tide.

Clases de entrenamiento de AutoML para datos no estructurados

El SDK de Vertex AI incluye las siguientes clases para entrenar modelos de imagen, texto y video no estructurados:

AutoMLImageTrainingJob

Usa la clase AutoMLImageTrainingJob para crear, entrenar y mostrar un modelo de imagen. Para obtener más información sobre cómo trabajar con modelos de datos de imagen en Vertex AI, consulta Datos de imagen.

Para ver un ejemplo de cómo usar la clase AutoMLImageTrainingJob, consulta el instructivo del notebook Clasificación de imágenes de AutoML.

AutoMLTextTrainingJob

Usa la clase AutoMLTextTrainingJob para crear, entrenar y mostrar un modelo de texto. Para obtener más información sobre cómo trabajar con modelos de datos de texto en Vertex AI, consulta Datos de texto.

Para ver un ejemplo del uso de la clase AutoMLTextTrainingJob, consulta el instructivo del notebook Modelo de entrenamiento de extracción de entidades de texto de AutoML para la predicción en línea.

AutoMLVideoTrainingJob

Usa la clase AutoMLVideoTrainingJob para crear, entrenar y mostrar un modelo de video. Para obtener más información sobre cómo trabajar con modelos de datos de video en Vertex AI, consulta Datos de video.

Para ver un ejemplo del uso de la clase AutoMLVideoTrainingJob, consulta el instructivo del notebook Modelo de entrenamiento de reconocimiento de acciones en video de AutoML para la predicción por lotes.

Clases de entrenamiento de datos personalizadas

Puedes usar el SDK de Vertex AI para automatizar un flujo de trabajo de entrenamiento personalizado. Si deseas obtener información sobre cómo usar Vertex AI para ejecutar aplicaciones de entrenamiento personalizadas, consulta Descripción general del entrenamiento personalizado.

El SDK de Vertex AI incluye tres clases que crean una canalización de entrenamiento personalizada. Una canalización de entrenamiento acepta un conjunto de datos administrado de Vertex AI que se usa para entrenar un modelo. A continuación, muestra el modelo después de que se completa el trabajo de entrenamiento. Cada una de las tres clases de canalizaciones de entrenamiento personalizadas crea una canalización de entrenamiento de manera diferente. CustomTrainingJob usa una secuencia de comandos de Python, CustomContainerTrainingJob usa un contenedor personalizado y CustomPythonPackageTrainingJob usa un paquete de Python y un contenedor compilado previamente.

La clase CustomJob crea un trabajo de entrenamiento personalizado, pero no es una canalización. A diferencia de una canalización de entrenamiento personalizada, la clase CustomJob puede usar un conjunto de datos que no sea un conjunto de datos administrado de Vertex AI para entrenar un modelo y no muestra el modelo entrenado. Debido a que la clase acepta diferentes tipos de conjuntos de datos y no muestra un modelo entrenado, es menos automatizado y más flexible que una canalización de entrenamiento personalizada.

CustomContainerTrainingJob

Usa la clase CustomContainerTrainingJob para usar un contenedor a fin de iniciar una canalización de entrenamiento personalizada en Vertex AI.

Para ver un ejemplo de cómo usar la clase CustomContainerTrainingJob, consulta el instructivo del notebook Entrenamiento paralelo de datos distribuidos de nodos múltiples de clasificación de imágenes de PyTorch en GPU mediante Vertex AI Training con contenedor personalizado.

CustomJob

Usa la clase CustomJob para usar una secuencia de comandos a fin de iniciar un trabajo de entrenamiento personalizado en Vertex AI.

Un trabajo de entrenamiento es más flexible que una canalización de entrenamiento porque no estás restringido a cargar tus datos en un conjunto de datos administrado de Vertex AI y una referencia a tu modelo no se registra después de que se completa el trabajo de entrenamiento. Por ejemplo, recomendamos usar la clase CustomJob, su método from_local_script y una secuencia de comandos para cargar un conjunto de datos de scikit-learn o TensorFlow. O bien, es posible que desees analizar o probar tu modelo entrenado antes de que se registre en Vertex AI.

Para obtener más información sobre los trabajos de entrenamiento personalizados, incluidos los requisitos antes de enviar un trabajo de entrenamiento personalizado, lo que incluye un trabajo personalizado y una muestra de código de Python, consulta Crea trabajos de entrenamiento personalizados.

Debido a que CustomJob.run no muestra el modelo entrenado, debes usar una secuencia de comandos para escribir el artefacto del modelo en una ubicación, como un bucket de Cloud Storage. Para obtener más información, consulta Exporta un modelo entrenado de AA.

El siguiente código de muestra indica cómo crear y ejecutar un trabajo personalizado mediante una especificación de grupo de trabajadores de muestra. El código escribe el modelo entrenado en un bucket de Cloud Storage llamado artifact-bucket.

# Create a worker pool spec that specifies a TensorFlow cassava dataset and
# includes the machine type and Docker image. The Google Cloud project ID
# is 'project-id'.
worker_pool_specs=[
     {
        "replica_count": 1,
        "machine_spec": { "machine_type": "n1-standard-8", 
                          "accelerator_type": "NVIDIA_TESLA_V100", 
                          "accelerator_count": 1
        },
        "container_spec": {"image_uri": "gcr.io/{project-id}/multiworker:cassava"}
      },
      {
        "replica_count": 1,
        "machine_spec": { "machine_type": "n1-standard-8", 
                          "accelerator_type": "NVIDIA_TESLA_V100", 
                          "accelerator_count": 1
        },
        "container_spec": {"image_uri": "gcr.io/{project-id}/multiworker:cassava"}
      }
]

# Use the worker pool spec to create a custom training job. The custom training 
# job artifacts are stored in the Cloud Storage bucket
# named 'artifact-bucket'.
your_custom_training_job = aiplatform.CustomJob(
                                      display_name='multiworker-cassava-sdk',
                                      worker_pool_specs=worker_pool_specs,
                                      staging_bucket='gs://{artifact-bucket}')

# Run the training job. This method doesn't return the trained model.
my_multiworker_job.run()

CustomPythonPackageTrainingJob

Usa la clase CustomPythonPackageTrainingJob para usar un paquete de Python a fin de iniciar una canalización de entrenamiento personalizada en Vertex AI.

Para ver un ejemplo de cómo usar la clase CustomPythonPackageTrainingJob, consulta el instructivo del notebook Entrenamiento personalizado con un paquete de Python, el conjunto de datos de texto administrado y el contenedor de entrega de TensorFlow.

CustomTrainingJob

Usa la clase CustomTrainingJob para iniciar una canalización de entrenamiento personalizada en Vertex AI con una secuencia de comandos.

Si deseas ver un ejemplo de cómo usar la clase CustomTrainingJob, consulta el instructivo en el notebook de Entrenamiento personalizado del modelo de clasificación de imágenes para la predicción en línea con explicabilidad.

Clase de entrenamiento de hiperparámetros

El SDK de Vertex AI incluye una clase para el ajuste de hiperparámetros. El ajuste de hiperparámetros maximiza la precisión predictiva de tu modelo mediante la optimización de variables (conocidas como hiperparámetros) que rigen el proceso de entrenamiento. Para obtener más información, consulta Descripción general del ajuste de hiperparámetros.

HyperparameterTuningJob

Usa la clase HyperparameterTuningJob para automatizar el ajuste de hiperparámetros en una aplicación de entrenamiento.

Para obtener información sobre cómo usar la clase HyperparameterTuningJob y crear y ajustar un modelo entrenado personalizado, consulta el instructivo Ajuste de hiperparámetros en GitHub.

Si deseas obtener información sobre cómo usar la clase HyperparameterTuningJob a fin de ejecutar un trabajo de ajuste de hiperparámetros de Vertex AI para un modelo de TensorFlow, consulta el instructivo Ejecuta el ajuste de hiperparámetros para un modelo de TensorFlow en GitHub.

Clase de entrenamiento de canalización

Una canalización organiza tu flujo de trabajo del AA en Vertex AI. Puedes usar una canalización para automatizar, supervisar y controlar tus sistemas de aprendizaje automático. Para obtener más información sobre las canalizaciones de Vertex AI, consulta Introducción a las canalizaciones de Vertex AI.

PipelineJob

Una instancia de la clase PipelineJob representa una canalización de Vertex AI.

Hay varios notebooks de instructivo que demuestran cómo usar la clase PipelineJob:

Para obtener más notebooks de instructivos, consulta Instructivos de notebooks de Vertex AI.

¿Qué sigue?