Descripción general
Puedes reducir el costo de ejecutar tus trabajos de predicción con las VMs Spot. Las VMs Spot son instancias de máquina virtual (VM) que son un excedente de capacidad de Compute Engine. Las VMs Spot tienen descuentos significativos, pero Compute Engine podría detener o borrar (interrumpir) las VMs Spot de forma preventiva para recuperar la capacidad en cualquier momento.
Para obtener más información, consulta VMs Spot.
Limitaciones y requisitos
Ten en cuenta las siguientes limitaciones y requisitos cuando uses VMs Spot con Vertex AI:
- Todas las limitaciones de las VMs Spot se aplican cuando se usan VMs Spot con Vertex AI.
- El uso de VMs Spot con Vertex AI solo se admite para el entrenamiento y la predicción personalizados.
- No se admite el uso de VMs Spot con Pods de TPU.
- No se admite el envío de trabajos a través de la consola de Google Cloud.
Facturación
Si tus cargas de trabajo son tolerantes a errores y pueden admitir una posible interrupción de la VM, las VMs Spot pueden reducir los costos de procesamiento de manera significativa. Si algunas de tus VMs se detienen durante el procesamiento, el trabajo se ralentiza, pero no se detiene por completo. Las VMs Spot completan tus tareas de procesamiento por lotes sin incorporar carga adicional en tus VMs existentes y sin que debas pagar el precio total por las VMs estándar adicionales. Consulta Manejo de interrupciones.
Cuando usas VMs Spot, se te factura según la duración del trabajo y el tipo de máquina. No pagarás por el tiempo que el trabajo esté en una fila o se haya reemplazado.
Manejo de interrupciones
Compute Engine puede reclamar las VMs Spot en cualquier momento. Por lo tanto, tu trabajo de predicción debe ser tolerante a errores para obtener el mayor beneficio de las VMs Spot. Cuando se interrumpen las VMs Spot, el trabajo de predicción falla con un error STOCKOUT
y Compute Engine intenta reiniciar el trabajo hasta seis veces. Para obtener información sobre cómo aprovechar al máximo tus VMs Spot, consulta las prácticas recomendadas para las VMs Spot.
Los siguientes son algunos de los métodos que puedes usar para que tu trabajo de predicción sea tolerante a fallas:
- Crea puntos de control para guardar el progreso. Si almacenas el progreso de tu modelo de forma periódica, puedes asegurarte de que un trabajo de predicción finalizado pueda reanudarse desde el último punto de control almacenado, en lugar de comenzar de nuevo desde el principio.
- Usa una secuencia de comandos de apagado. Cuando Compute Engine interrumpe una VM Spot, puedes usar una secuencia de comandos de apagado que intente realizar acciones de limpieza antes de que se interrumpa la VM. Para obtener más información, consulta Controla la interrupción con una secuencia de comandos de apagado.
Obtén predicciones con VMs Spot
Para usar VMs Spot cuando implementas un modelo para obtener predicciones, puedes usar la API de REST o el SDK de Vertex AI para Python.
REST
Antes de usar cualquiera de los datos de solicitud a continuación, haz los siguientes reemplazos:
- LOCATION_ID: la región en la que usas Vertex AI.
- PROJECT_ID: El ID del proyecto.
- ENDPOINT_ID: Es el ID del extremo.
- MODEL_ID: El ID del modelo que se implementará.
-
DEPLOYED_MODEL_NAME: Un nombre para
DeployedModel
También puedes usar el nombre comercial deModel
paraDeployedModel
. -
MACHINE_TYPE: Opcional Los recursos de máquina que se usan para cada nodo de esta implementación. Su configuración predeterminada es
n1-standard-2
. Obtén más información sobre los tipos de máquinas. - ACCELERATOR_TYPE: Opcional Es el tipo de acelerador que se adjuntará a la máquina. Obtén más información.
- ACCELERATOR_COUNT: Opcional Es la cantidad de aceleradores que usa cada réplica.
- MIN_REPLICA_COUNT: La cantidad mínima de nodos para esta implementación. El recuento de nodos se puede aumentar o disminuir según lo requiera la carga de predicción, hasta la cantidad máxima de nodos y nunca menos que esta cantidad. Este valor debe ser mayor o igual que 1%
- MAX_REPLICA_COUNT: La cantidad máxima de nodos para esta implementación. El recuento de nodos se puede aumentar o disminuir, según lo requiera la carga de predicción, hasta esta cantidad de nodos y nunca menos que la cantidad mínima de nodos.
- TRAFFIC_SPLIT_THIS_MODEL: El porcentaje del tráfico de predicción a este extremo para enrutar al modelo que se implementa con esta operación. La configuración predeterminada es 100. Todos los porcentajes de tráfico deben sumar hasta 100. Obtén más información sobre las divisiones del tráfico.
- DEPLOYED_MODEL_ID_N: Opcional Si se implementan otros modelos en este extremo, debes actualizar sus porcentajes de división del tráfico para que todos los porcentajes sumen hasta 100.
- TRAFFIC_SPLIT_MODEL_N: El valor de porcentaje de división del tráfico para la clave del ID del modelo implementado
- PROJECT_NUMBER: El número de proyecto de tu proyecto generado de forma automática.
HTTP method and URL:
POST https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints/ENDPOINT_ID:deployModel
Cuerpo JSON de la solicitud:
{ "acceleratorCount": 1}, "spot": true, "minReplicaCount": 1, "maxReplicaCount": 1}}, "trafficSplit": {"0": 100}}' \ "https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints/ENDPOINT_ID:deployModel" "deployedModel": { "model": "projects/PROJECT/locations/us-central1/models/MODEL_ID", "displayName": "DEPLOYED_MODEL_NAME", "enableContainerLogging": true, "dedicatedResources": { "machineSpec": { "machineType": "MACHINE_TYPE", "acceleratorType": "ACCELERATOR_TYPE", "acceleratorCount": ACCELERATOR_COUNT }, "spot": true, "minReplicaCount": MIN_REPLICA_COUNT, "maxReplicaCount": MAX_REPLICA_COUNT }, }, "trafficSplit": { "0": TRAFFIC_SPLIT_THIS_MODEL, "DEPLOYED_MODEL_ID_1": TRAFFIC_SPLIT_MODEL_1, "DEPLOYED_MODEL_ID_2": TRAFFIC_SPLIT_MODEL_2 }, }
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_ID/locations/LOCATION/endpoints/ENDPOINT_ID/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.aiplatform.v1beta1.DeployModelOperationMetadata", "genericMetadata": { "createTime": "2020-10-19T17:53:16.502088Z", "updateTime": "2020-10-19T17:53:16.502088Z" } } }
Python
Si deseas obtener información para instalar o actualizar el SDK de Vertex AI para Python, consulta Instala el SDK de Vertex AI para Python. Si deseas obtener más información, consulta la documentación de referencia de la API del SDK de Vertex AI para Python.
endpoint5.deploy( model = model, deployed_model_display_name=DEPLOYED_NAME, traffic_split=TRAFFIC_SPLIT, machine_type="MACHINE_TYPE", accelerator_type="ACCELERATOR_TYPE", accelerator_count=ACCELERATOR_COUNT, min_replica_count=MIN_REPLICA_COUNT, max_replica_count=MAX_REPLICA_COUNT, spot=True, sync=True )
¿Qué sigue?
- Más información sobre las VMs Spot.
- Para obtener más información sobre las VMs de Compute Engine en general, lee la documentación de Instancias de máquina virtual.
- Para aprender a crear VMs Spot, consulta Crea y usa VMs Spot.
- Usa VMs Spot con el entrenamiento de Vertex AI.