Gerir orçamentos, custos e quotas do Azure Machine Learning à escala organizacional

Quando gere os custos de computação incorridos a partir do Azure Machine Learning, à escala da organização com muitas cargas de trabalho, muitas equipas e utilizadores, existem inúmeros desafios de gestão e otimização para trabalhar.

Neste artigo, apresentamos as melhores práticas para otimizar os custos, gerir orçamentos e partilhar quota com o Azure Machine Learning. Reflete a experiência e as lições aprendidas ao gerir equipas de aprendizagem automática internamente na Microsoft e ao estabelecer parcerias com os nossos clientes. Vai aprender a:

Otimizar a computação para cumprir os requisitos da carga de trabalho

Quando inicia um novo projeto de machine learning, poderá ser necessário um trabalho exploratório para obter uma boa imagem dos requisitos de computação. Esta secção fornece recomendações sobre como pode determinar a opção de SKU de máquina virtual (VM) certa para preparação, inferência ou como estação de trabalho a partir da qual trabalhar.

Determinar o tamanho da computação para preparação

Os requisitos de hardware para a carga de trabalho de preparação podem variar de projeto para projeto. Para cumprir estes requisitos, a computação do Azure Machine Learning oferece vários tipos de VMs:

  • Fins gerais: Proporção equilibrada da CPU para a memória.
  • Otimizado para memória: Proporção de memória elevada para CPU.
  • Otimizado para computação: Proporção elevada da CPU para a memória.
  • Computação de elevado desempenho: Proporcionar desempenho da classe de liderança, escalabilidade e eficiência de custos para várias cargas de trabalho HPC do mundo real.
  • Instâncias com GPUs: Máquinas virtuais especializadas direcionadas para composição de gráficos pesados e edição de vídeo, bem como preparação e inferência de modelos (ND) com aprendizagem profunda.

Poderá ainda não saber quais são os seus requisitos de computação. Neste cenário, recomendamos que comece com uma das seguintes opções predefinidas económicas. Estas opções destinam-se a testes leves e a cargas de trabalho de preparação.

Tipo Tamanho da máquina virtual Especificações
CPU Standard_DS3_v2 4 núcleos, 14 gigabytes (GB) RAM, armazenamento de 28 GB
GPU Standard_NC6 6 núcleos, 56 gigabytes (GB) RAM, armazenamento de 380 GB, GPU NVIDIA Tesla K80

Para obter o melhor tamanho da VM para o seu cenário, pode consistir em tentativa e erro. Eis vários aspetos a ter em conta.

  • Se precisar de uma CPU:
    • Utilize uma VM otimizada para memória se estiver a preparar conjuntos de dados grandes.
    • Utilize uma VM otimizada para computação se estiver a fazer inferência em tempo real ou outras tarefas sensíveis à latência.
    • Utilize uma VM com mais núcleos e RAM para acelerar os tempos de preparação.
  • Se precisar de uma GPU, veja os tamanhos de VM otimizados para GPU para obter informações sobre a seleção de uma VM.
    • Se estiver a fazer preparação distribuída, utilize tamanhos de VM com várias GPUs.
    • Se estiver a fazer formação distribuída em vários nós, utilize GPUs com ligações NVLink.

Enquanto seleciona o tipo de VM e o SKU que melhor se adequam à sua carga de trabalho, avalie SKUs de VM comparáveis como uma compensação entre o desempenho e os preços da CPU e da GPU. Do ponto de vista da gestão de custos, uma tarefa pode funcionar razoavelmente bem em vários SKUs.

Determinadas GPUs, como a família NC, particularmente NC_Promo SKUs, têm capacidades semelhantes a outras GPUs, como baixa latência e capacidade de gerir várias cargas de trabalho de computação em paralelo. Estão disponíveis a preços com desconto em comparação com algumas das outras GPUs. A seleção atenciosa de SKUs de VM para a carga de trabalho pode poupar significativamente nos custos no final.

Um lembrete sobre a importância da utilização é inscrever-se num maior número de GPUs não é necessariamente executado com resultados mais rápidos. Em vez disso, certifique-se de que as GPUs estão totalmente utilizadas. Por exemplo, verifique novamente a necessidade de NVIDIA CUDA. Embora possa ser necessário para a execução de GPU de alto desempenho, a tarefa poderá não assumir uma dependência.

Determinar o tamanho da computação da inferência

Os requisitos de computação para cenários de inferência diferem dos cenários de preparação. As opções disponíveis diferem com base no facto de o seu cenário exigir inferência offline em lote ou exigir inferência online em tempo real.

Para cenários de inferência em tempo real, considere as seguintes sugestões:

  • Utilize capacidades de criação de perfis no seu modelo com o Azure Machine Learning para determinar a quantidade de CPU e memória que precisa de alocar ao modelo ao implementá-lo como um serviço Web.
  • Se estiver a fazer inferência em tempo real, mas não precisar de elevada disponibilidade, implemente para Azure Container Instances (sem seleção de SKU).
  • Se estiver a fazer inferência em tempo real, mas precisar de elevada disponibilidade, implemente para Azure Kubernetes Service.
    • Se estiver a utilizar modelos tradicionais de machine learning e receber < 10 consultas/segundo, comece com um SKU de CPU. Os SKUs da série F funcionam frequentemente bem.
    • Se estiver a utilizar modelos de aprendizagem profunda e receber > 10 consultas/segundo, experimente um SKU de GPU NVIDIA (NCasT4_v3 muitas vezes funciona bem) com Tritão.

Para cenários de inferência de lotes, considere as seguintes sugestões:

  • Quando utilizar pipelines do Azure Machine Learning para inferência de lotes, siga a documentação de orientação em Determinar o tamanho da computação da preparação para escolher o tamanho inicial da VM.
  • Otimizar o custo e o desempenho ao dimensionar horizontalmente. Um dos principais métodos de otimização do custo e do desempenho é paralelizar a carga de trabalho com a ajuda do passo de execução paralelo no Azure Machine Learning. Este passo de pipeline permite-lhe utilizar muitos nós mais pequenos para executar a tarefa em paralelo, o que lhe permite dimensionar horizontalmente. No entanto, há uma sobrecarga para paralelização. Dependendo da carga de trabalho e do grau de paralelismo que pode ser alcançado, um passo de execução paralelo pode ou não ser uma opção.

Determinar o tamanho da instância de computação

Para desenvolvimento interativo, é recomendada a instância de computação do Azure Machine Learning. A oferta de instância de computação (CI) traz uma computação de nó único vinculada a um único utilizador e pode ser utilizada como uma estação de trabalho na cloud.

Algumas organizações não permitem a utilização de dados de produção em estações de trabalho locais, impuseram restrições ao ambiente de estação de trabalho ou restringem a instalação de pacotes e dependências no ambiente de TI empresarial. Uma instância de computação pode ser utilizada como uma estação de trabalho para ultrapassar a limitação. Oferece um ambiente seguro com acesso a dados de produção e é executado em imagens fornecidas com pacotes e ferramentas populares para ciência de dados pré-instaladas.

Quando a instância de computação está em execução, o utilizador é faturado para computação de VM, Balanceador de Carga Standard (regras de lb/saída incluídas e dados processados), disco do SO (disco P10 gerido por SSD Premium), disco temporário (o tipo de disco temporário depende do tamanho da VM escolhido) e endereço IP público. Para poupar custos, recomendamos que os utilizadores considerem:

  • Inicie e pare a instância de computação quando não estiver a ser utilizada.
  • Trabalhe com um exemplo dos seus dados numa instância de computação e aumente horizontalmente para os clusters de computação para trabalhar com o conjunto completo de dados
  • Submeta tarefas de experimentação no modo de destino de computação local na instância de computação durante o desenvolvimento ou teste ou quando mudar para a capacidade de computação partilhada quando submeter tarefas em grande escala. Por exemplo, muitas épocas, conjunto completo de dados e pesquisa de hiperparâmetros.

Se parar a instância de computação, esta para a faturação das horas de computação da VM, do disco temporário e Balanceador de Carga Standard os custos processados pelos dados. Nota o utilizador ainda paga pelo disco do SO e Balanceador de Carga Standard regras de lb/saída incluídas, mesmo quando a instância de computação é parada. Todos os dados guardados no disco do SO são mantidos através de paragem e reinícios.

Otimizar o tamanho da VM escolhida ao monitorizar a utilização da computação

Pode ver informações sobre a utilização e utilização da computação do Azure Machine Learning através do Azure Monitor. Pode ver detalhes sobre a implementação e o registo de modelos, detalhes de quotas como nós ativos e inativos, executar detalhes como execuções canceladas e concluídas e utilização de computação para utilização da GPU e da CPU.

Com base nas informações dos detalhes de monitorização, pode planear ou ajustar melhor a utilização de recursos em toda a equipa. Por exemplo, se notar muitos nós inativos durante a semana passada, pode trabalhar com os proprietários da área de trabalho correspondentes para atualizar a configuração do cluster de computação para evitar este custo adicional. Os benefícios da análise dos padrões de utilização podem ajudar na previsão de custos e melhorias orçamentais.

Pode aceder a estas métricas diretamente a partir do portal do Azure. Aceda à área de trabalho do Azure Machine Learning e selecione Métricas na secção monitorização no painel esquerdo. Em seguida, pode selecionar detalhes sobre o que gostaria de ver, como métricas, agregação e período de tempo. Para obter mais informações, veja Monitorizar a página de documentação do Azure Machine Learning .

Diagrama de métricas do Azure Monitor para o Azure Machine Learning

Alternar entre a computação na cloud local, de nó único e de vários nós enquanto desenvolve

Existem diferentes requisitos de computação e de ferramentas ao longo do ciclo de vida de machine learning. O Azure Machine Learning pode ser interacionado através de uma interface do SDK e da CLI a partir de praticamente qualquer configuração de estação de trabalho preferencial para cumprir estes requisitos.

Para poupar custos e trabalhar de forma produtiva, recomenda-se:

  • Clone a base de códigos de experimentação localmente com o Git e submeta tarefas para computação na cloud com o SDK ou a CLI do Azure Machine Learning.
  • Se o conjunto de dados for grande, considere gerir uma amostra dos seus dados na estação de trabalho local, mantendo o conjunto de dados completo no armazenamento na cloud.
  • Parametrize a base de código de experimentação para que possa configurar as suas tarefas para serem executadas com um número variado de épocas ou conjuntos de dados de diferentes tamanhos.
  • Não codize o caminho da pasta do conjunto de dados. Em seguida, pode reutilizar facilmente a mesma base de código com conjuntos de dados diferentes e no contexto de execução local e na cloud.
  • Inicie as suas tarefas de experimentação no modo de destino de computação local enquanto desenvolve ou testa, ou quando muda para uma capacidade de cluster de computação partilhada quando submete tarefas em grande escala.
  • Se o conjunto de dados for grande, trabalhe com uma amostra de dados na sua estação de trabalho local ou de instância de computação, ao mesmo tempo que dimensiona para computação na cloud no Azure Machine Learning para trabalhar com o conjunto completo de dados.
  • Quando as tarefas demorarem muito tempo a ser executadas, considere otimizar a base de código para preparação distribuída para permitir o aumento horizontal.
  • Crie as cargas de trabalho de preparação distribuídas para a elasticidade do nó, para permitir a utilização flexível de computação de nós únicos e de vários nós, bem como facilitar a utilização da computação que pode ser preempida.

Combinar tipos de computação com pipelines do Azure Machine Learning

Quando orquestra os fluxos de trabalho de machine learning, pode definir um pipeline com vários passos. Cada passo no pipeline pode ser executado no seu próprio tipo de computação. Isto permite-lhe otimizar o desempenho e os custos para satisfazer diferentes requisitos de computação em todo o ciclo de vida de machine learning.

Impulsionar a melhor utilização do orçamento de uma equipa

Embora as decisões de alocação orçamental possam estar fora do alcance do controlo de uma equipa individual, uma equipa é normalmente capacitada para utilizar o orçamento alocado para as suas melhores necessidades. Ao trocar a prioridade do trabalho em comparação com o desempenho e o custo com sensatez, uma equipa pode obter uma maior utilização do cluster, reduzir o custo global e utilizar um maior número de horas de computação a partir do mesmo orçamento. Isto pode resultar numa produtividade de equipa melhorada.

Otimizar os custos dos recursos de computação partilhados

A chave para otimizar os custos dos recursos de computação partilhados é garantir que estão a ser utilizados para a capacidade total. Seguem-se algumas sugestões para otimizar os custos de recursos partilhados:

  • Quando utiliza instâncias de computação, ative-as apenas quando tiver código para executar. Encerre-os quando não estiverem a ser utilizados.
  • Quando utilizar clusters de computação, defina a contagem mínima de nós como 0 e a contagem máxima de nós para um número avaliado com base nas restrições orçamentais. Utilize a calculadora de preços do Azure para calcular o custo da utilização total de um nó de VM do SKU da VM escolhido. O dimensionamento automático reduzirá verticalmente todos os nós de computação quando não houver ninguém a utilizá-lo. Só aumentará verticalmente para o número de nós para os quais tem orçamento. Pode configurar o dimensionamento automático para reduzir verticalmente todos os nós de computação.
  • Monitorize as utilizações de recursos, como a utilização da CPU e a utilização da GPU ao preparar modelos. Se os recursos não estiverem a ser totalmente utilizados, modifique o código para utilizar melhor os recursos ou reduza verticalmente para tamanhos de VM mais pequenos ou mais baratos.
  • Avalie se pode criar recursos de computação partilhados para a sua equipa para evitar ineficiências de computação causadas por operações de dimensionamento de clusters.
  • Otimizar as políticas de tempo limite de dimensionamento automático do cluster de computação com base nas métricas de utilização.
  • Utilize quotas de áreas de trabalho para controlar a quantidade de recursos de computação aos quais as áreas de trabalho individuais têm acesso.

Introduzir a prioridade de agendamento ao criar clusters para vários SKUs de VM

Agindo sob restrições de quota e orçamento, uma equipa tem de negociar a execução atempadamente de postos de trabalho versus custos, para garantir que os trabalhos importantes são executados atempadamente e que um orçamento seja utilizado da melhor forma possível.

Para suportar a melhor utilização de computação, as equipas são recomendadas para criar clusters de vários tamanhos e com prioridades de VM dedicada e de baixa prioridade. Os cálculos de baixa prioridade utilizam a capacidade excedentária no Azure e, por conseguinte, vêm com taxas com desconto. Por outro lado, estas máquinas podem ser preempidas sempre que um pedido de prioridade superior entrar.

Com os clusters de tamanho e prioridade variáveis, pode ser introduzida uma noção de prioridade de agendamento. Por exemplo, quando as tarefas experimentais e de produção competem pela mesma quota de GPU nc, uma tarefa de produção pode ter preferência para executar o trabalho experimental. Nesse caso, execute a tarefa de produção no cluster de computação dedicado e a tarefa experimental no cluster de computação de baixa prioridade. Quando a quota ficar aquém, a tarefa experimental será preempida a favor da tarefa de produção.

Junto à prioridade da VM, considere executar tarefas em vários SKUs de VM. Pode ser que uma tarefa demorou mais tempo a ser executada numa instância de VM com uma GPU P40 do que numa GPU V100. No entanto, uma vez que as instâncias de VM V100 podem estar ocupadas ou a quota totalmente utilizada, o tempo de conclusão no P40 ainda poderá ser mais rápido do ponto de vista do débito da tarefa. Também pode considerar a execução de trabalhos com menor prioridade em instâncias de VM menos eficazes e mais baratas do ponto de vista da gestão de custos.

Terminar uma execução antecipada quando a preparação não convergir

Quando experimenta continuamente melhorar um modelo na linha de base, poderá estar a executar várias execuções de experimentação, cada uma com configurações ligeiramente diferentes. Para uma execução, pode ajustar os conjuntos de dados de entrada. Para outra execução, poderá fazer uma alteração de hiperparâmetros. Nem todas as alterações podem ser tão eficazes como as outras. Detetou cedo que uma alteração não teve o efeito pretendido na qualidade da preparação do modelo. Para detetar se a preparação não converge, monitorize o progresso da preparação durante uma execução. Por exemplo, ao registar métricas de desempenho após cada época de preparação. Considere terminar o trabalho antecipadamente para libertar recursos e orçamento para outra versão de avaliação.

Planear, gerir e partilhar orçamentos, custos e quotas

À medida que uma organização aumenta o seu número de casos de utilização de machine learning e equipas, requer um aumento da maturidade operacional de TI e finanças, bem como coordenação entre equipas de machine learning individuais para garantir operações eficientes. A capacidade à escala da empresa e a gestão de quotas tornam-se importantes para resolver a escassez de recursos de computação e superar a sobrecarga de gestão.

Esta secção aborda as melhores práticas de planeamento, gestão e partilha de orçamentos, custos e quotas à escala empresarial. Baseia-se em aprendizagens da gestão de muitos recursos de formação de GPU para machine learning internamente na Microsoft.

Compreender os gastos com recursos com o Azure Machine Learning

Um dos maiores desafios enquanto administrador para planear as necessidades de computação é começar de novo sem informações históricas como estimativa de linha de base. Num sentido prático, a maioria dos projectos começará a partir de um orçamento pequeno como primeiro passo.

Para compreender para onde vai o orçamento, é fundamental saber de onde vêm os custos do Azure Machine Learning:

  • O Azure Machine Learning só cobra pela infraestrutura de computação utilizada e não adiciona uma sobretaxa nos custos de computação.
  • Quando uma área de trabalho do Azure Machine Learning é criada, existem também alguns outros recursos criados para ativar o Azure Machine Learning: Key Vault, Application Insights, Armazenamento do Azure e Azure Container Registry. Estes recursos são utilizados no Azure Machine Learning e irá pagar por estes recursos.
  • Existem custos associados à computação gerida, como clusters de preparação, instâncias de computação e pontos finais de inferência geridos. Com estes recursos de computação gerida, existem os seguintes custos de infraestrutura a ter em conta: máquinas virtuais, rede virtual, balanceador de carga, largura de banda e armazenamento.

Controlar padrões de gastos e obter melhores relatórios com etiquetagem

Os administradores geralmente querem ser capazes de controlar os custos em diferentes recursos no Azure Machine Learning. A identificação é uma solução natural para este problema e está alinhada com a abordagem geral utilizada pelo Azure e por muitos outros fornecedores de serviços cloud. Com o suporte de etiquetas, agora pode ver a discriminação de custos ao nível da computação, o que lhe concede acesso a uma vista mais granular para ajudar com uma melhor monitorização de custos, relatórios melhorados e maior transparência.

A identificação permite-lhe colocar etiquetas personalizadas nas suas áreas de trabalho e cálculos (a partir do Azure Resource Manager modelos e estúdio do Azure Machine Learning) para filtrar ainda mais estes recursos no Azure Cost Management com base nestas etiquetas para observar padrões de gastos. Esta funcionalidade pode ser melhor utilizada para cenários internos de cobrança. Além disso, as etiquetas podem ser úteis para capturar metadados ou detalhes associados à computação, por exemplo, um projeto, uma equipa, determinado código de faturação, etc. Isto torna a identificação muito benéfica para medir quanto dinheiro está a gastar em diferentes recursos e, portanto, obter informações mais aprofundadas sobre os seus padrões de custos e gastos em equipas ou projetos.

Também existem etiquetas injetadas no sistema colocadas em computação que lhe permitem filtrar na página Análise de Custos pela etiqueta "Tipo de computação" para ver uma discriminação em termos de computação do gasto total e determinar que categoria de recursos de computação pode estar a atribuir à maioria dos seus custos. Isto é particularmente útil para obter mais visibilidade sobre os seus padrões de custo de preparação vs. inferência.

Captura de ecrã da vista análise de custos filtrada por tipo de computação.

Governar e restringir a utilização da computação por política

Quando gere um ambiente do Azure com muitas cargas de trabalho, pode ser um desafio manter a descrição geral sobre os gastos com recursos. Azure Policy pode ajudar a controlar e a gerir os gastos com recursos ao restringir padrões de utilização específicos no ambiente do Azure.

Em específico para o Azure Machine Learning, recomendamos a configuração de políticas para permitir apenas a utilização de SKUs de VM específicos. As políticas podem ajudar a impedir e controlar a seleção de VMs caras. As políticas também podem ser utilizadas para impor a utilização de SKUs de VM de baixa prioridade.

Alocar e gerir quota com base na prioridade empresarial

O Azure permite-lhe definir limites para a alocação de quotas numa subscrição e ao nível da área de trabalho do Azure Machine Learning. Restringir quem pode gerir a quota através do controlo de acesso baseado em funções (RBAC) do Azure pode ajudar a garantir a utilização de recursos e a previsibilidade de custos.

A disponibilidade da quota de GPU pode ser escassa nas suas subscrições. Para garantir uma elevada utilização de quotas entre cargas de trabalho, recomendamos que monitorize se a quota é melhor utilizada e atribuída em cargas de trabalho.

Na Microsoft, é determinado periodicamente se as quotas de GPU são melhor utilizadas e alocadas em equipas de machine learning ao avaliar as necessidades de capacidade em relação à prioridade empresarial.

Consolidar a capacidade com antecedência

Se tiver uma boa estimativa da quantidade de computação que será utilizada no próximo ano ou nos próximos anos, pode comprar Instâncias de VM Reservadas do Azure a um custo com desconto. Existem termos de compra de um ou três anos. Uma vez que as Instâncias de VM Reservadas do Azure são descontadas, pode haver uma redução significativa dos custos em comparação com os preços pay as you go.

O Azure Machine Learning suporta instâncias de computação reservadas. Os descontos são aplicados automaticamente à computação gerida do Azure Machine Learning.

Gerir a retenção de dados

Sempre que um pipeline de machine learning é executado, os conjuntos de dados intermédios podem ser gerados em cada passo de pipeline para colocação em cache e reutilização de dados. O crescimento dos dados como uma saída destes pipelines de machine learning pode tornar-se um ponto de dor para uma organização que está a executar muitas experimentações de machine learning.

Normalmente, os cientistas de dados não passam o seu tempo a limpar os conjuntos de dados intermédios que são gerados. Ao longo do tempo, a quantidade de dados gerados será adicionada. O Armazenamento do Azure tem a capacidade de melhorar a gestão do ciclo de vida dos dados. Ao utilizar Armazenamento de Blobs do Azure gestão do ciclo de vida, pode configurar políticas gerais para mover dados que não são utilizados para camadas de armazenamento mais frias e poupar custos.

Considerações sobre a otimização dos custos da infraestrutura

Rede

O custo de rede do Azure é incorrido a partir da largura de banda de saída do datacenter do Azure. Todos os dados de entrada para um datacenter do Azure são gratuitos. A chave para reduzir os custos de rede é implementar todos os seus recursos na mesma região do datacenter sempre que possível. Se conseguir implementar a área de trabalho e a computação do Azure Machine Learning na mesma região que tem os seus dados, pode desfrutar de um custo mais baixo e de um desempenho mais elevado.

Poderá querer ter uma ligação privada entre a rede no local e a rede do Azure para ter um ambiente de cloud híbrido. O ExpressRoute permite-lhe fazê-lo, mas tendo em conta o elevado custo do ExpressRoute, poderá ser mais rentável afastar-se de uma configuração de cloud híbrida e mover todos os recursos para a cloud do Azure.

Registo de Contentores do Azure

Para Azure Container Registry, os fatores determinantes para a otimização de custos incluem:

  • Débito necessário para transferências de imagens do Docker do registo de contentores para o Azure Machine Learning
  • Requisitos para funcionalidades de segurança empresarial, como Azure Private Link

Para cenários de produção em que é necessário um débito elevado ou segurança empresarial, é recomendado o SKU Premium de Azure Container Registry.

Para cenários de desenvolvimento/teste em que o débito e a segurança são menos críticos, recomendamos sKU Standard ou SKU Premium.

O SKU Básico de Azure Container Registry não é recomendado para o Azure Machine Learning. Não é recomendado devido ao seu baixo débito e baixo armazenamento incluído, que pode ser rapidamente excedido pelas imagens do Docker de tamanho relativamente grande (mais de 1 GB) do Azure Machine Learning.

Considerar a disponibilidade do tipo de computação ao escolher regiões do Azure

Quando escolher uma região para a sua computação, tenha em atenção a disponibilidade da quota de computação. Regiões populares e maiores, como E.U.A. Leste, E.U.A. Oeste e Europa Ocidental tendem a ter valores de quota predefinidos mais elevados e uma maior disponibilidade da maioria das CPUs e GPUs, em comparação com outras regiões com restrições de capacidade mais rigorosas em vigor.

Saber mais

Controlar os custos em unidades de negócio, ambientes ou projetos com o Cloud Adoption Framework

Passos seguintes

Para saber mais sobre como organizar e configurar ambientes do Azure Machine Learning, veja Organizar e configurar ambientes do Azure Machine Learning.

Para saber mais sobre as melhores práticas no Machine Learning DevOps com o Azure Machine Learning, veja Guia de DevOps de machine learning.