Crea un recurso persistente

Cuando creas un recurso persistente, el servicio de entrenamiento primero encuentra recursos del grupo de recursos de Compute Engine según las especificaciones que proporcionaste y, luego, aprovisiona un clúster de larga duración por ti. En esta página, se muestra cómo crear un recurso persistente para ejecutar tus trabajos de entrenamiento personalizados mediante la consola de Google Cloud, Google Cloud CLI, el SDK de Vertex AI para Python y la API de REST.

Roles obligatorios

Para obtener el permiso 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.

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

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

Console

Para crear un recurso persistente mediante la consola de Google Cloud, haz lo siguiente:

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

    Ir a Recursos persistentes

  2. Haga clic en Crear clúster.

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

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

  5. Configura los recursos de procesamiento para el 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 deseas usar y configura el grupo de trabajadores de la siguiente manera:

      De uso general

      Las VMs de uso general ofrecen la mejor relación entre precio y rendimiento en una variedad de 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: Ingresa el tamaño del disco que deseas.
      • Recuento mínimo de réplicas: Ingresa la cantidad mínima de réplicas que se deben tener en el grupo de trabajadores.
      • Recuento máximo de réplicas: Ingresa la cantidad máxima de réplicas permitidas en el grupo de trabajadores (opcional). Si se especifica, el grupo de trabajadores escala automáticamente la cantidad de réplicas hasta el recuento máximo de réplicas configurado según sea necesario.

      Optimizado para procesamiento

      Las VMs optimizadas para procesamiento ofrecen el mayor rendimiento por núcleo y están optimizadas para cargas de trabajo de procesamiento intensivo.

      • 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: Ingresa el tamaño del disco que deseas.
      • Recuento mínimo de réplicas: Ingresa la cantidad mínima de réplicas que se deben tener en el grupo de trabajadores.
      • Recuento máximo de réplicas: Ingresa la cantidad máxima de réplicas permitidas en el grupo de trabajadores (opcional). Si se especifica, el grupo de trabajadores escala automáticamente la cantidad de réplicas hasta el recuento máximo de réplicas configurado según sea necesario.

      Con optimización de memoria

      Con VMs con optimización de memoria: Ideal para cargas de trabajo que requieren mucha memoria, ya que ofrecen más memoria por núcleo que otras familias de máquinas (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: Ingresa el tamaño del disco que deseas.
      • Recuento mínimo de réplicas: Ingresa la cantidad mínima de réplicas que se deben tener en el grupo de trabajadores.
      • Recuento máximo de réplicas: Ingresa la cantidad máxima de réplicas permitidas en el grupo de trabajadores (opcional). Si se especifica, el grupo de trabajadores escala automáticamente la cantidad de réplicas hasta el recuento máximo de réplicas configurado según sea necesario.

      GPU

      Estas VMs optimizadas para aceleradores son ideales para cargas de trabajo de procesamiento paralelizadas de forma masiva de la arquitectura unificada de dispositivos de procesamiento (CUDA), como el aprendizaje automático (AA) y la computación de alto rendimiento (HPC). Esta familia es la mejor opción para las cargas de trabajo que requieren GPUs.

      • Tipo de GPU: selecciona el tipo de GPU que deseas usar.
      • Cantidad de GPU: Ingresa la cantidad de GPU que deseas 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: Ingresa el tamaño del disco que deseas.
      • Recuento mínimo de réplicas: Ingresa la cantidad mínima de réplicas que se deben tener en el grupo de trabajadores.
      • Recuento máximo de réplicas: Ingresa la cantidad máxima de réplicas permitidas en el grupo de trabajadores (opcional). Si se especifica, el grupo de trabajadores escala automáticamente la cantidad de réplicas hasta el recuento máximo de réplicas configurado según sea necesario.
    3. Haz clic en Listo.

    4. Para agregar grupos de trabajadores adicionales, haz clic en Agregar grupo de trabajadores (opcional).

  6. Haz clic en Crear.

gcloud

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.

Cada grupo de recursos puede tener habilitado o inhabilitado el ajuste de escala automático. Para habilitar el ajuste de escala automático, 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 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) el nombre visible del recurso persistente.
  • MACHINE_TYPE: el tipo de 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.
  • ACCELERATOR_TYPE: (Opcional) El tipo de GPU que se conectará a cada VM en el grupo de recursos. Para obtener una lista de las GPU compatibles, consulta GPU. Este campo corresponde al campo machineSpec.acceleratorType en el mensaje de la API de ResourcePool.
  • ACCELERATOR_COUNT: Es la cantidad de GPU que se deben adjuntar a cada VM en el grupo de recursos (opcional). El valor predeterminado es 1. Este campo corresponde al campo machineSpec.acceleratorCount en el mensaje de la API de ResourcePool.
  • REPLICA_COUNT: la cantidad de réplicas que se crearán cuando se cree este grupo de recursos. Este campo corresponde al campo replicaCount en el mensaje de la API de ResourcePool. Este campo es obligatorio si no especificas MIN_REPLICA_COUNT y MAX_REPLICA_COUNT.
  • MIN_REPLICA_COUNT: (opcional) la cantidad mínima de réplicas a la que el ajuste de escala automático puede reducir la escala para este grupo de recursos. MIN_REPLICA_COUNT y MAX_REPLICA_COUNT son necesarios para habilitar el ajuste de escala automático en este grupo de recursos.
  • MAX_REPLICA_COUNT: (opcional) la cantidad máxima de réplicas a la que el ajuste de escala automático puede escalar verticalmente para este grupo de recursos. MIN_REPLICA_COUNT y MAX_REPLICA_COUNT son necesarios para habilitar el ajuste de escala automático en este grupo de recursos.
  • BOOT_DISK_TYPE: Es el tipo de disco que se usará para el disco de arranque de cada VM en el grupo de recursos (opcional). Este campo corresponde al campo diskSpec.bootDiskType en el mensaje de la API de ResourcePool. Los valores aceptables son los siguientes:
    • pd-standard (predeterminada)
    • pd-ssd
  • BOOT_DISK_SIZE_GB: El tamaño del disco en GiB para el disco de arranque de cada VM en el grupo de recursos (opcional). Los valores aceptables son 100 (predeterminado) como 64000. Este campo corresponde al campo diskSpec.bootDiskSizeGb en el mensaje de la API de ResourcePool.
  • CONFIG: ruta de acceso al archivo de configuración YAML del recurso persistente. Este archivo debe contener una lista 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,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 que figura a continuación:

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

Comando gcloud de ejemplo

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_K80,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 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

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.

# Create the persistent resource. This method returns the created resource.
# Setting `sync` to `FALSE` makes the method is non-blocking and the resource
# object returned syncs when the method completes.
my_example_resource = persistent_resource.PersistentResource.create(
    persistent_resource_id=EXAMPLE_PERSISTENT_RESOURCE_ID,
    display_name=EXAMPLE_PERSISTENT_RESOURCE_NAME,
    resource_pools=[
        EXAMPLE_RESOURCE_POOL # EXAMPLE_AUTOSCALED_RESOURCE_POOL
    ],
    labels=EXAMPLE_LABELS,
    sync=SYNC,
)

if not SYNC:
    my_example_resource.wait()

REST

Un recurso persistente puede tener uno o más grupos de recursos (machine_spec), y cada grupo de recursos puede tener habilitado o inhabilitado 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) el nombre visible del recurso persistente.
  • MACHINE_TYPE: el tipo de 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.
  • ACCELERATOR_TYPE: (Opcional) El tipo de GPU que se conectará a cada VM en el grupo de recursos. Para obtener una lista de las GPU compatibles, consulta GPU. Este campo corresponde al campo machineSpec.acceleratorType en el mensaje de la API de ResourcePool.
  • ACCELERATOR_COUNT: Es la cantidad de GPU que se deben adjuntar a cada VM en el grupo de recursos (opcional). El valor predeterminado es 1. Este campo corresponde al campo machineSpec.acceleratorCount en el mensaje de la API de ResourcePool.
  • REPLICA_COUNT: la cantidad de réplicas que se crearán cuando se cree este grupo de recursos. Este campo corresponde al campo replicaCount en el mensaje de la API de ResourcePool. Este campo es obligatorio si no especificas MIN_REPLICA_COUNT y MAX_REPLICA_COUNT.
  • MIN_REPLICA_COUNT: (opcional) la cantidad mínima de réplicas a la que el ajuste de escala automático puede reducir la escala para este grupo de recursos. MIN_REPLICA_COUNT y MAX_REPLICA_COUNT son necesarios para habilitar el ajuste de escala automático en este grupo de recursos.
  • MAX_REPLICA_COUNT: (opcional) la cantidad máxima de réplicas a la que el ajuste de escala automático puede escalar verticalmente para este grupo de recursos. MIN_REPLICA_COUNT y MAX_REPLICA_COUNT son necesarios para habilitar el ajuste de escala automático en este grupo de recursos.
  • BOOT_DISK_TYPE: Es el tipo de disco que se usará para el disco de arranque de cada VM en el grupo de recursos (opcional). Este campo corresponde al campo diskSpec.bootDiskType en el mensaje de la API de ResourcePool. Los valores aceptables son los siguientes:
    • pd-standard (predeterminada)
    • pd-ssd
  • BOOT_DISK_SIZE_GB: El tamaño del disco en GiB para el disco de arranque de cada VM en el grupo de recursos (opcional). Los valores aceptables son 100 (predeterminado) como 64000. Este campo corresponde al campo diskSpec.bootDiskSizeGb en el mensaje de la API de 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, expande una de estas opciones:

Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

{
  "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

Es posible que haya recursos insuficientes, como las GPU A100, lo que puede provocar una falla de creación de recursos persistentes cuando no hay recursos disponibles en la región que especificaste. En este caso, puedes intentar reducir la cantidad de réplicas, cambiar a un tipo de acelerador diferente, volver a intentarlo durante las horas de menor demanda o probar con otra región.

¿Qué sigue?