Usa reservas con el entrenamiento

Para asegurarte de que los recursos de VM estén disponibles cuando tus trabajos de entrenamiento personalizados los necesiten, puedes usar las reservas de Compute Engine. Las reservas proporcionan un nivel de seguridad alto a fin de obtener capacidad para los recursos zonales de Compute Engine. Para obtener más información, consulta Reservas de recursos zonales de Compute Engine.

Descripción general

Tus trabajos de entrenamiento y predicción personalizados de Vertex AI pueden consumir reservas de Compute Engine. Tu reserva debe especificar un tipo de máquina A2 o A3. Si los recursos de esas reservas son aptos para descuentos por compromiso de uso (CUD), cuando tus VMs consuman esas reservas, obtendrás esos recursos a precios con descuento. Consulta CUDs para tus recursos reservados.

Limitaciones y requisitos

Ten en cuenta las siguientes limitaciones y requisitos cuando uses las reservas de Compute Engine con Vertex AI:

  • Vertex AI solo puede consumir reservas con las siguientes series de máquinas:

    • A2
    • A3
  • El uso de reservas de Compute Engine con Vertex AI solo se admite para el entrenamiento y la predicción personalizados.
  • Asegúrate de que haya suficiente cuota disponible para tus trabajos de Vertex AI. Consulta Requisitos de cuota adicionales para las reservas compartidas.
  • Para admitir actualizaciones periódicas de tus implementaciones de Vertex AI, te recomendamos que aumentes el recuento de VMs en al menos 1 VM adicional para cada implementación simultánea.
  • Asegúrate de que las restricciones de la política de tu organización permitan reservas compartidas. Consulta Permite y restringe la creación y la modificación de reservas compartidas para los proyectos.
  • Para usar la reserva, las propiedades de la instancia de VM de la reserva deben coincidir exactamente con tu carga de trabajo de Vertex AI. Por ejemplo, si una carga de trabajo de Vertex AI tiene un tipo de máquina a2-megagpu-16g, el tipo de máquina de la reserva debe coincidir. Consulta Requisitos.
  • Los siguientes servicios y funciones no son compatibles cuando se usan reservas de Compute Engine con el entrenamiento de Vertex AI:

  • Tu trabajo de entrenamiento personalizado debe usar una cuenta de servicio personalizada. Consulta Cómo usar una cuenta de servicio personalizada.

Facturación

Cuando usas las reservas de Compute Engine, se te factura lo siguiente:

Antes de comenzar

Permite que se consuma una reserva

Antes de consumir una reserva de VMs A2 o A3, debes configurar su política de uso compartido para permitir que Vertex AI consuma la reserva. Para ello, usa uno de los siguientes métodos:

Cómo permitir el consumo mientras se crea una reserva

Cuando creas una reserva de un solo proyecto o compartida de VMs A2 o A3, puedes especificar que Vertex AI consuma la reserva de la siguiente manera:

  • Si usas la consola de Google Cloud, en la sección Servicios de Google Cloud, selecciona Compartir reserva
  • Si usas Google Cloud CLI, incluye la marca --reservation-sharing-policy establecida en ALLOW_ALL.
  • Si usas la API de REST, incluye el campo serviceShareType configurado en ALLOW_ALL.

Cómo permitir el consumo en una reserva existente

Para permitir que Vertex AI consuma una reserva existente de VMs A2 o A3, consulta Cómo modificar la política de uso compartido de una reserva.

Crea un trabajo de entrenamiento personalizado con una reserva

Puedes crear un trabajo de entrenamiento personalizado que consuma una reserva de Compute Engine con la API de REST.

REST

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

  • LOCATION: es la región en la que se ejecutará el contenedor o el paquete de Python.
  • PROJECT_ID: El ID del proyecto.
  • JOB_NAME: Obligatorio. Es un nombre visible para CustomJob.
  • Define el trabajo de entrenamiento personalizado:
    • MACHINE_TYPE: El tipo de máquina. Consulta los tipos de máquinas disponibles para el entrenamiento.
    • RESERVATION_AFFINITY_TYPE: debe ser ANY, SPECIFIC_RESERVATION o NONE.

      • ANY significa que las VMs de tu customJob pueden consumir automáticamente cualquier reserva con propiedades coincidentes.
      • SPECIFIC_RESERVATION significa que las VMs de tu customJob solo pueden consumir una reserva a la que las VMs se orienten de forma específica por nombre.
      • NONE significa que las VMs de customJob no pueden consumir ninguna reserva. Especificar NONE tiene el mismo efecto que omitir una especificación de afinidad de reserva.
    • RESERVATION_NAME: el nombre de tu reserva
    • DISK_TYPE: Opcional es el tipo de disco de arranque que se usará para el trabajo, ya sea pd-standard (predeterminado) o pd-ssd. Obtén más información sobre los tipos de discos.
    • DISK_SIZE: Opcional es el tamaño en GB del disco de arranque que se usará para el trabajo. El valor predeterminado es 100.
    • 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.
    • Si tu aplicación de entrenamiento se ejecuta en un contenedor personalizado, especifica lo siguiente:
      • CUSTOM_CONTAINER_IMAGE_URI: es el URI de una imagen de contenedor en Artifact Registry o Docker Hub que se ejecuta en cada réplica de trabajador.
      • CUSTOM_CONTAINER_COMMAND: Opcional El comando que se invocará cuando se inicie el contenedor. Este comando anula el punto de entrada predeterminado del contenedor.
      • CUSTOM_CONTAINER_ARGS: Opcional son los argumentos que se transmitirán cuando se inicia el contenedor (opcional).
    • Si tu aplicación de entrenamiento es un paquete de Python que se ejecuta en un contenedor compilado previamente, especifica lo siguiente:
      • EXECUTOR_IMAGE_URI: Es el URI de la imagen de contenedor que ejecuta el código proporcionado. Consulta los contenedores compilados previamente disponibles para el entrenamiento.
      • PYTHON_PACKAGE_URIS: es una lista separada por comas de URI de Cloud Storage que especifican los archivos de paquete de Python que son el programa de entrenamiento y sus paquetes dependientes. La cantidad máxima de URI de paquete es 100.
      • PYTHON_MODULE: es el nombre del módulo de Python que se ejecutará después de instalar los paquetes.
      • PYTHON_PACKAGE_ARGS: Opcional son los argumentos de la línea de comandos que se pasarán al módulo de Python.
    • TIMEOUT: Opcional es el tiempo máximo de ejecución para el trabajo.
  • Especifica LABEL_NAME y LABEL_VALUE para las etiquetas que desees aplicar a este trabajo personalizado.

Método HTTP y URL:

POST https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/customJobs

Cuerpo JSON de la solicitud:

{
  "displayName": "JOB_NAME",
  "jobSpec": {
    "workerPoolSpecs": [
      {
        "machineSpec": {
          "machineType": "MACHINE_TYPE",
          "reservationAffinity": {
            "reservationAffinityType": "RESERVATION_AFFINITY_TYPE",
            "key": "compute.googleapis.com/reservation-name",
            "values": [
              "projects/PROJECT_ID/reservations/RESERVATION_NAME"
            ]
          }
        },
        "replicaCount": REPLICA_COUNT,
        "diskSpec": {
          "bootDiskType": DISK_TYPE,
          "bootDiskSizeGb": DISK_SIZE
        },

        // Union field task can be only one of the following:
        "containerSpec": {
          "imageUri": CUSTOM_CONTAINER_IMAGE_URI,
          "command": [
            CUSTOM_CONTAINER_COMMAND
          ],
          "args": [
            CUSTOM_CONTAINER_ARGS
          ]
        },
        "pythonPackageSpec": {
          "executorImageUri": EXECUTOR_IMAGE_URI,
          "packageUris": [
            PYTHON_PACKAGE_URIS
          ],
          "pythonModule": PYTHON_MODULE,
          "args": [
            PYTHON_PACKAGE_ARGS
          ]
        }
        // End of list of possible types for union field task.
      }
      // Specify one workerPoolSpec for single replica training, or multiple workerPoolSpecs
      // for distributed training.
    ],
    "scheduling": {
      "timeout": TIMEOUT
    }
  },
  "labels": {
    LABEL_NAME_1": LABEL_VALUE_1,
    LABEL_NAME_2": LABEL_VALUE_2
  }
}

Para enviar tu solicitud, elige una de estas opciones:

curl

Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente comando:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/customJobs"

PowerShell

Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente comando:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/customJobs" | Select-Object -Expand Content

La respuesta contiene información sobre las especificaciones y los TRAININGPIPELINE_ID.

¿Qué sigue?