Use VMs Spot com o Lote do Azure de cargas de trabalho

O Lote do Azure oferece VMs (máquinas virtuais) spot para reduzir o custo das cargas de trabalho no Lote. As VMs spot possibilitam novos tipos de cargas de trabalho do Lote, permitindo que uma grande capacidade de computação seja usada por um preço baixo.

VMs spot tiram proveito da capacidade excedente do Azure. Quando você especifica VMs spot em seus pools, o Lote do Azure pode usar esse excedente quando ele estiver disponível.

A desvantagem do uso de VMs Spot é que essas VMs podem não estar sempre disponíveis, ou podem ser aceitas a qualquer momento, dependendo da capacidade disponível. Por esse motivo, as VMs spot são mais adequadas para cargas de trabalho de processamento assíncronas e em lote, em que o tempo para conclusão do trabalho é flexível e o trabalho é distribuído entre várias VMs.

VMs spot são oferecidas a um preço menor em comparação com as VMs dedicadas. Para aprender mais sobre preço, consulte Preço do Lote do Azure.

Diferenças entre VMs spot e de VMs de baixa prioridade

O Lote oferece dois tipos de VMs de baixo custo que podem sofrer preempção:

  • VMs Spot, uma oferta moderna para todo o Azure. Também disponíveis como VMs de instância única ou Conjuntos de Dimensionamento de Máquinas Virtuais.
  • VMs de baixa prioridade, uma oferta herdada disponível somente por meio de Lote do Azure.

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

Aviso

As VMs de baixa prioridade serão desativadas após 30 de setembro de 2025. Migre para a VMs Spot no Lote do Azure antes disso.

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

VMs do Spot VMs de baixa prioridade
Contas do Lote com suporte Contas do Lote de assinatura de usuário Contas do Lote gerenciadas em lote
Configurações de pool do Lote com suporte Configuração de Máquina Virtual Configuração da Máquina Virtual e Configuração do Serviço de Nuvem (preterido)
Regiões disponíveis Todas as regiões que suportam VMs Spot Todas as regiões, exceto Microsoft Azure 21Vianet
Elegibilidade do cliente Não disponível para alguns tipos de oferta de assinatura. Saiba mais sobre as limitações do Spot. Disponível para todos os clientes do Lote
Possíveis causas da remoção Capacity Capacity
Modelo de preços Descontos variáveis em relação aos preços de VM padrão Descontos fixos em relação aos preços de VM padrão
Modelo de cotas Sujeito a cotas de núcleo na sua assinatura Sujeito a cotas principais na sua conta do Lote
Contrato de Nível de Serviço de Disponibilidade Nenhum Nenhum

Suporte em lote para VMs Spot

O Lote do Azure fornece diversas funcionalidades que tornam mais fácil consumir e se beneficiar de VMs spot:

  • Pools do Lote podem conter VMs dedicadas e VMs de baixa prioridade. 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 explícita de redimensionamento ou usando o dimensionamento automático. O envio de trabalhos e tarefas pode permanecer inalterado, independentemente dos tipos de VM no pool. Também é possível configurar um pool a fim de usar completamente as VMs spot para executar trabalhos da forma mais econômica possível, mas usar VMs dedicadas se a capacidade cair abaixo do limite mínimo, a fim de manter os trabalhos em execução.
  • Pools do Lote buscam automaticamente usar o número predeterminado de VMs spot. Se as VMs sofrerem preempção ou estiverem indisponíveis, o Lote tentará substituir a capacidade perdida e retornar ao destino.
  • Quando as tarefas são interrompidas, o Lote esse status e as coloca automaticamente em fila para nova execução.
  • VMs de baixa prioridade têm uma cota de CPU virtual separada e diferente da cota das VMs dedicadas. A cota para VMs spot é maior do que a cota para VMs dedicadas, pois as VMs spot têm menor custo. Para saber mais, confira Limites e cotas do serviço de Lote.

Considerações e casos de uso

Muitas cargas de trabalho do 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 horizontalmente e distribuídos em várias VMs.

Alguns exemplos de casos de uso de processamento em lotes que são adequados ao uso de VMs Spot são:

  • Desenvolvimento e teste: Em particular, se soluções de grande escala estiverem sendo desenvolvidas, economias significativas podem ser obtidas. Todos os tipos de testes podem ser beneficiados, mas testes de carga de larga escala e testes de regressão são ótimas opções.
  • Complementar a capacidade sob demanda: as VMs spot podem ser usadas para complementar as VMs dedicadas regulares. Quando isso estiver disponível, os trabalhos poderão ser escalonados e, portanto, concluídos mais rapidamente com um custo menor. Quando não estiver disponível, a linha de base das VMs dedicadas permanecerá disponível.
  • Flexibilidade no tempo de execução dos trabalhos: Se houver flexibilidade no tempo que os trabalhos têm de ser concluídos, então potenciais quedas na capacidade podem ser toleradas. No entanto, com a adição de VMs Spot, os trabalhos frequentemente são executados mais rapidamente e por um custo mais baixo.

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

  • Um pool pode usar apenas VMs spot. Nesse caso, o Lote recupera qualquer capacidade com preempção quando estiver disponível. Essa configuração é a maneira mais econômica 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 em andamento.
  • Um pool pode usar uma combinação dinâmica de VMs Spot dedicadas, de modo que as VMs Spot mais econômicas são usadas apenas quando disponíveis, mas as VMs dedicadas de preço total, são dimensionadas verticalmente quando necessário. Esta configuração mantém uma quantidade mínima de capacidade disponível para manter trabalhos em andamento.

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

  • Para maximizar o uso da capacidade excedente no Azure, trabalhos adequados podem ser dimensionados horizontalmente.
  • Ocasionalmente, as VMs podem não estar disponíveis ou serem aceitas, o que resulta em capacidade reduzida para trabalhos e pode levar à interrupção e repetição de tarefas.
  • Tarefas com tempos de execução menores tendem a funcionar melhor com VMs spot. Trabalhos com tarefas mais longas podem ser mais impactados se interrompidos. Se as tarefas de longa duração implementarem pontos de verificação para salvar o progresso enquanto forem executadas, este impacto pode ser reduzido.
  • Trabalhos de MPI de longa duração que utilizam várias VMs não são bem adequados para VMs Spot, porque uma VM aceita pode fazer com que todo o trabalho precise ser executado novamente.
  • Os nós spot poderão 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 do Lote pode conter VMs dedicadas e de baixa prioridade (também conhecidas como nós de computação). É possível definir o número desejado de nós de computação para VMs dedicadas e VMs spot. O número alvo de nós especifica o número de VMs que você deseja ter no pool.

O seguinte exemplo cria um pool usando máquinas virtuais do Azure, neste caso VMs do Linux, com um alvo 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);

É possível obter o número atual de nós para VMs dedicadas e VMs 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 uma VM spot:

bool? isNodeDedicated = poolNode.IsDedicated;

As VMs Spot podem ocasionalmente serem aceitas. Quando essa aceitação acontece, as tarefas que estavam em execução VMs do nó que sofreu preempção serão recolocadas na fila e executadas novamente.

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

  • As VMs que sofreram preempção têm seu estado atualizado para Admitiu Preempção.
  • A VM é excluída efetivamente, causando a perda de todos os dados armazenados localmente na VM.
  • Uma operação de nós de lista no pool ainda retornará os nós que foram aceitos.
  • O pool tentará continuamente alcançar o número predeterminado de nós spot disponíveis. Quando a capacidade de substituição for encontrada, os nós manterão suas IDs, mas serão reinicializados, passando pelos estados Criando e Inicial antes que fiquem disponíveis para o agendamento de tarefas.
  • Contagens de preempção estão disponíveis como uma métrica no Portal do Azure.

Dimensionar verticalmente pools que contêm VMs spot

Assim como os pools constituídos exclusivamente de VMs dedicadas, é possível dimensionar um pool que contém VMs Spot chamando o método Resize ou usando o 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 dá suporte a VMs spot da seguinte maneira:

  • Você pode obter ou definir o valor da variável definida pelo serviço $TargetLowPriorityNodes.
  • Você pode obter o valor da variável definida pelo serviço $CurrentLowPriorityNodes.
  • Você pode obter o valor da variável definida pelo serviço $PreemptedNodeCount. Essa variável retorna o número de nós com estado "admitiu preempção" e permite que você expanda ou reduza o número de nós dedicados, dependendo do número de nós que admitiram preempção e que estão indisponíveis.

Configurar trabalhos e tarefas

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

  • A propriedade JobManagerTask de um trabalho tem uma propriedade AllowLowPriorityNode. Quando essa propriedade tiver o valor "true", a tarefa do gerenciador de trabalhos poderá ser agendada em um nó dedicado ou em um nós spot. Se ela for false, a tarefa do gerenciador de trabalho será agendada apenas para um nó dedicado.
  • A AZ_BATCH_NODE_IS_DEDICATEDvariável de ambiente está disponível para um aplicativo de tarefas para que ele possa determinar se ela está em execução em um nó Spot ou dedicado.

Exibir métricas de 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 com preempção

Para a exibição dessas métricas no portal do Azure:

  1. Navegue até sua conta do Lote no portal do Azure.
  2. Selecione Métricas na seção Monitoramento.
  3. Selecione as métricas desejadas na lista Métrica.

Limitações

  • As VMs spot no Lote não têm suporte à definição de um preço máximo e nem a remoções baseadas em preço. Elas só podem ser removidas por motivos 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 do Serviço de Nuvem. Estes últimos 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 limitações da VM Spot.
  • Atualmente, os discos do SO efêmeros não são suportados com VMs Spot devido à política de remoção gerenciada pelo serviço Parar/Desalocar.

Próximas etapas