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:
- Claves de encriptación administradas por el cliente (CMEK)
- Programador dinámico de cargas de trabajo
- Ejecuta trabajos de entrenamiento en un recurso persistente
- 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:
- Precios de Compute Engine para los recursos de Compute Engine, incluidos los descuentos por uso comprometido (CUD) aplicables. Consulta los precios de Compute Engine.
- Tarifas de administración del entrenamiento personalizado de Vertex AI, además del uso de tu infraestructura. Consulta Precios de los modelos entrenados de forma personalizada.
Antes de comenzar
- Revisa los requisitos y las y las restricciones para las reservas.
- Revisa los requisitos de cuota y las restricciones para las reservas.
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 enALLOW_ALL
. - Si usas la API de REST, incluye el campo
serviceShareType
configurado enALLOW_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
oNONE
.ANY
significa que las VMs de tucustomJob
pueden consumir automáticamente cualquier reserva con propiedades coincidentes.SPECIFIC_RESERVATION
significa que las VMs de tucustomJob
solo pueden consumir una reserva a la que las VMs se orienten de forma específica por nombre.NONE
significa que las VMs decustomJob
no pueden consumir ninguna reserva. EspecificarNONE
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) opd-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?
- Obtén información sobre las reservas de los recursos zonales de Compute Engine.
- Usa reservas con la predicción de Vertex AI.