Crear un recurso persistente

Cuando creas un recurso persistente, el servicio de entrenamiento primero busca recursos en el grupo de recursos de Compute Engine en función de las especificaciones que hayas proporcionado y, a continuación, aprovisiona un clúster de larga duración. En esta página se explica cómo crear un recurso persistente para ejecutar tus trabajos de entrenamiento personalizados mediante la consola de Google Cloud , la CLI de Google Cloud y la API REST.

Roles obligatorios

Para obtener el permiso que necesitas para crear un recurso persistente, pide a tu administrador que te conceda el rol de gestión de identidades y accesos Administrador de Vertex AI (roles/aiplatform.admin) en tu proyecto. Para obtener más información sobre cómo conceder roles, consulta el artículo Gestionar el acceso a proyectos, carpetas y organizaciones.

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

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

Crear un recurso persistente

Selecciona una de las siguientes pestañas para ver instrucciones sobre cómo crear un recurso persistente.

Consola

Para crear un recurso persistente con la consola Google Cloud , sigue estos pasos:

  1. En la Google Cloud consola, ve a la página Recursos persistentes.

    Ir a Recursos persistentes

  2. Haz clic en Crear clúster.

  3. Configure el clúster de la siguiente manera:

    • Nombre: introduce un nombre para el clúster.
    • Descripción: (opcional) introduce una descripción del clúster.
    • Región: selecciona la región en la que quieras crear el clúster.
  4. Haz clic en Continuar.

  5. Configure los recursos de computación del clúster de la siguiente manera:

    1. Haz clic en Grupo de trabajadores 1.
    2. Selecciona la pestaña de la familia de máquinas que quieras usar y configura el grupo de trabajadores de la siguiente manera:

      Uso general

      Las VMs de uso general ofrecen la mejor relación precio-rendimiento para diversas cargas de trabajo.

      • Serie: selecciona una serie de máquinas.
      • Tipo de máquina: selecciona un tipo de máquina.
      • Tipo de disco: selecciona Disco estándar o Disco SSD.
      • Tamaño del disco: introduce el tamaño del disco que quieras.
      • Número mínimo de réplicas: introduce el número mínimo de réplicas que quieres que haya en el grupo de trabajadores.
      • Número máximo de réplicas: (opcional) introduce el número máximo de réplicas permitidas en el grupo de trabajadores. Si se especifica, el grupo de trabajadores escala automáticamente el número de réplicas hasta el número máximo de réplicas configurado según sea necesario.

      Optimizada para la computación

      Las VMs optimizadas para la computación ofrecen el mayor rendimiento por núcleo y están optimizadas para cargas de trabajo que requieren una gran cantidad de recursos de computación.

      • Serie: selecciona una serie de máquinas.
      • Tipo de máquina: selecciona un tipo de máquina.
      • Tipo de disco: selecciona Disco estándar o Disco SSD.
      • Tamaño del disco: introduce el tamaño del disco que quieras.
      • Número mínimo de réplicas: introduce el número mínimo de réplicas que quieres que haya en el grupo de trabajadores.
      • Número máximo de réplicas: (opcional) introduce el número máximo de réplicas permitidas en el grupo de trabajadores. Si se especifica, el grupo de trabajadores escala automáticamente el número de réplicas hasta el número máximo de réplicas configurado según sea necesario.

      Memoria optimizada

      Las VMs con memoria optimizada son ideales para cargas de trabajo que requieren un uso intensivo de la memoria, ya que ofrecen más memoria por núcleo que otras familias de máquinas, con hasta 12 TB de memoria.

      • Serie: selecciona una serie de máquinas.
      • Tipo de máquina: selecciona un tipo de máquina.
      • Tipo de disco: selecciona Disco estándar o Disco SSD.
      • Tamaño del disco: introduce el tamaño del disco que quieras.
      • Número mínimo de réplicas: introduce el número mínimo de réplicas que quieres que haya en el grupo de trabajadores.
      • Número máximo de réplicas: (opcional) introduce el número máximo de réplicas permitidas en el grupo de trabajadores. Si se especifica, el grupo de trabajadores escala automáticamente el número de réplicas hasta el número máximo de réplicas configurado según sea necesario.

      GPUs

      Estas máquinas virtuales optimizadas para aceleradores son ideales para cargas de trabajo de computación de la arquitectura de dispositivos unificada de computación (CUDA) masivamente paralelas, como el aprendizaje automático y la computación de alto rendimiento. Esta familia es la mejor opción para las cargas de trabajo que requieren GPUs.

      • Tipo de GPU: selecciona el tipo de GPU que quieras usar.
      • Número de GPUs: introduce el número de GPUs que quieras usar.
      • Serie: selecciona una serie de máquinas.
      • Tipo de máquina: selecciona un tipo de máquina.
      • Tipo de disco: selecciona Disco estándar o Disco SSD.
      • Tamaño del disco: introduce el tamaño del disco que quieras.
      • Número mínimo de réplicas: introduce el número mínimo de réplicas que quieres que haya en el grupo de trabajadores.
      • Número máximo de réplicas: (opcional) introduce el número máximo de réplicas permitidas en el grupo de trabajadores. Si se especifica, el grupo de trabajadores escala automáticamente el número de réplicas hasta el número máximo de réplicas configurado según sea necesario.
    3. Haz clic en Listo.

    4. (Opcional) Para añadir más grupos de trabajadores, haz clic en Añadir grupo de trabajadores.

  6. Haz clic en Crear.

gcloud

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

Cada grupo de recursos puede tener el autoescalado habilitado o inhabilitado. Para habilitar el ajuste automático de escala, especifica min_replica_count y max_replica_count.

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 a un archivo YAML que contenga las configuraciones.

Antes de usar los datos de los comandos que se indican a continuación, haz los siguientes cambios:

  • PROJECT_ID: el ID del proyecto en el que quieres crear el recurso persistente. Google Cloud
  • LOCATION: la región en la que quieras crear el recurso persistente. Para ver una lista de las regiones admitidas, consulta Disponibilidad de las funciones.
  • PERSISTENT_RESOURCE_ID: ID del recurso persistente.
  • DISPLAY_NAME: (Opcional) Nombre visible del recurso persistente.
  • MACHINE_TYPE: el tipo de VM que se va a usar. Para consultar una lista de las VMs compatibles, consulta Tipos de máquinas. Este campo se corresponde con el campo machineSpec.machineType del mensaje de la API ResourcePool.
  • ACCELERATOR_TYPE: (Opcional) 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. Este campo se corresponde con el campo machineSpec.acceleratorType del mensaje de la API ResourcePool.
  • ACCELERATOR_COUNT: (Opcional) Número de GPUs que se van a asociar a cada VM del grupo de recursos. El valor predeterminado es 1. Este campo se corresponde con el campo machineSpec.acceleratorCount del mensaje de la API ResourcePool.
  • REPLICA_COUNT: número de réplicas que se crearán al crear este grupo de recursos. Este campo se corresponde con el campo replicaCount del mensaje de la API ResourcePool. Este campo es obligatorio si no especificas MIN_REPLICA_COUNT y MAX_REPLICA_COUNT.
  • MIN_REPLICA_COUNT: (Opcional) Número mínimo de réplicas al que se puede reducir el escalado automático de este grupo de recursos. Se necesitan MIN_REPLICA_COUNT y MAX_REPLICA_COUNT para habilitar el autoescalado en este grupo de recursos.
  • MAX_REPLICA_COUNT: (Opcional) Número máximo de réplicas al que puede aumentar el autoescalado de este grupo de recursos. Se necesitan MIN_REPLICA_COUNT y MAX_REPLICA_COUNT para habilitar el autoescalado en este grupo de recursos.
  • BOOT_DISK_TYPE: (Opcional) Tipo de disco que se va a usar como disco de arranque de cada VM del pool de recursos. Este campo se corresponde con el campo diskSpec.bootDiskType del mensaje de la API ResourcePool. Entre los valores aceptados se incluyen los siguientes:
    • pd-standard (predeterminado)
    • pd-ssd
  • BOOT_DISK_SIZE_GB: (Opcional) Tamaño del disco de arranque de cada VM del grupo de recursos en GiB. Los valores aceptables van de 100 (valor predeterminado) a 64000. Este campo se corresponde con el campo diskSpec.bootDiskSizeGb del mensaje de la API ResourcePool.
  • CONFIG: ruta al archivo de configuración YAML del recurso persistente. Este archivo debe contener una lista de ResourcePool. Si se especifica una opción tanto en el archivo de configuración como en los argumentos de la línea de comandos, los argumentos de la línea de comandos anularán el archivo de configuración. Tenga en cuenta que las claves con guiones bajos no son válidas.

    Ejemplo de archivo de configuración YAML:

    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,min-replica-count=MIN_REPLICA_COUNT,max-replica-count=MAX_REPLICA_COUNT,machine-type=MACHINE_TYPE,accelerator-type=ACCELERATOR_TYPE,accelerator-count=ACCELERATOR_COUNT,disk-type=BOOT_DISK_TYPE,disk-size=BOOT_DISK_SIZE_GB"

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,min-replica-count=MIN_REPLICA_COUNT,max-replica-count=MAX_REPLICA_COUNT,machine-type=MACHINE_TYPE,accelerator-type=ACCELERATOR_TYPE,accelerator-count=ACCELERATOR_COUNT,disk-type=BOOT_DISK_TYPE,disk-size=BOOT_DISK_SIZE_GB"

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,min-replica-count=MIN_REPLICA_COUNT,max-replica-count=MAX_REPLICA_COUNT,machine-type=MACHINE_TYPE,accelerator-type=ACCELERATOR_TYPE,accelerator-count=ACCELERATOR_COUNT,disk-type=BOOT_DISK_TYPE,disk-size=BOOT_DISK_SIZE_GB"

Deberías recibir una respuesta similar a la siguiente:

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

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

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

Ejemplo de comando gcloud:

gcloud ai persistent-resources create \
    --persistent-resource-id=my-persistent-resource \
    --region=us-central1 \
    --resource-pool-spec="min-replica-count=4,max-replica-count=12,machine-type=n1-highmem-2,accelerator-type=NVIDIA_TESLA_T4,accelerator-count=1,disk-type=pd-standard,disk-size=200" \
    --resource-pool-spec="replica-count=4,machine-type=n1-standard-4"

Configuraciones gcloud avanzadas

Si quieres 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 contenga los campos de persistentResources. Por ejemplo:

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

Python

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

Para autenticarte en Vertex AI, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.

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

from google.cloud.aiplatform.preview import persistent_resource
from google.cloud.aiplatform_v1beta1.types.persistent_resource import ResourcePool
from google.cloud.aiplatform_v1beta1.types.machine_resources import MachineSpec

# Create the persistent resource. This method returns the created resource.

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

# Setting `sync` to `False` makes the method is non-blocking and the resource
# object returned syncs when the method completes.

SYNC=False

if not SYNC:
    my_example_resource.wait()

Haz los cambios siguientes:

  • PERSISTENT_RESOURCE_ID: ID único definido por el usuario del recurso persistente. Debe empezar por una letra, terminar con una letra o un número, y solo puede contener letras en minúscula, números y guiones (-).
  • DISPLAY_NAME: opcional. Nombre visible del recurso persistente.
  • MACHINE_TYPE: El tipo de máquina virtual (VM) que se va a usar. Para consultar una lista de las máquinas virtuales compatibles, consulta Tipos de máquinas. Este campo se corresponde con el campo machineSpec.machineType del
  • REPLICA_COUNT: número de réplicas que se crearán al crear este grupo de recursos.

REST

Un recurso persistente puede tener uno o varios grupos de recursos (machine_spec), y cada grupo de recursos puede tener el autoescalado habilitado o inhabilitado.

Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

  • PROJECT_ID: el ID del proyecto en el que quieres crear el recurso persistente. Google Cloud
  • LOCATION: la región en la que quieras crear el recurso persistente. Para ver una lista de las regiones admitidas, consulta Disponibilidad de las funciones.
  • PERSISTENT_RESOURCE_ID: ID del recurso persistente.
  • DISPLAY_NAME: (Opcional) Nombre visible del recurso persistente.
  • MACHINE_TYPE: el tipo de VM que se va a usar. Para consultar una lista de las VMs compatibles, consulta Tipos de máquinas. Este campo se corresponde con el campo machineSpec.machineType del mensaje de la API ResourcePool.
  • ACCELERATOR_TYPE: (Opcional) 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. Este campo se corresponde con el campo machineSpec.acceleratorType del mensaje de la API ResourcePool.
  • ACCELERATOR_COUNT: (Opcional) Número de GPUs que se van a asociar a cada VM del grupo de recursos. El valor predeterminado es 1. Este campo se corresponde con el campo machineSpec.acceleratorCount del mensaje de la API ResourcePool.
  • REPLICA_COUNT: número de réplicas que se crearán al crear este grupo de recursos. Este campo se corresponde con el campo replicaCount del mensaje de la API ResourcePool. Este campo es obligatorio si no especificas MIN_REPLICA_COUNT y MAX_REPLICA_COUNT.
  • MIN_REPLICA_COUNT: (Opcional) Número mínimo de réplicas al que se puede reducir el escalado automático de este grupo de recursos. Se necesitan MIN_REPLICA_COUNT y MAX_REPLICA_COUNT para habilitar el autoescalado en este grupo de recursos.
  • MAX_REPLICA_COUNT: (Opcional) Número máximo de réplicas al que puede aumentar el autoescalado de este grupo de recursos. Se necesitan MIN_REPLICA_COUNT y MAX_REPLICA_COUNT para habilitar el autoescalado en este grupo de recursos.
  • BOOT_DISK_TYPE: (Opcional) Tipo de disco que se va a usar como disco de arranque de cada VM del pool de recursos. Este campo se corresponde con el campo diskSpec.bootDiskType del mensaje de la API ResourcePool. Entre los valores aceptados se incluyen los siguientes:
    • pd-standard (predeterminado)
    • pd-ssd
  • BOOT_DISK_SIZE_GB: (Opcional) Tamaño del disco de arranque de cada VM del grupo de recursos en GiB. Los valores aceptables van de 100 (valor predeterminado) a 64000. Este campo se corresponde con el campo diskSpec.bootDiskSizeGb del mensaje de la API ResourcePool.

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",
        "accelerator_type": "ACCELERATOR_TYPE",
        "accelerator_count": ACCELERATOR_COUNT
      },
      "replica_count": REPLICA_COUNT,
      "autoscaling_spec": {
        "min_replica_count": MIN_REPLICA_COUNT,
        "max_replica_count": MAX_REPLICA_COUNT
      },
      "disk_spec": {
        "boot_disk_type": "BOOT_DISK_TYPE",
        "boot_disk_size_gb": BOOT_DISK_SIZE_GB
      }
    }
  ]
}

Para enviar tu solicitud, despliega una de estas opciones:

Deberías recibir una respuesta JSON similar a la siguiente:

{
  "name": "projects/123456789012/locations/us-central1/persistentResources/mypersistentresource/operations/1234567890123456789",
  "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"
    }
  }
}

Agotamiento de recursos

Puede que no haya stock de recursos escasos, como las GPUs A100, lo que puede provocar un error persistente en la creación de recursos cuando no haya ninguno disponible en la región que hayas especificado. En este caso, puedes intentar reducir el número de réplicas, cambiar a otro tipo de acelerador, volver a intentarlo en horas de menor demanda o probar con otra región.

Siguientes pasos