Configura una canalización que se ejecute en un recurso persistente

Un recurso persistente de Vertex AI es un clúster de larga duración que puedes usar para ejecutar trabajos de entrenamiento personalizados y ejecuciones de canalizaciones. Cuando usas un recurso persistente para una ejecución de canalización, puedes ayudar a garantizar la disponibilidad del recurso de procesamiento y reducir el tiempo de inicio de la tarea de canalización. Los recursos persistentes admiten todas las VMs y GPUs compatibles con los trabajos de entrenamiento personalizados. Obtén más información sobre los recursos persistentes.

Esta página te muestra cómo hacer lo siguiente:

Antes de comenzar

Antes de poder crear una ejecución de canalización con un recurso persistente, primero debes completar los siguientes requisitos previos.

Define y compila una canalización

Define tu canalización y, luego, compila la definición de la canalización en un archivo YAML. Para obtener más información sobre cómo definir y compilar una canalización, consulta Crea una canalización.

Roles de IAM obligatorios

Para obtener los permisos que necesitas para crear un recurso persistente, pídele a tu administrador que te otorgue el rol de IAM de administrador de Vertex AI (roles/aiplatform.admin) en tu proyecto. Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.

Este rol predefinido contiene el permiso aiplatform.persistentResources.create, que se requiere para crear un recurso persistente.

También puedes obtener este permiso con roles personalizados o con otros roles predefinidos.

Crea un recurso persistente

Usa los siguientes ejemplos para crear un recurso persistente que puedas asociar con una ejecución de canalización. Para obtener más información sobre cómo crear recursos persistentes, consulta Crea un recurso persistente.

gcloud

Para crear un recurso persistente que puedas asociar con una ejecución de canalización, usa el comando gcloud ai persistent-resources create junto con la marca --enable-custom-service-account.

Un recurso persistente puede tener uno o más grupos de recursos. Para crear varios grupos de recursos en un recurso persistente, especifica varias marcas --resource-pool-spec.

Puedes especificar todas las configuraciones del grupo de recursos como parte de la línea de comandos o usar la marca --config para especificar la ruta de acceso a un archivo YAML que contiene las configuraciones.

Antes de usar cualquiera de los datos de comando a continuación, realiza los siguientes reemplazos:

  • PROJECT_ID: El ID del proyecto de Google Cloud en el que deseas crear el recurso persistente.
  • LOCATION: la región en la que deseas crear el recurso persistente. Para obtener una lista de las regiones compatibles, consulta Disponibilidad de funciones.
  • PERSISTENT_RESOURCE_ID: el ID del recurso persistente.
  • DISPLAY_NAME: Opcional Es el nombre visible del recurso persistente.
  • MACHINE_TYPE: Es el tipo de máquina virtual (VM) que se usará. Para obtener una lista de las VMs compatibles, consulta Tipos de máquinas. Este campo corresponde al campo machineSpec.machineType en el mensaje de la API de ResourcePool.
  • REPLICA_COUNT: Opcional Es la cantidad de réplicas que se crearán para el grupo de recursos, si no deseas usar el ajuste de escala automático. Este campo corresponde al campo replicaCount en el mensaje de la API de ResourcePool. Debes especificar el recuento de réplicas si no especificas los campos MIN_REPLICA_COUNT y MAX_REPLICA_COUNT.
  • MIN_REPLICA_COUNT: Opcional Es la cantidad mínima de réplicas si usas el ajuste de escala automático para el grupo de recursos. Debes especificar MIN_REPLICA_COUNT y MAX_REPLICA_COUNT para usar el ajuste de escala automático.
  • MAX_REPLICA_COUNT: Opcional Es la cantidad máxima de réplicas si usas el ajuste de escala automático para el grupo de recursos. Debes especificar MIN_REPLICA_COUNT y MAX_REPLICA_COUNT para usar el ajuste de escala automático.
  • CONFIG: Es la ruta de acceso al archivo de configuración YAML del recurso persistente, que contiene una lista de especificaciones de ResourcePool. Si se especifica una opción en el archivo de configuración y en los argumentos de la línea de comandos, los argumentos de la línea de comandos anulan el archivo de configuración. Ten en cuenta que las claves con guiones bajos no son válidas.

    Archivo de configuración YAML de ejemplo:

    resourcePoolSpecs:
      machineSpec:
        machineType: n1-standard-4
      replicaCount: 1
        

Ejecuta el siguiente comando:

Linux, macOS o Cloud Shell

gcloud ai persistent-resources create \
    --persistent-resource-id=PERSISTENT_RESOURCE_ID \
    --display-name=DISPLAY_NAME \
    --project=PROJECT_ID \
    --region=LOCATION \
    --resource-pool-spec="replica-count=REPLICA_COUNT,machine-type=MACHINE_TYPE,min-replica-count=MIN_REPLICA_COUNT,max-replica-count=MAX_REPLICA_COUNT" \
    --enable-custom-service-account

Windows (PowerShell)

gcloud ai persistent-resources create `
    --persistent-resource-id=PERSISTENT_RESOURCE_ID `
    --display-name=DISPLAY_NAME `
    --project=PROJECT_ID `
    --region=LOCATION `
    --resource-pool-spec="replica-count=REPLICA_COUNT,machine-type=MACHINE_TYPE,min-replica-count=MIN_REPLICA_COUNT,max-replica-count=MAX_REPLICA_COUNT" `
    --enable-custom-service-account

Windows (cmd.exe)

gcloud ai persistent-resources create ^
    --persistent-resource-id=PERSISTENT_RESOURCE_ID ^
    --display-name=DISPLAY_NAME ^
    --project=PROJECT_ID ^
    --region=LOCATION ^
    --resource-pool-spec="replica-count=REPLICA_COUNT,machine-type=MACHINE_TYPE,min-replica-count=MIN_REPLICA_COUNT,max-replica-count=MAX_REPLICA_COUNT" ^
    --enable-custom-service-account

Deberías recibir una respuesta similar a la que figura a continuación:

Using endpoint [https://us-central1-aiplatform.googleapis.com/]
Operation to create PersistentResource [projects/PROJECT_NUMBER/locations/us-central1/persistentResources/mypersistentresource/operations/OPERATION_ID] is submitted successfully.

You can view the status of your PersistentResource create operation with the command

  $ gcloud ai operations describe projects/sample-project/locations/us-central1/operations/OPERATION_ID

Comando gcloud de ejemplo

gcloud ai persistent-resources create \
    --persistent-resource-id=my-persistent-resource \
    --region=us-central1 \
    --resource-pool-spec="replica-count=4,machine-type=n1-standard-4"
    --enable-custom-service-account

Configuraciones gcloud avanzadas

Si deseas especificar opciones de configuración que no están disponibles en los ejemplos anteriores, puedes usar la marca --config para especificar la ruta a un archivo config.yaml en tu entorno local que contiene los campos de persistentResources. Por ejemplo:

gcloud ai persistent-resources create \
    --persistent-resource-id=PERSISTENT_RESOURCE_ID \
    --project=PROJECT_ID \
    --region=LOCATION \
    --config=CONFIG
    --enable-custom-service-account

Python

Antes de probar este ejemplo, sigue las instrucciones de configuración para Python incluidas en la guía de inicio rápido de Vertex AI sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Vertex AI Python.

Para autenticarte en Vertex AI, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.

Para crear un recurso persistente que puedas usar con una ejecución de canalización, establece el parámetro enable_custom_service_account en True en el objeto ResourceRuntimeSpec mientras creas el recurso persistente.

my_example_resource = persistent_resource.PersistentResource.create(
    persistent_resource_id=PERSISTENT_RESOURCE_ID,
    display_name=DISPLAY_NAME,
    resource_pools=[
        resource_pool.ResourcePool(
            machine_spec=machine_spec.MachineSpec(
                machine_type=MACHINE_TYPE,
            ),
            replica_count=REPLICA_COUNT,
        )
    ],
    resource_runtime_spec=resource_runtime_spec.ResourceRuntimeSpec(
        enable_custom_service_account=True,
    ),
)

Reemplaza lo siguiente:

  • PERSISTENT_RESOURCE_ID: El ID del recurso persistente.
  • DISPLAY_NAME: Opcional Es el nombre visible del recurso persistente.
  • MACHINE_TYPE: Es el tipo de máquina virtual (VM) que se usará. Para obtener una lista de las VMs compatibles, consulta Tipos de máquinas. Este campo corresponde al campo machineSpec.machineType en el mensaje de la API de ResourcePool.
  • REPLICA_COUNT: Es la cantidad de réplicas que se crearán cuando se cree este grupo de recursos.

REST

Para crear un recurso PersistentResource que puedas asociar con una ejecución de canalización, envía una solicitud POST con el método persistentResources/create con el parámetro enable_custom_service_account establecido en true en el cuerpo de la solicitud.

Un recurso persistente puede tener uno o más grupos de recursos. Puedes configurar cada grupo de recursos para que use una cantidad fija de réplicas o el ajuste de escala automático.

Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • PROJECT_ID: El ID del proyecto de Google Cloud en el que deseas crear el recurso persistente.
  • LOCATION: la región en la que deseas crear el recurso persistente. Para obtener una lista de las regiones compatibles, consulta Disponibilidad de funciones.
  • PERSISTENT_RESOURCE_ID: el ID del recurso persistente.
  • DISPLAY_NAME: Opcional Es el nombre visible del recurso persistente.
  • MACHINE_TYPE: Es el tipo de máquina virtual (VM) que se usará. Para obtener una lista de las VMs compatibles, consulta Tipos de máquinas. Este campo corresponde al campo machineSpec.machineType en el mensaje de la API de ResourcePool.
  • REPLICA_COUNT: Opcional Es la cantidad de réplicas que se crearán para el grupo de recursos, si no deseas usar el ajuste de escala automático. Este campo corresponde al campo replicaCount en el mensaje de la API de ResourcePool. Debes especificar el recuento de réplicas si no especificas los campos MIN_REPLICA_COUNT y MAX_REPLICA_COUNT.
  • MIN_REPLICA_COUNT: Opcional Es la cantidad mínima de réplicas si usas el ajuste de escala automático para el grupo de recursos. Debes especificar MIN_REPLICA_COUNT y MAX_REPLICA_COUNT para usar el ajuste de escala automático.
  • MAX_REPLICA_COUNT: Opcional Es la cantidad máxima de réplicas si usas el ajuste de escala automático para el grupo de recursos. Debes especificar MIN_REPLICA_COUNT y MAX_REPLICA_COUNT para usar el ajuste de escala automático.

Método HTTP y URL:

POST https://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/persistentResources?persistent_resource_id=PERSISTENT_RESOURCE_ID

Cuerpo JSON de la solicitud:

{
  "display_name": "DISPLAY_NAME",
  "resource_pools": [
    {
      "machine_spec": {
        "machine_type": "MACHINE_TYPE"
      },
      "replica_count": REPLICA_COUNT,
      "autoscaling_spec": {
        "min_replica_count": MIN_REPLICA_COUNT,
        "max_replica_count": MAX_REPLICA_COUNT
      }
    }
  ],
  "resource_runtime_spec": {
    "enable_custom_service_account: true
  }
}

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_NUMBER/locations/LOCATION/persistentResources/mypersistentresource/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.aiplatform.v1.CreatePersistentResourceOperationMetadata",
    "genericMetadata": {
      "createTime": "2023-02-08T21:17:15.009668Z",
      "updateTime": "2023-02-08T21:17:15.009668Z"
    }
  }
}

Crea una ejecución de canalización con el recurso persistente

Usa la siguiente muestra de código para crear una ejecución de canalización que use el recurso persistente:

  job = aiplatform.PipelineJob(display_name = 'DISPLAY_NAME',
  template_path = 'COMPILED_PIPELINE_PATH',
  pipeline_root = 'PIPELINE_ROOT',
  project = 'PROJECT_ID',
  location = 'LOCATION',
  default_runtime = {
    "persistentResourceRuntimeDetail": {
    "persistentResourceName": "PERSISTENT_RESOURCE_ID",
    "taskResourceUnavailableWaitTimeMs": WAIT_TIME,
    "taskResourceUnavailableTimeoutBehavior": TIMEOUT_BEHAVIOR,
    }
  }

Reemplaza lo siguiente:

  • DISPLAY_NAME: Es el nombre de la canalización. Aparecerá en la consola de Google Cloud.

  • COMPILED_PIPELINE_PATH: Es la ruta de acceso al archivo YAML de canalización compilado. Puede ser una ruta local o un URI de Cloud Storage.

  • PIPELINE_ROOT: Especifica un URI de Cloud Storage para almacenar los artefactos de la ejecución de tu canalización.

  • PROJECT_ID: Es el Google Cloud proyecto en el que se ejecuta esta canalización.

  • LOCATION: Es la región en la que se ejecuta la ejecución de la canalización. Para obtener más información sobre las regiones en las que está disponible Vertex AI Pipelines, consulta la guía de ubicaciones de Vertex AI. Si no configuras este parámetro, Vertex AI Pipelines usa la ubicación predeterminada establecida en aiplatform.init.

  • PERSISTENT_RESOURCE_ID: Es el ID del recurso persistente que creaste.

  • WAIT_TIME: Es el tiempo en milisegundos que se esperará si el recurso persistente no está disponible.

  • TIMEOUT_BEHAVIOR: Especifica el comportamiento de resguardo de la tarea de canalización en caso de que se supere WAIT_TIME. Entre los valores posibles, se incluyen los siguientes:

    • FAIL La tarea de canalización falla después de exceder el tiempo de espera.

    • FALL_BACK_TO_ON_DEMAND La tarea de canalización sigue ejecutándose con los recursos de entrenamiento predeterminados de Vertex AI, sin usar el recurso persistente.

¿Qué sigue?