Gerenciar e otimizar os custos do Azure Machine Learning

Saiba como gerenciar e otimizar custos ao treinar e implantar modelos de aprendizado de máquina no Azure Machine Learning.

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

  • Configurar seus clusters de treinamento para dimensionamento automático
  • Definir quotas na sua subscrição e espaços de trabalho
  • Definir políticas de rescisão no seu trabalho de formação
  • Usar máquinas virtuais (VM) de baixa prioridade
  • Agende instâncias de computação para desligar e iniciar automaticamente
  • Usar uma instância de VM reservada do Azure
  • Treine localmente
  • Treinamento em paralelo
  • Definir políticas de retenção e exclusão de dados
  • Implantar recursos na mesma região

Para obter informações sobre como planejar e monitorar custos, consulte o guia Planejar para gerenciar custos do Azure Machine Learning .

Importante

Os itens marcados (visualização) neste artigo estão atualmente em visualização pública. A versão de visualização é fornecida sem um contrato de nível de serviço e não é recomendada para cargas de trabalho de produção. Algumas funcionalidades poderão não ser suportadas ou poderão ter capacidades limitadas. Para obter mais informações, veja Termos Suplementares de Utilização para Pré-visualizações do Microsoft Azure.

Usar o cluster de computação do Azure Machine Learning (AmlCompute)

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

Os usuários do Azure Machine Learning podem usar o cluster de computação gerenciado do Azure Machine Learning, também chamado AmlCompute. AmlCompute suporta várias opções de GPU e CPU. O AmlCompute é hospedado internamente em nome de sua assinatura pelo 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 infraestrutura. Essas implantações ocorrem em sua assinatura e obedecem às regras de governança. Saiba mais sobre a computação do Azure Machine Learning.

Configurar clusters de treinamento para dimensionamento automático

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

Os clusters AmlCompute são projetados para serem dimensionados dinamicamente com base na sua carga de trabalho. O cluster pode ser dimensionado até o número máximo de nós configurados. À medida que cada tarefa é concluída, o cluster libera nós e é dimensionado para a contagem mínima de nós configurada.

Importante

Para evitar cobranças quando nenhum trabalho estiver em execução, defina os nós mínimos como 0. Essa configuração permite que o Aprendizado de Máquina do Azure desaaloque 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 que eles não estejam em uso.

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

  • Se você executar menos experimentação iterativa, reduza esse tempo para economizar custos.
  • Se você executar experimentação de desenvolvimento/teste altamente iterativa, talvez seja necessário aumentar o tempo para não pagar por escalas constantes para cima e para baixo após cada alteração no script ou ambiente de treinamento.

Os clusters AmlCompute podem ser configurados para seus requisitos de carga de trabalho variáveis no portal do Azure, usando a classe AmlCompute SDK, AmlCompute CLI, com as APIs REST.

Definir quotas de recursos

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 de acordo com a 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 serem criados em sua assinatura.

Configure também a cota de nível de espaço de trabalho por família de VMs, para cada espaço de trabalho dentro de uma assinatura. Isso permite que você tenha um controle mais granular sobre os custos que cada espaço de trabalho pode potencialmente incorrer e restrinja determinadas famílias de VMs.

Para definir cotas no nível do espaço de trabalho, comece no portal do Azure. Selecione qualquer espaço de trabalho na sua subscrição e selecione Utilizações + quotas 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, já que é uma configuração que afeta vários espaços de trabalho.

Definir políticas de encerramento automático de trabalhos

Em alguns casos, você deve configurar suas execuções de treinamento para limitar sua duração ou encerrá-las antecipadamente. 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 na computação escolhida (computação em nuvem local ou remota).
  • Para ajuste de hiperparâmetros, defina uma política de encerramento antecipado a partir de uma política Bandit, uma política de parada mediana ou uma política de seleção de truncamento. Para controlar ainda mais as varreduras de hiperparâmetros, use parâmetros como max_total_runs ou max_duration_minutes.
  • Para aprendizado de máquina automatizado, defina políticas de terminação semelhantes usando o enable_early_stopping sinalizador. 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.

Utilizar VMs de baixa prioridade

O Azure permite que você use o excesso de capacidade não utilizada como VMs de baixa prioridade em conjuntos de escala de máquina virtual, lote e o serviço de Aprendizado de Máquina. Essas alocações são pré-emptíveis, mas têm um preço reduzido em comparação com VMs dedicadas. Em geral, recomendamos o uso de VMs de baixa prioridade para cargas de trabalho em lote. Você também deve usá-los onde as interrupções são recuperáveis por meio de reenvios (para Inferência em lote) ou por meio de reinicializações (para treinamento de aprendizado profundo com ponto de verificação).

As VMs de baixa prioridade têm uma única cota separada do valor da cota dedicada, que é por família de VMs. Saiba mais sobre as cotas AmlCompute.

As VMs de baixa prioridade não funcionam para instâncias de computação, pois precisam oferecer suporte a experiências de bloco de anotações interativo.

Agendar instâncias de computação

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

Utilizar instâncias reservadas

Outra maneira de economizar dinheiro em recursos de computação é a Instância de VM Reservada do Azure. Com esta oferta, você se compromete com mandatos de um ou três anos. Esses descontos variam até 72% dos preços pré-pagos e são aplicados diretamente à sua fatura mensal do Azure.

O Azure Machine Learning Compute suporta instâncias reservadas inerentemente. Se você comprar uma instância reservada de um ou três anos, aplicaremos automaticamente um desconto em relação à sua computação gerenciada do Azure Machine Learning.

Treinamento em paralelo

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 que você dimensione horizontalmente. Há uma sobrecarga para paralelização. Dependendo da carga de trabalho e do grau de paralelismo que pode ser alcançado, esta pode ou não ser uma opção. Para obter mais detalhes, siga este link para obter 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. Com o tempo, esses conjuntos de dados intermediários ocupam espaço na sua conta de armazenamento. Considere configurar políticas para gerenciar seus dados durante todo o ciclo de vida para arquivar e excluir seus conjuntos de dados. Para obter mais informações, consulte otimizar custos automatizando as camadas de acesso do Armazenamento de Blobs do Azure.

Implantar recursos na mesma região

Cálculos localizados em diferentes regiões podem enfrentar latência de rede e aumento dos custos de transferência de dados. Os custos de rede do Azure são incorridos a partir da largura de banda de saída dos centros de dados do Azure. Para ajudar a reduzir os custos de rede, implante todos os seus recursos na região. O provisionamento do espaço de trabalho do Azure Machine Learning e dos recursos dependentes na mesma região que os dados pode ajudar a reduzir custos e melhorar o desempenho.

Para cenários de nuvem híbrida, como aqueles que usam a Rota Expressa, à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óximos passos