Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Azure Batch ofrece máquinas virtuales de acceso puntual (VM) para reducir el costo de las cargas de trabajo de Batch. Las máquinas virtuales de acceso puntual posibilitan nuevos tipos de cargas de trabajo de Batch al permitir el uso de una elevada capacidad de proceso a un costo reducido.
Las máquinas virtuales puntuales aprovechan la capacidad sobrante en Azure. La cantidad de capacidad sobrante disponible varía en función de factores como la familia de máquinas virtuales, el tamaño de la máquina virtual, la región y la hora del día. Al especificar máquinas virtuales Spot en tus grupos, Azure Batch puede usar este excedente cuando esté disponible.
La compensación por el uso de Spot VMs es que estas máquinas virtuales no tienen SLA ni garantías de disponibilidad. Las máquinas virtuales de acceso puntual pueden ser preemptadas en cualquier momento, incluso inmediatamente al crear la máquina virtual. Por este motivo, las máquinas virtuales de acceso puntual resultan más adecuadas para las cargas de trabajo de procesamiento por lotes y asincrónicas en las que el tiempo de finalización del trabajo es flexible y el trabajo se distribuye entre muchas máquinas virtuales.
Si se produce una preempción, se expulsará el nodo de cálculo de Spot y se perderá todo el trabajo que no se haya guardado en un punto de control adecuadamente. El punto de control es opcional y su implementación depende del usuario final de Batch. Un nodo de ejecución distinto volverá a poner automáticamente en cola para su ejecución la tarea de Batch que se interrumpió debido al reemplazo de la VM. La plataforma de Azure puede restaurar una máquina virtual interrumpida más adelante, pero la restauración solo se intenta durante las primeras 48 horas después de la interrupción y no se garantiza que finalmente tenga éxito.
Las máquinas virtuales de acceso puntual se ofrecen a un precio reducido en comparación con las máquinas virtuales dedicadas. Para más información sobre precios, consulte Precios de Batch.
Compatibilidad de Batch con máquinas virtuales de acceso puntual
Azure Batch proporciona varias funcionalidades que facilitan el consumo y las ventajas de las máquinas virtuales de Spot:
- Los grupos de Batch pueden contener máquinas virtuales dedicadas y máquinas virtuales de acceso puntual. El número de cada tipo de máquina virtual se puede especificar cuando se crea un grupo, o puede cambiarse en cualquier momento para un grupo ya existente, mediante la operación explícita de cambio de tamaño o el escalado automático. El envío de trabajos y tareas puede permanecer sin cambios independientemente de los tipos de máquina virtual en el grupo. También puede configurar un grupo para usar completamente máquinas virtuales de acceso puntual para ejecutar trabajos lo más barato posible, pero volver a máquinas virtuales dedicadas si la capacidad desciende por debajo de un umbral mínimo, a fin de mantener los trabajos en funcionamiento.
- Los grupos de Batch buscan automáticamente el número objetivo de máquinas virtuales de acceso puntual. Si las máquinas virtuales se reemplazan o no están disponibles, Batch intenta reemplazar la capacidad perdida y volver al destino.
- Cuando se interrumpen las tareas, Batch lo detecta y vuelve a poner las tareas en cola para que se ejecuten nuevamente.
- Las máquinas virtuales de tipo Spot tienen una cuota de vCPU que es diferente de la de las máquinas virtuales dedicadas. La cuota de máquinas virtuales de acceso puntual es mayor que la de máquinas virtuales dedicadas, porque las primeras cuestan menos. Para más información, consulte Límites y cuotas del servicio Batch.
Consideraciones y casos de uso
Muchas cargas de trabajo de Batch son una buena opción para las VMs de Spot. Considere la posibilidad de usar máquinas virtuales de Spot cuando los trabajos estén divididos en muchas tareas paralelas o cuando haya muchos trabajos escalados horizontalmente y distribuidos en muchas máquinas virtuales.
Algunos ejemplos de casos de uso de procesamiento por lotes bien adaptados a máquinas virtuales de Spot son:
- Desarrollo y pruebas: en concreto, si se están desarrollando soluciones a gran escala se pueden obtener ahorros significativos. Aunque todos los tipos de pruebas pueden beneficiarse, será especialmente ventajoso para pruebas de carga y regresión a gran escala.
- Complementar la capacidad a petición: las máquinas virtuales de acceso puntual se pueden usar para complementar las máquinas virtuales dedicadas normales. Cuando están disponibles, los trabajos pueden escalarse y, por lo tanto, completarse más rápido con un costo menor; cuando no están disponibles, la línea de base de las máquinas virtuales dedicadas sigue estando disponible.
- Tiempo de ejecución flexible de los trabajos: si hay flexibilidad de tiempo en cuanto a la compleción de los trabajos, se pueden tolerar posibles caídas en la capacidad. Sin embargo, con la adición de máquinas virtuales de acceso puntual, los trabajos suelen ejecutarse más rápido y por un coste menor.
Los grupos de Batch se pueden configurar para usar instancias de Spot de varias maneras:
- Un grupo solo puede usar máquinas virtuales de acceso puntual. En este caso, Batch recupera cualquier capacidad reemplazada cuando esté disponible. Esta configuración es la manera más barata de ejecutar trabajos.
- Las máquinas virtuales de acceso puntual se pueden usar con una línea de base fija de máquinas virtuales dedicadas. El número fijo de máquinas virtuales dedicadas garantiza que siempre haya algo de capacidad para mantener el progreso de un trabajo.
- Un grupo puede utilizar una combinación dinámica de máquinas virtuales dedicadas y de Spot, de modo que las máquinas virtuales Spot, que son más baratas, se usen exclusivamente cuando estén disponibles, y las máquinas virtuales dedicadas de precio completo aumenten su uso cuando sea necesario. Esta configuración mantiene una cantidad mínima de capacidad disponible para mantener el progreso de los trabajos.
Tenga en cuenta las siguientes prácticas al planear el uso de máquinas virtuales spot:
- Para maximizar el uso de capacidad sobrante en Azure, las tareas adecuadas pueden ampliarse horizontalmente.
- Puede que, en ocasiones, las máquinas virtuales no estén disponibles o se reemplacen; como resultado, la capacidad para los trabajos se ve mermada y puede generar interrupciones de las tareas o la necesidad de ejecutarlas una y otra vez.
- Las tareas con tiempos de ejecución más cortos tienden a funcionar mejor con máquinas virtuales de acceso puntual. Los trabajos con tareas más largas pueden resultar más afectados si se interrumpen. Si las tareas de ejecución prolongada implementan puntos de control para guardar el progreso mientras se ejecutan, este impacto puede reducirse.
- Los trabajos de MPI de larga ejecución que usan varias máquinas virtuales no son adecuados para máquinas virtuales de acceso puntual, porque una máquina virtual reemplazada probablemente ocasione que todo el trabajo tenga que ejecutarse de nuevo.
- Los nodos de acceso puntual pueden marcarse como inutilizables si las reglas del grupo de seguridad de red (NSG) están configuradas incorrectamente.
Crear y gestionar grupos con máquinas virtuales Spot
Un grupo de Batch puede contener tanto máquinas virtuales dedicadas como máquinas virtuales Spot (también conocidas como nodos de cómputo). Puede establecer el número objetivo de nodos de proceso tanto para las máquinas virtuales dedicadas como para las de acceso puntual. El número de nodos objetivo especifica el número de máquinas virtuales que quiere tener en el grupo.
Es posible que ocasionalmente se adelanten las máquinas virtuales de acceso puntual. Cuando esto suceda, las tareas que se estuvieran ejecutando en las máquinas virtuales del nodo reemplazado se pondrían de nuevo en cola y se volverían a ejecutar cuando se recupera la capacidad. Batch también realiza los siguientes comportamientos:
- Las máquinas virtuales reemplazadas tienen su estado actualizado a Reemplazada.
- La máquina virtual se elimina de manera eficaz, lo que hace que se pierdan los datos almacenados localmente en ella.
- Una operación de enumeración de nodos del grupo sigue devolviendo los nodos reemplazados.
- El grupo intenta continuamente alcanzar el número objetivo de nodos de acceso puntual disponibles. Cuando se encuentra la capacidad de reemplazo, los nodos mantienen sus identificaciones, pero se reinicializan, pasando por los estadosCreando e Iniciando antes de que estén disponibles para la programación de tareas.
- Los recuentos de preempción están disponibles como una métrica en el portal de Azure.
SDK de Azure Batch
En el ejemplo siguiente se crea un grupo mediante máquinas virtuales de Azure, en este caso máquinas virtuales Linux, con un objetivo de 5 máquinas virtuales dedicadas y 20 máquinas virtuales Spot.
ImageReference imageRef = new ImageReference(
publisher: "Canonical",
offer: "ubuntu-24_04-lts",
sku: "server",
version: "latest");
// Create the pool
VirtualMachineConfiguration virtualMachineConfiguration =
new VirtualMachineConfiguration("batch.node.ubuntu 24.04", imageRef);
pool = batchClient.PoolOperations.CreatePool(
poolId: "vmpool",
targetDedicatedComputeNodes: 5,
targetLowPriorityComputeNodes: 20,
virtualMachineSize: "Standard_D4s_v3",
virtualMachineConfiguration: virtualMachineConfiguration);
Puede obtener el número actual de nodos para las máquinas virtuales dedicadas y las de acceso puntual:
int? numDedicated = pool1.CurrentDedicatedComputeNodes;
int? numLowPri = pool1.CurrentLowPriorityComputeNodes;
Los nodos de grupo tienen una propiedad que indica si el nodo es una máquina virtual dedicada o de acceso puntual:
bool? isNodeDedicated = poolNode.IsDedicated;
Al igual que sucede con grupos que se componen únicamente de máquinas virtuales dedicadas, es posible escalar un grupo que contenga máquinas virtuales de acceso puntual mediante la llamada al método Resize o por medio de escalado automático.
La operación de cambio de tamaño de grupo tiene un segundo parámetro opcional que actualiza el valor de targetLowPriorityNodes:
pool.Resize(targetDedicatedComputeNodes: 0, targetLowPriorityComputeNodes: 25);
CLI de Azure
Cree un nuevo grupo con instancias de Spot:
az batch pool create \
--id "vmpool" \
--vm-size "Standard_D4s_v3" \
--target-dedicated-nodes 5 \
--target-low-priority-nodes 20 \
--enable-inter-node-communication false \
--image "Canonical:ubuntu-24_04-lts:server" \
--node-agent-sku-id "batch.node.ubuntu 24.04" \
--account-name <your-batch-account-name> \
--account-endpoint "https://<your-batch-account-name>.<region>.batch.azure.com"
Escale el grupo existente para usar instancias de Spot:
az batch pool resize \
--pool-id <existing-pool-id> \
--target-dedicated-nodes 5 \
--target-low-priority-nodes 20 \
--account-name <your-batch-account-name> \
--account-endpoint "https://<your-batch-account-name>.<region>.batch.azure.com"
Comprobación del estado del grupo y la asignación de nodos
az batch pool show \
--account-name <your-batch-account-name> \
--account-endpoint "https://<your-batch-account-name>.<region>.batch.azure.com" \
--pool-id <your-pool-id> \
--query "{State:state, CurrentSpotNodes:currentLowPriorityNodes, TargetSpotNodes:scaleSettings.targetLowPriorityNodes, ResizeErrors:resizeErrors}"
Azure PowerShell
Cree un grupo con instancias de Spot:
New-AzBatchPool `
-Id "vmpool" `
-VirtualMachineSize "Standard_D4s_v3" `
-TargetDedicatedComputeNodes 5 `
-TargetLowPriorityComputeNodes 20 `
-VirtualMachineImageId "/subscriptions/{subscription}/resourceGroups/{rg}/providers/Microsoft.Compute/images/{image}" `
-BatchContext $context
Validación con PowerShell:
$pool = Get-AzBatchPool -Id "vmpool" -BatchContext $context
$pool | Select-Object Id, VmSize, @{Name="SpotNodes";Expression={$_.TargetLowPriorityComputeNodes}}, State
portal de Azure
En el portal de Azure, seleccione la cuenta de Batch y vea un grupo existente o cree un nuevo grupo.
En Escalar, seleccione Nodos dedicados de destino o Nodo de destino de prioridad baja o de acceso puntual.
Para un grupo existente, seleccione el grupo y, a continuación, seleccione Escalar para actualizar el número de nodos de spot necesarios.
Haga clic en Guardar.
Autoescalar con Máquinas Virtuales Spot
Además de establecer la cantidad de máquinas virtuales objetivo directamente, si lo desea, puede definir una fórmula de escalado automático para su grupo. La fórmula de escalado automático de grupo admite máquinas virtuales de acceso puntual del siguiente modo:
- Puede obtener o establecer el valor de la variable definida por el servicio
$TargetLowPriorityNodes. - Puede obtener el valor de la variable definida por el servicio
$CurrentLowPriorityNodes. - Puede obtener el valor de la variable definida por el servicio
$PreemptedNodeCount. Esta variable devuelve el número de nodos en estado reemplazado y le permite escalar o reducir verticalmente el número de nodos dedicados, en función del número de nodos reemplazados que no estén disponibles.
Para obtener más información, consulte la Guía de escalabilidad automática por lotes.
Configuración de trabajos y tareas
Los trabajos y tareas pueden requerir una configuración adicional para los nodos de acceso puntual:
- La propiedad
JobManagerTaskde un trabajo tiene una propiedadAllowLowPriorityNode. Cuando esta propiedad es verdadera, la tarea del administrador de trabajos se puede programar en un nodo dedicado o en un nodo Spot. Si es false, la tarea del administrador de trabajos se programa solo en un nodo dedicado. - Hay una
AZ_BATCH_NODE_IS_DEDICATEDvariable de entorno disponible para una aplicación de tarea para determinar si está ejecutándose en un nodo Spot o en un nodo dedicado.
Visualización de métricas para máquinas virtuales de acceso puntual
Hay nuevas métricas disponibles en el portal Azure para los nodos de Spot. Estas son las métricas:
- Recuento de nodos de baja prioridad
- Recuento de núcleos de baja prioridad
- Recuento de nodos preemptados
Para ver estas métricas en el portal de Azure:
- Vaya a la cuenta de Batch en el portal de Azure.
- Seleccione Métricas en la sección Supervisión.
- Seleccione las métricas que quiere en la lista Métricas.
Limitaciones
- Las máquinas virtuales de acceso puntual en Batch no admiten la configuración de un precio máximo y no admiten expulsiones basadas en precios. Solo se pueden expulsar por motivos de capacidad.
- Las máquinas virtuales de acceso puntual no están disponibles para algunas nubes, tamaños de máquina virtual y tipos de oferta de suscripción. Obtenga más información sobre las limitaciones de máquinas virtuales de acceso puntual.
- Actualmente, los discos de sistema operativo efímero no son compatibles con las máquinas virtuales Spot debido a la política de expulsión gestionada por el servicio de Stop-Deallocate.
Pasos siguientes
- Conozca el flujo de trabajo y los recursos principales del servicio Batch, como grupos, nodos, trabajos y tareas.
- Obtenga información acerca de las API y herramientas de Batch disponibles para la creación de soluciones de Batch.
- Para obtener más información sobre las máquinas virtuales de Spot en Azure, incluido cómo ver los precios históricos y las tasas de expulsión, consulte Spot Virtual Machines.