Share via


Como usar VMs de baixa prioridade em implantações em lote

APLICA-SE A:Extensão de ML da CLI do Azure v2 (atual)SDK do Python azure-ai-ml v2 (atual)

Implantações de Lote do Azure dão suporte a VMs de baixa prioridade para reduzir o custo das cargas de trabalho de inferência em lotes. As VMs de baixa prioridade permitem que uma grande quantidade de poder de computação seja usada a um baixo custo. As VMs de baixa prioridade tiram proveito da capacidade excedente no Azure. Quando você especifica VMs de baixa prioridade em pools, o Lote do Azure pode usar esse excedente quando ele estiver disponível.

A desvantagem do uso dessas VMs é que elas podem não estar disponíveis para serem alocadas ou podem admitir preempção a qualquer momento, dependendo da capacidade disponível. Por esse motivo, elas são mais adequadas para cargas de trabalho de processamento assíncronas e em lote, nas quais o tempo para conclusão do trabalho é flexível e o trabalho é distribuído entre várias VMs.

VMs de baixa prioridade são ofertadas a um preço consideravelmente menor em comparação com VMs dedicadas. Para obter detalhes sobre preços, consulte Preço do Azure Machine Learning.

Como a implantação em lote funciona com VMs de baixa prioridade

As implantações em lotes do Azure Machine Learning oferecem vários recursos que tornam mais fácil consumir e se beneficiar de VMs de baixa prioridade:

  • Os trabalhos de implantação em lote consomem VMs de baixa prioridade executando em clusters de cálculo do Azure Machine Learning criados com VMs de baixa prioridade. Após uma implantação ser associada a um cluster de VMs de baixa prioridade, todos os trabalhos produzidos por essa implantação usarão VMs de baixa prioridade. A configuração por trabalho não é possível.
  • Os trabalhos de implantação em lote buscam automaticamente o número de VMs de destino no cluster de cálculo disponível com base no número de tarefas a serem enviadas. Se as VMs forem preteridas ou estiverem indisponíveis, os trabalhos de implantação em lote tentarão substituir a capacidade perdida enfileirando as tarefas com falha no cluster.
  • VMs de baixa prioridade têm uma cota de vCPU separada que se difere da cota para VMs dedicadas. Os núcleos com baixa prioridade por região têm um limite padrão de 100 a 3.000, dependendo de seu tipo de oferta de assinatura. O número de núcleos de baixa prioridade por assinatura pode ser aumentado e é um valor único nas famílias de VM. Confira Cotas de computação do Azure Machine Learning.

Considerações e casos de uso

Muitas cargas de trabalho em lote são uma boa opção para VMs de baixa prioridade. Embora isso possa introduzir mais atrasos de execução quando ocorre a desalocação de VMs, as possíveis quedas de capacidade podem ser toleradas às custas da execução com um custo menor se houver flexibilidade no tempo que os trabalhos têm para ser concluídos.

Ao implantar modelos em ponto de extremidade em lote, o reagendamento pode ser feito no nível de mini lote. Como os pontos de extremidade em lote distribuem o trabalho no nível de mini lote, a desalocação afeta apenas os mini lotes que estão sendo processados e não concluídos no nó afetado. Todos os progressos concluídos são mantidos.

Criar implantações em lote com VMs de baixa prioridade

Os trabalhos de implantação em lote consomem VMs de baixa prioridade executando em clusters de cálculo do Azure Machine Learning criados com VMs de baixa prioridade.

Observação

Após uma implantação ser associada a um cluster de VMs de baixa prioridade, todos os trabalhos produzidos por essa implantação usarão VMs de baixa prioridade. A configuração por trabalho não é possível.

É possível criar um cluster de cálculo de baixa prioridade do Azure Machine Learning da seguinte maneira:

Crie uma definição de computação YAML como a seguinte:

low-pri-cluster.yml

$schema: https://azuremlschemas.azureedge.net/latest/amlCompute.schema.json 
name: low-pri-cluster
type: amlcompute
size: STANDARD_DS3_v2
min_instances: 0
max_instances: 2
idle_time_before_scale_down: 120
tier: low_priority

Crie a computação usando o comando a seguir:

az ml compute create -f low-pri-cluster.yml

Depois de criar a nova computação, você poderá criar ou atualizar sua implantação para usar o novo cluster:

Para criar ou atualizar uma implantação no novo cluster de cálculo, crie uma configuração YAML como a seguinte:

$schema: https://azuremlschemas.azureedge.net/latest/batchDeployment.schema.json
endpoint_name: heart-classifier-batch
name: classifier-xgboost
description: A heart condition classifier based on XGBoost
type: model
model: azureml:heart-classifier@latest
compute: azureml:low-pri-cluster
resources:
  instance_count: 2
settings:
  max_concurrency_per_instance: 2
  mini_batch_size: 2
  output_action: append_row
  output_file_name: predictions.csv
  retry_settings:
    max_retries: 3
    timeout: 300

Em seguida, crie a implantação com o seguinte comando:

az ml batch-endpoint create -f endpoint.yml

Exibir e monitorar a desalocação do nó

Novas métricas estão disponíveis no portal do Azure para VMs de baixa prioridade para monitorar VMs de baixa prioridade. Essas métricas são:

  • Nós com preempção
  • Núcleos admitidos

Para exibir essas métricas no portal do Azure

  1. Navegue até o seu workspace do Azure Machine Learning no portal do Azure.
  2. Selecione Métricas na seção Monitoramento.
  3. Selecione as métricas desejadas na lista Métrica.

Captura de tela da seção de métricas na folha de monitoramento de recursos mostrando as métricas relevantes para VMs de baixa prioridade.

Limitações

  • Após uma implantação ser associada a um cluster de VMs de baixa prioridade, todos os trabalhos produzidos por essa implantação usarão VMs de baixa prioridade. A configuração por trabalho não é possível.
  • O reagendamento é feito no nível do minilote, independentemente do progresso. Nenhuma funcionalidade de ponto de verificação é fornecida.

Aviso

Nos casos em que todo o cluster tem preempção (ou em execução em um cluster de nó único), o trabalho será cancelado, pois não há capacidade disponível para ele ser executado. O reenvio será necessário nesse caso.