Gerenciar e otimizar custos do Azure Machine Learning
Este artigo te mostra como gerenciar e otimizar os 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 os custos de recursos de computação.
- Usar cluster de computação do Azure Machine Learning
- Configurar seus clusters de treinamento para dimensionamento automático
- Configurar seus pontos de extremidade online gerenciados 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
- Paralelizar o treinamento
- Definir políticas de retenção e exclusão de dados
- Implantar recursos na mesma região
- Excluir implantações com falha
Para obter informações sobre planejamento e monitoramento de custos, consulte Plano para gerenciar custos do 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. Não recomendamos versões de pré-visualização 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 o cluster de computação do Azure Machine Learning
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.
Os usuários do Azure Machine Learning podem usar o cluster de computação gerenciado do Azure Machine Learning, 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. Para obter mais informações, consulte Plano para gerenciar custos do 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 é concluído, o cluster libera nós e é dimensionado para sua 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 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ê realizar experimentos de desenvolvimento/teste altamente iterativos, talvez seja necessário aumentar o tempo para que você não pague pelo escalonamento constante para cima e para baixo após cada alteração em seu script ou ambiente de treinamento.
Você pode configurar os clusters do AmlCompute para seus requisitos de carga de trabalho em alteração usando:
- O Portal do Azure
- A Classe do SDK do AmlCompute
- CLI do AmlCompute
- APIs REST.
Configurar pontos de extremidade online gerenciados para dimensionamento automático
O dimensionamento automático executa automaticamente a quantidade certa de recursos para lidar com a carga em seu aplicativo. Os pontos de extremidade online gerenciados dão suporte ao dimensionamento automático por meio da integração com o recurso de dimensionamento automático do Azure Monitor. Para obter mais informações, consulte Pontos de extremidade online e implantações para inferência em tempo real.
O dimensionamento automático do Azure Monitor dá suporte a um conjunto de regras avançado:
- Dimensionamento baseado em métricas, por exemplo, utilização da CPU >70%
- Dimensionamento baseado em programação, por exemplo, regras de dimensionamento para horários comerciais de pico
- Uma combinação das duas
Para obter mais informações, confira Pontos de extremidade online com dimensionamento automático.
Definir cotas em recursos
O AmlCompute vem com uma configuração de cota ou limite. Essa cota é por família de VM, por exemplo, série Dv2 ou série NCv3. A cota varia de acordo com a região para cada assinatura. As assinaturas começam com padrões pequenos. Use essa configuração para controlar a quantidade de recursos do AmlCompute disponíveis para serem ativados em sua assinatura. Para obter mais informações, consulte Computação do Azure Machine Learning.
Além disso, você pode configurar a cota no nível do espaço de trabalho por família de VMs para cada espaço de trabalho em uma assinatura. Essa abordagem oferece a você um controle mais granular sobre os custos que cada espaço de trabalho pode incorrer e restringe determinadas famílias de VMs. Para obter mais informações, consulte Cotas em nível de espaço de trabalho.
Para definir cotas no nível do espaço de trabalho:
Abra o Portal do Azure e selecione qualquer espaço de trabalho em sua assinatura.
Selecione Suporte + Solução de problemas>Uso + cotas no menu do espaço de trabalho.
Selecione Ver cota para ver as cotas no Estúdio do Azure Machine Learning.
Nessa página, você pode encontrar sua assinatura e região para definir cotas.
Como essa configuração afeta vários espaços de trabalho, você precisa de privilégios no escopo da assinatura para definir a cota.
Definir políticas de encerramento 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ê usa o ajuste de hiperparâmetro interno do Azure Machine Learning ou o machine learning automatizado.
Aqui estão algumas opções que você tem:
- Defina um parâmetro chamado
max_run_duration_seconds
em sua RunConfiguration para controlar a duração máxima que uma execução pode estender na computação que você escolher, seja uma 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
oumax_duration_minutes
. Para obter mais informações, consulte Especificar política de encerramento antecipado. - Para o machine learning automatizado, defina políticas de encerramento semelhantes usando o sinalizador
enable_early_stopping
. Você também pode usar propriedades comoiteration_timeout_minutes
eexperiment_timeout_minutes
para controlar a duração máxima de um trabalho ou de todo o experimento. Para obter mais informações, consulte Critérios de saída.
Usar máquinas virtuais de baixa prioridade
O Azure permite que você use o excesso de capacidade não utilizada como VMs de Baixa Prioridade em conjuntos de dimensionamento de máquinas virtuais, Lote e o serviço de Aprendizado de Máquina. Essas alocações são preemptivas, mas têm um preço reduzido em comparação com as VMs dedicadas. Em geral, recomendamos que você use VMs de Baixa Prioridade para cargas de trabalho em Lote. Você também deve usá-las quando as interrupções puderem ser recuperadas por meio de reenvios para inferência em Lote ou por meio de reinicializações para treinamento de aprendizado profundo com pontos de verificação.
Low-Priority VMs têm uma única cota separada do valor de cota dedicado, que é por família de VM. Para obter mais informações sobre as cotas do AmlCompute, consulte Gerenciar e aumentar cotas .
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.
- Habilite o desligamento ocioso (versão prévia) para economizar no custo quando a VM estiver ociosa por um período de tempo especificado. Consulte Configurar desligamento ocioso.
- Configure uma agenda para iniciar e parar automaticamente a instância de computação (versão prévia) quando não estiver em uso para economizar custos. Consulte Agendar início e parada automáticos.
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 por um ano ou três anos, aplicaremos automaticamente o desconto à sua computação gerenciada do Azure Machine Learning.
Paralelizar o treinamento
Um dos métodos chave para otimizar o custo e o 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, o que permite a você dimensionar horizontalmente. Há uma sobrecarga de paralelização. Dependendo da carga de trabalho e do grau de paralelismo que pode ser alcançado, essa abordagem pode ser uma opção. Para obter mais informações, consulte Classe do ParallelComponent.
Definir políticas de retenção e exclusão de dados
Toda vez 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, confira Otimizar os custos gerenciando automaticamente o ciclo de vida dos dados.
Implantar recursos na mesma região
As computações localizadas em regiões diferentes podem sofrer latência de rede e aumento dos custos de transferência de dados. 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 Azure ExpressRoute, às vezes pode ser mais efetivo mover todos os recursos para o Azure para otimizar os custos e a latência da rede.
Excluir implantações com falha
Os pontos de extremidade online gerenciados usam VMs para as implantações. Se você enviou uma solicitação para criar uma implantação online e ela falhou, a solicitação pode ter passado do estágio em que a computação é criada. Nesse caso, a implantação com falha seria cobrada. Quando você concluir a depuração ou a investigação da falha, exclua as implantações com falha para economizar o custo.