Ejecuta un trabajo de entrenamiento con seguimiento del experimento

Vertex AI proporciona un servicio de entrenamiento administrado que te permite poner en funcionamiento el entrenamiento de modelos a gran escala. Puedes habilitar el seguimiento de experimentos mediante el SDK de Vertex AI para Python a fin de capturar parámetros y métricas de rendimiento cuando envíes el trabajo de entrenamiento personalizado.

Esta función no está disponible cuando ejecutas las siguientes acciones:

  • enviar un trabajo de entrenamiento a través de la consola de Google Cloud o Google Cloud CLI,
  • usar TPU en el trabajo de entrenamiento
  • usar el entrenamiento distribuido en el trabajo de entrenamiento.

Se admiten contenedores de entrenamiento compilados previamente y contenedores personalizados. Obligatorio: Se instala una versión del SDK de Vertex AI para Python superior a 1.24.1 para google-cloud-aiplatform. Si estás entrenando con Tensorflow, asegúrate de que esté instalada una versión de protobuf anterior a la 4.0 para evitar conflictos.

Existen dos opciones para registrar los datos en Vertex AI Experiments: el registro automático y el registro manual.

Se recomienda el registro automático si usas uno de estos frameworks compatibles: Fastai, Gluon, Keras, LightGBM, Pytorch Lightning, Scikit-learn, Spark, Statsmodels, XGBoost. Si tu framework no es compatible o hay métricas personalizadas que quieras registrar en la ejecución de tu experimento, puedes adaptar la secuencia de comandos de entrenamiento de forma manual para registrar parámetros, métricas y artefactos.

Registro automático de datos

Para habilitar el registro automático, solo configura enable_autolog=True, consulta from_local_script. Tienes la opción de crear una ejecución de experimento o no. Si no se especifica un nombre de experimento, se creará uno.

El SDK de Vertex AI para Python controla la creación de recursos ExperimentRun.

Python

def create_custom_job_with_experiment_autologging_sample(
    project: str,
    location: str,
    staging_bucket: str,
    display_name: str,
    script_path: str,
    container_uri: str,
    service_account: str,
    experiment: str,
    experiment_run: Optional[str] = None,
) -> None:
    aiplatform.init(project=project, location=location, staging_bucket=staging_bucket, experiment=experiment)

    job = aiplatform.CustomJob.from_local_script(
        display_name=display_name,
        script_path=script_path,
        container_uri=container_uri,
        enable_autolog=True,
    )

    job.run(
        service_account=service_account,
        experiment=experiment,
        experiment_run=experiment_run,
    )

  • project: El ID del proyecto. Puedes encontrar estos IDs en la página de bienvenida de la consola de Google Cloud.
  • location: Consulta Lista de ubicaciones disponibles.
  • staging_bucket: El nombre que le asignaste a tu bucket, por ejemplo, my_bucket.
  • display_name: Es el nombre definido por el usuario para el recurso CustomJob.
  • script_path: La ruta de acceso, en relación con el directorio de trabajo en su sistema de archivos local, que conduce a la secuencia de comandos que es el punto de entrada del código de entrenamiento.
  • container_uri: El URI de la imagen de contenedor de entrenamiento puede ser un contenedor de entrenamiento compilado previamente de Vertex AI o un contenedor personalizado.
  • service_account: Consulta Crea una cuenta de servicio con permisos necesarios.
  • experiment: Proporciona un nombre para tu experimento. El experimento debe tener una instancia de TensorBoard. Para encontrar tu lista de experimentos en la consola de Google Cloud, selecciona Experimentos en la barra de navegación de secciones.
  • experiment_run: (Opcional) Especifica un nombre de ejecución. Si no se especifica, se crea una ejecución de forma automática.

Registra datos de forma manual

Usa la opción de registrar manualmente los datos para incorporar tu secuencia de comandos de entrenamiento.

Aquí te mostramos cómo cambiar la secuencia de comandos de entrenamiento:

import os
import pickle
import pandas as pd
from sklearn.linear_model import LinearRegression
# To use manual logging APIs, import aiplatform
from google.cloud import aiplatform

# Create Dataset
data = {'A': [1.1,2.2,4.1,5.2],
        'B': [200, 212.12, 22, 123],
        'Y': [1,0,1,0]}
df = pd.DataFrame(data)
X = df[['A', 'B']]
Y = df['Y']

# Train model
model = LinearRegression().fit(X, Y)

# Save the model to gcs
model_dir = os.getenv('AIP_MODEL_DIR')
model_gcs = model_dir.replace('gs://', '/gcs/')
model_name = 'model.pkl'
os.mkdir(model_gcs)
f = open(os.path.join(model_gcs, model_name), 'wb')
pickle.dump(model, f)

f = open(os.path.join(model_gcs, model_name), 'wb')
    pickle.dump(model, f)

# Call aiplatform's logging APIs to save data to Vertex AI Experiments.
params = model.get_params()
aiplatform.log_params(params)
metrics = {"training_accuracy": model.score(X,Y)}
aiplatform.log_metrics(metrics)

Tienes la opción de crear una ejecución de experimento o no. Si no se especifica un nombre de experimento, se crea uno para ti.

Para obtener más información, consulta Registra datos de forma manual en una ejecución de experimento.

Python

def create_custom_job_with_experiment_sample(
    project: str,
    location: str,
    staging_bucket: str,
    display_name: str,
    script_path: str,
    container_uri: str,
    service_account: str,
    experiment: str,
    experiment_run: Optional[str] = None,
) -> None:
    aiplatform.init(
        project=project,
        location=location,
        staging_bucket=staging_bucket,
        experiment=experiment
    )

    job = aiplatform.CustomJob.from_local_script(
        display_name=display_name,
        script_path=script_path,
        container_uri=container_uri,
    )

    job.run(
        service_account=service_account,
        experiment=experiment,
        experiment_run=experiment_run,
    )

  • project: El ID del proyecto. Puedes encontrar estos IDs en la página de bienvenida de la consola de Google Cloud.
  • location: Consulta Lista de ubicaciones disponibles
  • staging_bucket: El nombre que le asignaste a tu bucket, por ejemplo, my_bucket.
  • display_name: Es el nombre definido por el usuario para el recurso CustomJob.
  • script_path: La ruta de acceso, en relación con el directorio de trabajo en su sistema de archivos local, que conduce a la secuencia de comandos que es el punto de entrada del código de entrenamiento.
  • container_uri: El URI de la imagen de contenedor de entrenamiento puede ser un contenedor de entrenamiento compilado previamente de Vertex AI o un contenedor personalizado. Si usas un contenedor personalizado, asegúrate de que google-cloud-aiplatform>=1.24.0 esté instalado.
  • service_account: Consulta Crea una cuenta de servicio con permisos necesarios.
  • experiment: Proporciona un nombre para tu experimento. Para encontrar tu lista de experimentos en la consola de Google Cloud, selecciona Experimentos en la barra de navegación de secciones.
  • experiment_run: Especifica un nombre de ejecución. Si no se especifica, se crea una ejecución de forma automática.

Visualiza métricas y parámetros registrados automáticamente

Usa el SDK de Vertex AI para Python a fin de comparar ejecuciones y obtener datos de ejecuciones. La consola de Google Cloud proporciona una forma fácil de comparar estas ejecuciones.

¿Qué sigue?

Muestra de notebook relevante