Cuando usas el entrenamiento personalizado para entrenar modelos, puedes configurar tu trabajo de entrenamiento a fin de subir automáticamente tus registros de Vertex AI TensorBoard a Vertex AI TensorBoard.
Puedes usar esta integración para supervisar tu entrenamiento casi en tiempo real, ya que Vertex AI TensorBoard permite ver los registros de Vertex AI TensorBoard a medida que se escriben en Cloud Storage.
Para la configuración inicial, consulta Configura Vertex AI TensorBoard.
Cambios en la secuencia de comandos de entrenamiento
La secuencia de comandos de entrenamiento debe configurarse para escribir registros de TensorBoard en el bucket de Cloud Storage, cuya ubicación pondrá a disposición Vertex AI Training Service de forma automática a través de una variable de entorno predefinida AIP_TENSORBOARD_LOG_DIR
.
Por lo general, esto se puede hacer si 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. Por lo general, la ubicación de AIP_TENSORBOARD_LOG_DIR
se establece con la variable staging_bucket
.
Para configurar la secuencia de comandos de entrenamiento en TensorFlow 2.x, crea una devolución de llamada de TensorBoard y establece la variable log_dir
en os.environ['AIP_TENSORBOARD_LOG_DIR']
La devolución de llamada de TensorBoard se incluye en la lista de devoluciones de llamadas model.fit
de TensorFlow.
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], )
Obtén más información sobre cómo Vertex AI establece variables de entorno en el entorno de entrenamiento personalizado.
Crea un trabajo de entrenamiento personalizado
En el siguiente ejemplo, se muestra cómo crear tu propio trabajo de entrenamiento personalizado.
Para obtener un ejemplo detallado sobre cómo crear un trabajo de entrenamiento personalizado, consulta Entrenamiento personalizado de Hello. Si deseas obtener los pasos para compilar contenedores de entrenamiento personalizados, consulta Crea una imagen de contenedor personalizada para el entrenamiento.
Si quieres crear un trabajo de entrenamiento personalizado, usa el SDK de Vertex AI para Python o REST.
Python
Python
project
: El ID del proyecto. Puedes encontrar estos IDs en la página de bienvenida de la consola de Google Cloud.
location
: Es la ubicación en la que se ejecutará la CustomJob. Debe ser la misma ubicación que la instancia de TensorBoard proporcionada.staging_bucket
: Es el bucket de Cloud Storage para almacenar en etapa intermedia los artefactos durante las llamadas a la API, incluidos los registros de TensorBoard.display_name
: Es el nombre visible del trabajo de entrenamiento personalizado.script_path
: La ruta, 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.model_serving_container_image_uri
: Es el URI del contenedor de entrega de modelos adecuado para entregar el modelo que produce la secuencia de comandos de entrenamiento.dataset_id
: El número de ID del conjunto de datos que se usará para el entrenamiento.model_display_name
: Nombre visible del modelo entrenadoargs
: Los argumentos de la línea de comandos que se pasarán a la secuencia de comandos de Python.replica_count
: La cantidad de réplicas de trabajadores que se deben usar. En la mayoría de los casos, debes configurar esta opción como 1 para el primer grupo de trabajadores.machine_type
: el tipo de VM que se usará. Para obtener una lista de las VMs compatibles, consulta Tipos de máquinas.accelerator_type
: El tipo de GPU que se conectará a cada VM en el grupo de recursos. Para obtener una lista de las GPUs compatibles, consulta GPU.accelerator_count
: Es la cantidad de GPUs que se deben adjuntar a cada VM en el grupo de recursos (opcional). 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
: Es el nombre del recurso de la instancia de Vertex TensorBoard a la que CustomJob subirá los registros de TensorBoard.service_account
: Obligatorio cuando se ejecuta con TensorBoard. Consulta Crea una cuenta de servicio con los permisos necesarios.
REST
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- LOCATION_ID: Es la ubicación en la que se ejecutará
CustomJob
, por ejemplo, us-central1. Debe ser la misma ubicación que la instancia de TensorBoard proporcionada. - PROJECT_ID: El ID del proyecto.
- TENSORBOARD_INSTANCE_NAME: (Nombre obligatorio) El nombre completo de la instancia de Vertex AI de TensorBoard existente que almacena tus registros de TensorBoard de Vertex AI:
projects/
PROJECT_ID
/locations/LOCATION_ID
/tensorboards/TENSORBOARD_INSTANCE_ID
Nota: Si La instancia de TensorBoard no es una existente, la creación de customJobs muestra un error 404. - GCS_BUCKET_NAME: "${PROJECT_ID}-tensorboard-logs-${LOCATION}"
- USER_SA_EMAIL: (obligatorio) a 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) Es la ruta de acceso de Google Cloud en la que se escribe todo el resultado 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, expande una de estas opciones:
Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
{ "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" }
¿Qué sigue?
- Consulta Cómo ver Vertex AI TensorBoard.
- Aprende a optimizar el rendimiento de tus trabajos de entrenamiento personalizados con Cloud Profiler.