Share via


Gerenciar e otimizar custos do Azure Machine Learning

Saiba como gerenciar e otimizar os custos ao treinar e implantar modelos de machine learning no Azure Machine Learning.

Use as dicas a seguir para ajudá-lo a gerenciar e otimizar os custos de recursos de computação.

  • Configurar seus clusters de treinamento para dimensionamento automático
  • Definir cotas em sua assinatura e espaços de trabalho
  • Definir políticas de encerramento no trabalho de treinamento
  • Use Máquinas virtuais de baixa prioridade (VM)
  • Agendar instâncias de computação para ligar e desligar automaticamente
  • Use uma Instância de Máquinas Virtuais Reservadas
  • Treinar localmente
  • Paralelizar o treinamento
  • Definir políticas de retenção e exclusão de dados
  • Implantar recursos na mesma região

Para obter informações sobre o planejamento e o monitoramento de custos, consulte o guia Planejar o gerenciamento de custos para Azure Machine Learning.

Importante

Os itens marcados (versão prévia) neste artigo estão atualmente em versão prévia pública. A versão prévia é fornecida sem um contrato de nível de serviço e não é recomendada para cargas de trabalho de produção. Alguns recursos podem não ter suporte ou podem ter restrição de recursos. Para obter mais informações, consulte Termos de Uso Complementares de Versões Prévias do Microsoft Azure.

Use um cluster de cálculo do Azure Machine Learning (AmlCompute)

Com dados em constante mudança, você precisa de treinamento de modelo rápido e simplificado e retreinamento para manter modelos precisos. No entanto, o treinamento contínuo vem a um custo, especialmente para modelos de aprendizado profundo em GPUs.

Azure Machine Learning usuários podem usar o cluster de computação de Azure Machine Learning gerenciado, também chamado de AmlCompute. O AmlCompute dá suporte a uma variedade de opções de GPU e CPU. O AmlCompute é hospedado internamente em nome de sua assinatura por Azure Machine Learning. Ele fornece a mesma segurança, conformidade e governança de nível empresarial na escala de nuvem IaaS do Azure.

Como esses pools de computação estão dentro da infraestrutura IaaS do Azure, você pode implantar, dimensionar e gerenciar seu treinamento com os mesmos requisitos de segurança e conformidade que o restante da sua infraestrutura. Essas implantações ocorrem em sua assinatura e obedecem às suas regras de governança. Saiba mais sobre a computação Microsoft Azure Machine Learning.

Configurar clusters de treinamento para dimensionamento automático

O dimensionamento automático de clusters com base nos requisitos de sua carga de trabalho ajuda a reduzir os custos para que você só use o que precisa.

Os clusters AmlCompute são projetados para dimensionar dinamicamente com base em sua carga de trabalho. O cluster pode ser dimensionado até o número máximo de nós que você configurar. À medida que cada trabalho for concluído, o cluster lançará os nós e os dimensionará para a sua contagem de nós mínima configurada.

Importante

Para evitar cobranças quando nenhum trabalho estiver em execução, defina os nós mínimos para 0. Essa configuração permite que o Azure Machine Learning desaloque os nós quando eles não estiverem em uso. Qualquer valor maior que 0 manterá esse número de nós em execução, mesmo se eles não estiverem em uso.

Você também pode configurar a quantidade de tempo que o nó está ocioso antes de reduzir verticalmente. Por padrão, o tempo ocioso antes da redução vertical é definido como 120 segundos.

  • Se você executar uma experimentação com menos iteração, reduza esse tempo para economizar custos.
  • Se você executar experimentação de desenvolvimento/teste altamente iterativo, talvez seja necessário aumentar o tempo para que você não esteja pagando pelo dimensionamento constante para cima e para baixo após cada alteração no seu ambiente ou script de treinamento.

Os clusters AmlCompute podem ser configurados para seus requisitos de carga de trabalho em alteração no portal do Azure, usando a classe AMLCOMPUTE SDK, AmlCompute CLI, com as APIs REST.

Definir cotas em recursos

O AmlCompute vem com uma configuração de cota (ou limite). Essa cota é por família de VMs (por exemplo, série Dv2, série NCv3) e varia por região para cada assinatura. As assinaturas começam com pequenos padrões para ajudá-lo, mas use essa configuração para controlar a quantidade de recursos Amlcompute disponíveis para ser girada em sua assinatura.

Também configure a cota de nível de espaço de trabalho por família de VMpara cada espaço de trabalho em uma assinatura. Isso permite que você tenha um controle mais granular dos custos que cada espaço de trabalho pode potencialmente incorrer e restringir determinadas famílias de VMs.

Para definir cotas no nível do espaço de trabalho, inicie na portal do Azure. Selecione qualquer espaço de trabalho em sua assinatura e selecione usos + cotas no painel esquerdo. Em seguida, selecione a guia Configurar cotas para exibir as cotas. Você precisa de privilégios no escopo da assinatura para definir a cota, pois é uma configuração que afeta vários espaços de trabalho.

Definir as políticas de autoterminação de trabalho

Em alguns casos, você deve configurar as execuções de treinamento para limitar sua duração ou encerrá-las no início. Por exemplo, quando você estiver usando o ajuste de hiperparâmetro interno do Azure Machine Learning ou o aprendizado de máquina automatizado.

Aqui estão algumas opções que você tem:

  • Defina um parâmetro chamado max_run_duration_seconds em seu RunConfiguration para controlar a duração máxima que uma execução pode estender para na computação escolhida (computação em nuvem local ou remota).
  • Para ajuste de hiperparâmetro, defina uma política de encerramento inicial de uma política de Bandit, uma política de interrupção mediana ou uma política de seleção de truncamento. Para controlar ainda mais a varredura de hiperparâmetro, use parâmetros como max_total_runs ou max_duration_minutes.
  • Para machine learning automatizado, defina políticas de encerramento semelhantes usando o sinalizador enable_early_stopping. Use também propriedades como iteration_timeout_minutes e experiment_timeout_minutes para controlar a duração máxima de um trabalho ou para todo o experimento.

Usar VMs de baixa prioridade

O Azure permite que você use o excesso de capacidade inutilizável que Low-Priority VMs entre conjuntos de dimensionamento de máquinas virtuais, lote e o serviço de Machine Learning. Essas alocações são pré esvaziáveis, mas vêm a um preço reduzido em comparação com as VMs dedicadas. Em geral, é recomendável usar VMs Low-Priority para cargas de trabalho do lote. Você também deve usá-los onde as interrupções são recuperáveis por meio de reenvios (para inferência de lote) ou por meio de reinicializações (para treinamento de aprendizado profundo com ponto de verificação).

Low-Priority VMs têm uma única cota separada do valor de cota dedicado, que é por família de VM. Saiba mais sobre as cotas do AmlCompute.

Low-Priority VMs não funcionam para instâncias de computação, pois precisam dar suporte a experiências interativas de notebook.

Agendar instâncias de computação

Quando você cria uma instância de computação, a VM permanece ativada para estar disponível para seu trabalho.

Usar instâncias reservadas

Outra maneira de economizar dinheiro em recursos de computação é a instância de VM reservada do Azure. Com essa oferta, você se compromete com os termos de um ou três anos. Esses descontos vão até 72% dos preços pagos conforme o uso e são aplicados diretamente à sua fatura mensal do Azure.

Computação do Azure Machine Learning dá suporte a instâncias reservadas inerentemente. Se você comprar uma instância reservada de um ano ou de três anos, iremos aplicar automaticamente o desconto em sua computação gerenciada do Azure Machine Learning.

Paralelizar o treinamento

Um dos principais métodos de otimização de custo e desempenho é paralelizar a carga de trabalho com a ajuda de um componente paralelo no Azure Machine Learning. Um componente paralelo permite que você use muitos nós menores para executar a tarefa em paralelo, permitindo, assim, que você dimensione horizontalmente. Há uma sobrecarga de paralelização. Dependendo da carga de trabalho e do grau de paralelismo que pode ser obtido, isso pode ser uma opção ou não. Para obter mais detalhes, siga esse link para a documentação do ParallelComponent.

Definir políticas de retenção e exclusão de dados

Sempre que um pipeline é executado, conjuntos de dados intermediários são gerados em cada etapa. Ao longo do tempo, esses conjuntos de dados intermediários ocuparão espaço em sua conta de armazenamento. Considere configurar políticas para gerenciar seus dados em todo o ciclo de vida para arquivar e excluir seus conjuntos de dados. Para obter mais informações, consulte otimizar os custos automatizando as camadas de acesso do Armazenamento de Blob do Azure.

Implantar recursos na mesma região

Os cálculos localizados em regiões diferentes podem ter latência de rede e custos de transferência de dados maiores. Os custos de rede do Azure são incorridos por meio da largura de banda de saída dos data centers do Azure. Para ajudar a reduzir os custos de rede, implante todos os seus recursos na região. Provisionar seu workspace do Azure Machine Learning e recursos dependentes na mesma região que seus dados, pode ajudar a reduzir o custo e melhorar o desempenho.

Para cenários de nuvem híbrida como aqueles que usam o ExpressRoute, às vezes pode ser mais econômico mover todos os recursos para o Azure para otimizar os custos e a latência da rede.

Próximas etapas