Partilhar via


Usar VMs spot com cargas de trabalho em lote

O Azure Batch oferece máquinas virtuais (VMs) spot para reduzir o custo das cargas de trabalho em lote. As VMs spot possibilitam novos tipos de cargas de trabalho em lote, permitindo que uma grande quantidade de poder de computação seja usada por um baixo custo.

As VMs spot aproveitam a capacidade excedente no Azure. Quando você especifica VMs spot em seus pools, o Lote do Azure pode usar esse excedente, quando disponível.

A contrapartida para o uso de VMs spot é que essas VMs podem nem sempre estar disponíveis ou podem ser antecipadas a qualquer momento, dependendo da capacidade disponível. Por esse motivo, as VMs spot são mais adequadas para cargas de trabalho de processamento em lote e assíncrono, onde o tempo de conclusão do trabalho é flexível e o trabalho é distribuído por muitas VMs.

As VMs spot são oferecidas a um preço reduzido em comparação com as VMs dedicadas. Para saber mais sobre preços, consulte Preços em lote.

Diferenças entre VMs spot e de baixa prioridade

O Batch oferece dois tipos de VMs preemptíveis de baixo custo:

  • VMs spot, uma oferta moderna em todo o Azure também disponível como VMs de instância única ou Conjuntos de Escala de Máquina Virtual.
  • VMs de baixa prioridade, uma oferta herdada disponível apenas através do Azure Batch.

O tipo de nó que você obtém depende do modo de alocação de pool da sua conta em lote, que pode ser definido durante a criação da conta. As contas em lote que usam o modo de alocação do pool de assinaturas do usuário sempre obtêm VMs spot. As contas em lote que usam o modo de alocação de pool gerenciado em lote sempre obtêm VMs de baixa prioridade.

Aviso

As VM de baixa prioridade serão desativadas após 30 de setembro de 2025. Migre para VMs spot em lote antes disso.

As VMs spot do Azure e as VMs de baixa prioridade em lote são semelhantes, mas têm algumas diferenças de comportamento.

Spot VMs VMs de baixa prioridade
Contas em lote suportadas Contas em lote de subscrição de utilizador Contas de lote gerenciadas em lote
Configurações de pool de lotes suportadas Configuração da Máquina Virtual Configuração de Máquina Virtual e Configuração de Serviço de Nuvem (preterido)
Regiões disponíveis Todas as regiões que suportam VMs spot Todas as regiões, exceto o Microsoft Azure operado pela 21Vianet
Elegibilidade do cliente Não está disponível para alguns tipos de oferta de subscrição. Veja mais sobre as limitações do Spot. Disponível para todos os clientes Batch
Possíveis razões para o despejo Capacidade Capacidade
Modelo de Preços Descontos variáveis em relação aos preços padrão da VM Descontos fixos em relação aos preços padrão da VM
Modelo de cotas Sujeito às quotas principais da sua subscrição Sujeito às cotas principais na sua conta Batch
SLA de disponibilidade Nenhuma Nenhuma

Suporte em lote para VMs spot

O Azure Batch fornece vários recursos que facilitam o consumo e o benefício de VMs spot:

  • Os pools de lotes podem conter VMs dedicadas e VMs spot. O número de cada tipo de VM pode ser especificado quando um pool é criado ou alterado a qualquer momento para um pool existente, usando a operação de redimensionamento explícito ou usando o dimensionamento automático. O envio de trabalhos e tarefas pode permanecer inalterado, independentemente dos tipos de VM no pool. Você também pode configurar um pool para usar completamente VMs spot para executar trabalhos da forma mais barata possível, mas girar VMs dedicadas se a capacidade cair abaixo de um limite mínimo, para manter os trabalhos em execução.
  • Os pools de lotes buscam automaticamente o número de destino de VMs spot. Se as VMs estiverem antecipadas ou indisponíveis, o Batch tentará substituir a capacidade perdida e retornar ao destino.
  • Quando as tarefas são interrompidas, o Batch deteta e recoloca automaticamente na fila as tarefas para serem executadas novamente.
  • As VMs spot têm uma cota de vCPU separada que difere da cota das VMs dedicadas. A cota para VMs spot é maior do que a cota para VMs dedicadas, porque as VMs spot custam menos. Para obter mais informações, consulte Cotas e limites de serviço em lote.

Considerações e casos de uso

Muitas cargas de trabalho em lote são uma boa opção para VMs spot. Considere o uso de VMs spot quando os trabalhos são divididos em muitas tarefas paralelas ou quando você tem muitos trabalhos que são dimensionados e distribuídos em muitas VMs.

Alguns exemplos de casos de uso de processamento em lote que são adequados para VMs spot são:

  • Desenvolvimento e testes: Em particular, se soluções em larga escala estão sendo desenvolvidas, economias significativas podem ser realizadas. Todos os tipos de teste podem se beneficiar, mas o teste de carga em larga escala e o teste de regressão são ótimos usos.
  • Complementando a capacidade sob demanda: VMs spot podem ser usadas para complementar VMs dedicadas regulares. Quando disponíveis, os trabalhos podem ser dimensionados e, portanto, concluídos mais rapidamente por um custo mais baixo; quando não está disponível, a linha de base das VMs dedicadas permanece disponível.
  • Tempo de execução flexível do trabalho: Se houver flexibilidade no tempo que os trabalhos têm para concluir, então potenciais quedas na capacidade podem ser toleradas. No entanto, com a adição de VMs spot, os trabalhos geralmente são executados mais rapidamente e por um custo mais baixo.

Os pools de lotes podem ser configurados para usar VMs spot de algumas maneiras:

  • Um pool pode usar apenas VMs spot. Nesse caso, o Batch recupera qualquer capacidade antecipada quando disponível. Essa configuração é a maneira mais barata de executar trabalhos.
  • As VMs spot podem ser usadas com uma linha de base fixa de VMs dedicadas. O número fixo de VMs dedicadas garante que sempre haja alguma capacidade para manter um trabalho progredindo.
  • Um pool pode usar uma combinação dinâmica de VMs dedicadas e spot, de modo que as VMs spot mais baratas sejam usadas apenas quando disponíveis, mas as VMs dedicadas com preço total aumentam quando necessário. Essa configuração mantém uma quantidade mínima de capacidade disponível para manter os trabalhos progredindo.

Tenha em mente as seguintes práticas ao planejar o uso de VMs spot:

  • Para maximizar o uso da capacidade excedente no Azure, os trabalhos adequados podem ser dimensionados.
  • Ocasionalmente, as VMs podem não estar disponíveis ou são antecipadas, o que resulta em capacidade reduzida para trabalhos e pode levar à interrupção e reexecuções de tarefas.
  • Tarefas com tempos de execução mais curtos tendem a funcionar melhor com VMs spot. Trabalhos com tarefas mais longas podem ser mais afetados se forem interrompidos. Se tarefas de longa execução implementarem pontos de verificação para salvar o progresso à medida que são executadas, esse impacto poderá ser reduzido.
  • Trabalhos MPI de longa execução que utilizam várias VMs não são adequados para VMs spot, porque uma VM antecipada pode fazer com que todo o trabalho tenha que ser executado novamente.
  • Os nós spot podem ser marcados como inutilizáveis se as regras do NSG (grupo de segurança de rede) estiverem configuradas incorretamente.

Criar e gerenciar pools com VMs spot

Um pool de lotes pode conter VMs dedicadas e spot (também conhecidas como nós de computação). Você pode definir o número de destino de nós de computação para VMs dedicadas e spot. O número de nós de destino especifica o número de VMs que você deseja ter no pool.

O exemplo a seguir cria um pool usando máquinas virtuais do Azure, neste caso VMs Linux, com um destino de 5 VMs dedicadas e 20 VMs spot:

ImageReference imageRef = new ImageReference(
    publisher: "Canonical",
    offer: "UbuntuServer",
    sku: "20.04-LTS",
    version: "latest");

// Create the pool
VirtualMachineConfiguration virtualMachineConfiguration =
    new VirtualMachineConfiguration("batch.node.ubuntu 20.04", imageRef);

pool = batchClient.PoolOperations.CreatePool(
    poolId: "vmpool",
    targetDedicatedComputeNodes: 5,
    targetLowPriorityComputeNodes: 20,
    virtualMachineSize: "Standard_D2_v2",
    virtualMachineConfiguration: virtualMachineConfiguration);

Você pode obter o número atual de nós para VMs dedicadas e spot:

int? numDedicated = pool1.CurrentDedicatedComputeNodes;
int? numLowPri = pool1.CurrentLowPriorityComputeNodes;

Os nós do pool têm uma propriedade para indicar se o nó é uma VM dedicada ou spot:

bool? isNodeDedicated = poolNode.IsDedicated;

As VMs spot podem, ocasionalmente, ser antecipadas. Quando a preempção acontece, as tarefas que estavam sendo executadas nas VMs do nó antecipado são recolocadas na fila e executadas novamente quando a capacidade retorna.

Para pools de Configuração de Máquina Virtual, o Batch também executa os seguintes comportamentos:

  • As VMs preempted têm seu estado atualizado para Preempted.
  • A VM é efetivamente excluída, levando à perda de quaisquer dados armazenados localmente na VM.
  • Uma operação de nós de lista no pool ainda retorna os nós antecipados.
  • O pool tenta continuamente atingir o número de destino de nós spot disponíveis. Quando a capacidade de substituição é encontrada, os nós mantêm suas IDs, mas são reinicializados, passando pelos estados Criando e Iniciando antes de estarem disponíveis para agendamento de tarefas.
  • As contagens de preempção estão disponíveis como uma métrica no portal do Azure.

Dimensionar pools contendo VMs spot

Assim como acontece com pools que consistem exclusivamente em VMs dedicadas, é possível dimensionar um pool contendo VMs spot chamando o método ou usando o Resize dimensionamento automático.

A operação de redimensionamento do pool usa um segundo parâmetro opcional que atualiza o valor de targetLowPriorityNodes:

pool.Resize(targetDedicatedComputeNodes: 0, targetLowPriorityComputeNodes: 25);

A fórmula de dimensionamento automático do pool oferece suporte a VMs spot da seguinte maneira:

  • Você pode obter ou definir o valor da variável $TargetLowPriorityNodesdefinida pelo serviço.
  • Você pode obter o valor da variável $CurrentLowPriorityNodesdefinida pelo serviço.
  • Você pode obter o valor da variável $PreemptedNodeCountdefinida pelo serviço. Essa variável retorna o número de nós no estado preempted e permite que você aumente ou diminua o número de nós dedicados, dependendo do número de nós preempted que não estão disponíveis.

Configurar trabalhos e tarefas

Trabalhos e tarefas podem exigir alguma configuração extra para nós Spot:

  • A JobManagerTask propriedade de um trabalho tem uma AllowLowPriorityNode propriedade. Quando essa propriedade for true, a tarefa do gerenciador de tarefas poderá ser agendada em um nó dedicado ou Spot. Se for false, a tarefa do gerenciador de tarefas será agendada apenas para um nó dedicado.
  • A AZ_BATCH_NODE_IS_DEDICATED variável de ambiente está disponível para um aplicativo de tarefa para que ele possa determinar se ele está sendo executado em um local ou em um nó dedicado.

Exibir métricas para VMs spot

Novas métricas estão disponíveis no portal do Azure para nós Spot. Essas métricas são:

  • Contagem de nós de baixa prioridade
  • Contagem de núcleos de baixa prioridade
  • Contagem de nós antecipada

Para exibir essas métricas no portal do Azure:

  1. No portal do Azure, navegue para a sua conta do Batch.
  2. Selecione Métricas na seção Monitoramento.
  3. Selecione as métricas desejadas na lista Métricas .

Limitações

  • As VMs spot no Batch não suportam a definição de um preço máximo e não suportam remoções baseadas em preço. Só podem ser despejados por razões de capacidade.
  • As VMs spot só estão disponíveis para pools de Configuração de Máquina Virtual e não para pools de Configuração de Serviço de Nuvem, que foram preteridos.
  • As VMs spot não estão disponíveis para algumas nuvens, tamanhos de VM e tipos de oferta de assinatura. Veja mais sobre as limitações de VM spot.
  • Atualmente, discos de SO efêmeros não são suportados com VMs Spot devido à política de remoção gerenciada por serviço do Stop-Deallocate.

Próximos passos

  • Saiba mais sobre o fluxo de trabalho do serviço em lote e os recursos primários, como pools, nós, trabalhos e tarefas.
  • Saiba mais sobre o Ferramentas e APIs do Batch disponíveis para criação de soluções para o Batch.
  • Comece a planejar a mudança de VMs de baixa prioridade para VMs spot. Se você usar VMs de baixa prioridade com pools de Configuração de Serviços de Nuvem (que foram preteridos), planeje migrar para pools de Configuração de Máquina Virtual.