Cuando usas el entrenamiento personalizado para entrenar modelos, puedes configurar tu trabajo de entrenamiento para que suba automáticamente tus registros de Vertex AI TensorBoard a Vertex AI TensorBoard.
Puedes usar esta integración para monitorizar tu entrenamiento casi en tiempo real, ya que Vertex AI TensorBoard transmite los registros de Vertex AI TensorBoard a medida que se escriben en Cloud Storage.
Para la configuración inicial, consulta el artículo Configurar Vertex AI TensorBoard.
Cambios en tu guion de entrenamiento
Tu secuencia de comandos de entrenamiento debe configurarse para escribir registros de TensorBoard en el
contenedor de Cloud Storage, cuya ubicación el servicio de entrenamiento de Vertex AI
pondrá automáticamente a disposición a través de una variable de entorno predefinida AIP_TENSORBOARD_LOG_DIR
.
Para ello, normalmente se proporciona os.environ['AIP_TENSORBOARD_LOG_DIR']
como directorio de registro a las APIs de escritura de registros de TensorBoard de código abierto. La ubicación de AIP_TENSORBOARD_LOG_DIR
se suele definir con la variable staging_bucket
.
Para configurar tu script de entrenamiento en TensorFlow 2.x, crea una retrollamada de TensorBoard y asigna el valor os.environ['AIP_TENSORBOARD_LOG_DIR']
a la variable log_dir
.
La retrollamada de TensorBoard se incluye en la lista de retrollamadas de TensorFlow model.fit
.
tensorboard_callback = tf.keras.callbacks.TensorBoard( log_dir=os.environ['AIP_TENSORBOARD_LOG_DIR'], histogram_freq=1 ) model.fit( x=x_train, y=y_train, epochs=epochs, validation_data=(x_test, y_test), callbacks=[tensorboard_callback], )
Consulta más información sobre cómo Vertex AI define las variables de entorno en tu entorno de entrenamiento personalizado.
Crear un trabajo de entrenamiento personalizado
En el siguiente ejemplo se muestra cómo crear un trabajo de entrenamiento personalizado.
Para ver un ejemplo detallado de cómo crear un trabajo de entrenamiento personalizado, consulta Hola, entrenamiento personalizado. Para saber cómo crear contenedores de entrenamiento personalizados, consulta el artículo Crear una imagen de contenedor personalizada para el entrenamiento.
Para crear una tarea de entrenamiento personalizada, usa el SDK de Vertex AI para Python o REST.
Python
Python
project
: . Puedes encontrar estos IDs en la página de Google Cloud bienvenida de la consola.
location
: la ubicación en la que se ejecutará el CustomJob. Debe ser la misma ubicación que la instancia de TensorBoard proporcionada.staging_bucket
: el segmento de Cloud Storage en el que se almacenan los artefactos durante las llamadas a la API, incluidos los registros de TensorBoard.display_name
: nombre visible del trabajo de entrenamiento personalizado.script_path
: la ruta, relativa al directorio de trabajo en tu sistema de archivos local, de la secuencia de comandos que es el punto de entrada de tu código de entrenamiento.container_uri
: el URI de la imagen del contenedor de entrenamiento puede ser Vertex AI. contenedor de entrenamiento prediseñado o un contenedor personalizado.model_serving_container_image_uri
: el URI del contenedor de servicio del modelo adecuado para servir el modelo producido por la secuencia de comandos de entrenamiento.dataset_id
: número de ID del conjunto de datos que se va a usar para el entrenamiento.model_display_name
: nombre visible del modelo entrenado.args
: argumentos de línea de comandos que se pasarán a la secuencia de comandos de Python.replica_count
: número de réplicas de trabajadores que se deben usar. En la mayoría de los casos, asigna el valor 1 a tu primer grupo de trabajadores.machine_type
: el tipo de VM que se va a usar. Para ver una lista de las máquinas virtuales compatibles, consulta Tipos de máquinas.accelerator_type
: tipo de GPU que se va a asociar a cada VM del pool de recursos. Para ver una lista de las GPUs compatibles, consulta GPUs.accelerator_count
El número de GPUs que se van a asociar a cada VM del grupo de recursos. El valor predeterminado es1
.training_fraction_split
: la fracción del conjunto de datos que se usará para entrenar el modelo.validation_fraction_split
: la fracción del conjunto de datos que se usará para validar el modelo.test_fraction_split
: la fracción del conjunto de datos que se usará para evaluar el modelo.sync
: indica si se debe ejecutar este método de forma síncrona.tensorboard_resource_name
: nombre del recurso de la instancia de Vertex TensorBoard a la que CustomJob subirá los registros de TensorBoard.service_account
: es obligatorio cuando se ejecuta con TensorBoard. Consulta Crear una cuenta de servicio con los permisos necesarios.
REST
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
- LOCATION_ID: la ubicación en la que se ejecutará el
CustomJob
. Por ejemplo, us-central1. Debe ser la misma ubicación que la instancia de TensorBoard proporcionada. - PROJECT_ID: tu ID de proyecto.
- TENSORBOARD_INSTANCE_NAME: (Obligatorio) Nombre completo de la instancia de Vertex AI TensorBoard que almacena los registros de Vertex AI TensorBoard:
projects/
PROJECT_ID
/locations/LOCATION_ID
/tensorboards/TENSORBOARD_INSTANCE_ID
Nota: Si la instancia de TensorBoard no existe, se producirá un error 404 al crear customJobs. - GCS_BUCKET_NAME: "${PROJECT_ID}-tensorboard-logs-${LOCATION}"
- USER_SA_EMAIL: (Obligatorio) La cuenta de servicio creada en los pasos anteriores o tu propia cuenta de servicio. "USER_SA_NAME@${PROJECT_ID}.iam.gserviceaccount.com"
- TRAINING_CONTAINER: TRAINING_CONTAINER.
- INVOCATION_TIMESTAMP: "$(date +'%Y%m%d-%H%M%S')"
- JOB_NAME: "tensorboard-example-job-${INVOCATION_TIMESTAMP}"
- BASE_OUTPUT_DIR: (obligatorio) la ruta Google Cloud donde se escribe toda la salida del entrenamiento. "gs://$GCS_BUCKET_NAME/$JOB_NAME"
Método HTTP y URL:
POST https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/customJobs
Cuerpo JSON de la solicitud:
{ "displayName": JOB_NAME, "jobSpec":{ "workerPoolSpecs":[ { "replicaCount": "1", "machineSpec": { "machineType": "n1-standard-8", }, "containerSpec": { "imageUri": TRAINING_CONTAINER, } } ], "base_output_directory": { "output_uri_prefix": BASE_OUTPUT_DIR, }, "serviceAccount": USER_SA_EMAIL, "tensorboard": TENSORBOARD_INSTANCE_NAME, } }
Para enviar tu solicitud, despliega una de estas opciones:
Deberías recibir una respuesta JSON similar a la siguiente:
{ "name": "projects/PROJECT_ID/locations/LOCATION_ID/customJobs/CUSTOM_JOB_ID", "displayName": "DISPLAY_NAME", "jobSpec": { "workerPoolSpecs": [ { "machineSpec": { "machineType": "n1-standard-8" }, "replicaCount": "1", "diskSpec": { "bootDiskType": "pd-ssd", "bootDiskSizeGb": 100 }, "containerSpec": { "imageUri": "IMAGE_URI" } } ], "serviceAccount": "SERVICE_ACCOUNT", "baseOutputDirectory": { "outputUriPrefix": "OUTPUT_URI_PREFIX" }, "tensorboard": "projects//locations/LOCATION_ID/tensorboards/tensorboard-id" }, "state": "JOB_STATE_PENDING", "createTime": "CREATE-TIME", "updateTime": "UPDATE-TIME" }
Siguientes pasos
- Consulta Ver Vertex AI TensorBoard.
- Consulta cómo optimizar el rendimiento de tus trabajos de entrenamiento personalizados con Cloud Profiler.