Use a abordagem de arquitetura de muitos modelos para dimensionar modelos de aprendizado de máquina
Este artigo descreve uma arquitetura para muitos modelos que usa o Azure Machine Learning e clusters de computação. Uma arquitetura de muitos modelos fornece versatilidade para situações que exigem configuração complexa.
Arquitetura
Transfira um ficheiro do Visio desta arquitetura.
Fluxo de dados
O seguinte fluxo de dados corresponde ao diagrama anterior:
Ingestão de dados:
O Azure Data Factory recupera dados de um banco de dados de origem e os copia para o Armazenamento do Azure Data Lake.
Os dados são então armazenados em um armazenamento de dados do Machine Learning como um conjunto de dados tabular.
Pipeline de treinamento de modelos:
Preparar dados:
O pipeline de treinamento recupera os dados do armazenamento de dados e os transforma conforme necessário.
Os dados são agrupados em conjuntos de dados para treinar os modelos.
Modelos de comboio:
O pipeline treina modelos para todos os conjuntos de dados criados durante a preparação de dados.
Ele usa a classe
ParallelRunStep
para treinar vários modelos em paralelo.Depois que os modelos são treinados, o pipeline registra os modelos e suas métricas de teste no Machine Learning.
Pipeline de promoção de modelos:
Avaliar modelos:
O pipeline de promoção avalia os modelos treinados antes de movê-los para a produção.
Um pipeline de DevOps aplica lógica de negócios para determinar se um modelo atende aos critérios de implantação. Por exemplo, ele pode verificar se a precisão nos dados de teste excede 80%.
Modelos de registo:
- O pipeline de promoção registra modelos qualificados no espaço de trabalho de Machine Learning de produção.
Modelo de pipeline de pontuação em lote:
Preparar dados:
O pipeline de pontuação em lote recupera dados do armazenamento de dados e transforma cada arquivo conforme necessário.
Os dados são agrupados em conjuntos de dados para pontuação.
Modelos de pontuação:
O pipeline usa a classe
ParallelRunStep
para pontuar vários conjuntos de dados em paralelo.Ele identifica o modelo apropriado para cada conjunto de dados no Machine Learning pesquisando tags de modelo.
O modelo é baixado e usado para pontuar o conjunto de dados.
A classe
DataTransferStep
grava os resultados no Azure Data Lake.As previsões são passadas do Azure Data Lake para o Synapse SQL para servir.
O endpoint online gerenciado fornece pontuação em tempo real.
Devido ao grande número de modelos, eles são carregados sob demanda em vez de pré-carregados.
Resultados:
Previsões: O pipeline de pontuação em lote salva previsões no Synapse SQL.
Métricas: Microsoft Power BI se conecta às previsões do modelo para recuperar e agregar resultados para apresentação.
Componentes
Azure Data Factory é um serviço de integração de dados baseado em nuvem que permite a criação de fluxos de trabalho orientados por dados para orquestrar e automatizar a movimentação e a transformação de dados. Nessa arquitetura, o Azure Data Factory ingere dados corporativos e metadados de terceiros no Armazenamento Data Lake.
O Azure DevOps é um conjunto de serviços de desenvolvedor que fornece gerenciamento abrangente do ciclo de vida de aplicativos e infraestrutura. Ele inclui ferramentas para integração contínua e pipelines de entrega contínua (CI/CD), rastreamento de trabalho, controle de origem, pipelines de construção, gerenciamento de pacotes e soluções de teste. Nessa arquitetura, o Azure DevOps é usado para gerenciar pipelines de CI/CD para automatizar a promoção, o teste e a implantação de modelos em ambientes de produção.
do Banco de Dados SQL do Azure é um banco de dados de nuvem relacional totalmente gerenciado. Nessa arquitetura, o Banco de dados SQL é usado para armazenar dados estruturados que podem ser consultados ou analisados como parte do pipeline de dados.
Azure Stream Analytics é um serviço de análise em tempo real e processamento de eventos complexo projetado para analisar e processar grandes volumes de dados de streaming rápido. Nessa arquitetura, o Stream Analytics pode ser usado para processamento de dados em tempo real.
O Azure Synapse Analytics é um serviço de análise que unifica a integração de dados, o armazenamento de dados corporativos e a análise de big data. Ele é usado nessa arquitetura para armazenar resultados de pontuação em lote. Essa abordagem permite consultas e recuperação eficientes de previsões para relatórios ou análises. O Synapse SQL é usado para fornecer previsões a aplicativos downstream e habilitar ferramentas de visualização como o Power BI para acessar resultados agregados.
O Data Lake Storage é um serviço de armazenamento massivamente escalável e seguro para cargas de trabalho de análise de alto desempenho. Nessa arquitetura, o Data Lake Storage serve como a principal camada de armazenamento para conjuntos de dados brutos e transformados e para armazenar resultados de pipelines de pontuação.
de Aprendizado de Máquina é um serviço de aprendizado de máquina de nível empresarial para criar e implantar modelos rapidamente. Ele fornece aos usuários em todos os níveis de habilidade ferramentas como um designer low-code, aprendizado de máquina automatizado e um ambiente de notebook Jupyter hospedado que suporta vários ambientes de desenvolvimento integrado. Nessa arquitetura, o Machine Learning é usado para gerenciar o ciclo de vida dos modelos, incluindo treinamento, avaliação e implantação. Ele também orquestra pipelines para tarefas como treinamento, promoção e pontuação.
Os endpoints online gerenciados são um recurso do Machine Learning usado para pontuação em tempo real. Nessa arquitetura, um endpoint online gerenciado ajuda a fornecer uma maneira escalável e segura de atender previsões quase em tempo real, carregando modelos de aprendizado de máquina sob demanda.
O classe ParallelRunStep é um componente dos pipelines de Machine Learning usados para executar trabalhos paralelos de forma eficiente. Ele permite o processamento escalável de tarefas em lote, como treinamento ou pontuação de muitos modelos simultaneamente. Nessa arquitetura, a classe
ParallelRunStep
é usada nos pipelines de treinamento de modelo e pontuação em lote para treinar ou pontuar vários conjuntos de dados ou modelos em paralelo, o que reduz significativamente o tempo de execução dessas operações.
Power BI é uma coleção de serviços de software, aplicativos e conectores que trabalham juntos para transformar fontes de dados não relacionadas em insights coerentes, visualmente imersivos e interativos. Nessa arquitetura, o Power BI se conecta ao Synapse SQL para recuperar e apresentar previsões e métricas agregadas por meio de painéis interativos.
Alternativas
Você pode usar qualquer banco de dados para dados de origem.
Você pode usar o Serviço Kubernetes do Azure (AKS) para inferência em tempo real em vez de pontos de extremidade online gerenciados. O AKS permite que você implante modelos em contêineres e fornece mais controle sobre a implantação. Esses recursos permitem o carregamento dinâmico de modelos para lidar com solicitações de entrada sem esgotar os recursos.
Detalhes do cenário
Muitos problemas de aprendizado de máquina são muito complexos para um único modelo de aprendizado de máquina resolver. Seja prevendo vendas para cada item de cada loja ou modelando a manutenção de centenas de poços de petróleo, ter um modelo para cada instância pode melhorar os resultados em muitos problemas de aprendizado de máquina. Esse padrão de muitos modelos é comum em uma ampla variedade de setores e tem muitos casos de uso no mundo real. Com o uso do Machine Learning, um pipeline de muitos modelos de ponta a ponta pode incluir treinamento de modelos, implantação de inferência em lote e implantação em tempo real.
Uma solução de muitos modelos requer um conjunto de dados diferente para cada modelo durante o treinamento e a pontuação. Por exemplo, se a tarefa for prever as vendas de cada item em cada loja, cada conjunto de dados corresponde a uma combinação exclusiva item-loja.
Potenciais casos de utilização
Varejo: Uma rede de supermercados precisa criar um modelo de previsão de receita separado para cada loja e item, totalizando mais de 1.000 modelos para cada loja.
Cadeia de suprimentos: Para cada combinação de armazém e produto, uma empresa de distribuição precisa otimizar o estoque.
Restaurantes: Uma rede com milhares de franquias precisa prever a demanda de cada franquia.
Considerações
Essas considerações implementam os pilares do Azure Well-Architected Framework, que é um conjunto de princípios orientadores que você pode usar para melhorar a qualidade de uma carga de trabalho. Para obter mais informações, consulte Well-Architected Framework.
Partições de dados: Dividir os dados em partições é essencial para implementar o padrão de muitos modelos. Se você quiser um modelo para cada armazenamento, cada conjunto de dados contém todos os dados para um único armazenamento, portanto, há tantos conjuntos de dados quanto armazenamentos. Se você quiser modelar produtos por loja, há um conjunto de dados para cada combinação de produto e loja. Dependendo do formato dos dados de origem, pode ser fácil particionar os dados ou pode exigir uma extensa transformação e embaralhamento de dados. O Spark e o Synapse SQL são bem dimensionados para essas tarefas, enquanto o Python pandas não o faz porque é executado em um único nó e processo.
Gerenciamento de modelo: os pipelines de treinamento e pontuação identificam e invocam o modelo certo para cada conjunto de dados. Eles fazem isso calculando tags que caracterizam o conjunto de dados e, em seguida, usam as tags para encontrar o modelo correspondente. As tags identificam a chave de partição de dados e a versão do modelo, e também podem fornecer outras informações.
Escolha a arquitetura certa:
O Spark é adequado quando seu pipeline de treinamento tem requisitos complexos de transformação e agrupamento de dados. Ele fornece técnicas flexíveis de divisão e agrupamento para agrupar dados por combinações de características, como produto-loja ou local-produto. Os resultados podem ser colocados em um DataFrame do Spark para uso nas etapas subsequentes.
Se seus algoritmos de treinamento e pontuação de aprendizado de máquina forem simples, você poderá particionar dados com bibliotecas como scikit-learn. Nesse cenário, talvez você não precise do Spark, portanto, pode evitar possíveis complexidades que surgem quando você instala o Azure Synapse Analytics ou o Azure Databricks.
Se seus conjuntos de dados de treinamento já estiverem criados, como quando eles são armazenados em arquivos separados ou organizados em linhas ou colunas distintas, você não precisará do Spark para transformações de dados complexas.
A solução de Machine Learning e clusters de computação fornece versatilidade para situações que exigem configuração complexa. Por exemplo, você pode usar um contêiner personalizado do Docker, baixar arquivos ou baixar modelos pré-treinados. A visão computacional e o deep learning de processamento de linguagem natural são exemplos de aplicações que podem exigir essa versatilidade.
Repositórios de modelo separados: Para proteger os modelos implantados, considere armazená-los em seu próprio repositório que os pipelines de treinamento e teste não acessam.
classe ParallelRunStep: A classe Python ParallelRunStep é uma opção poderosa para executar muitos modelos de treinamento e inferência. Ele pode particionar seus dados de várias maneiras e, em seguida, aplicar seu script de aprendizado de máquina em elementos da partição em paralelo. Como outras formas de treinamento de Machine Learning, você pode especificar um ambiente de treinamento personalizado que tenha acesso a pacotes Python Package Index (PyPI) ou um ambiente Docker personalizado mais avançado para configurações que exigem mais do que o PyPI padrão. Há muitas CPUs e GPUs para escolher.
Inferência online: Se um pipeline carregar e armazenar em cache todos os modelos desde o início, os modelos poderão esgotar a memória do contêiner. Portanto, carregue os modelos sob demanda no método run, mesmo que isso possa aumentar ligeiramente a latência.
Otimização de Custos
A Otimização de Custos concentra-se em formas de reduzir despesas desnecessárias e melhorar a eficiência operacional. Para obter mais informações, consulte Lista de verificação de revisão de design para otimização de custos.
Para entender melhor o custo para executar esse cenário no Azure, use a calculadora de preços . Deve partir do princípio de que:
Os modelos de serviço são treinados diariamente para mantê-los atualizados.
Você precisa de cerca de 30 minutos para processar um conjunto de dados que contém 40 milhões de linhas de 10 mil combinações exclusivas de loja-produto. O conjunto de dados treina no Azure Databricks usando um cluster provisionado com 12 máquinas virtuais (VMs) que usam instâncias Ls16_v2. A pontuação em lote com o mesmo conjunto de dados leva cerca de 20 minutos.
Você pode usar o Machine Learning para implantar inferências em tempo real. Dependendo do volume de solicitação, escolha um tipo adequado de VM e tamanho de cluster.
Um cluster AKS é dimensionado automaticamente conforme necessário, o que resulta em uma média de dois nós ativos por mês.
Para ver como os preços diferem para o seu caso de uso, altere as variáveis na calculadora de preços para corresponder ao tamanho de dados esperado e aos requisitos de carga de serviço. Para tamanhos de dados de treinamento maiores ou menores, aumente ou diminua o tamanho do cluster do Azure Databricks. Para lidar com mais usuários simultâneos durante o serviço do modelo, aumente o tamanho do cluster AKS.
Contribuidores
A Microsoft mantém este artigo. Os seguintes colaboradores escreveram este artigo.
Autor principal:
- James Nguyen - Brasil | Arquiteto Principal de Soluções na Nuvem
Para ver perfis não públicos do LinkedIn, faça login no LinkedIn.
Próximos passos
- Configurar um cluster Kubernetes para de Aprendizado de Máquina
- Muitos modelos acelerador de solução repositório GitHub
- classe ParallelRunStep
- DataTransferStep classe
- Criar armazenamentos de dados
- O que é o Azure Synapse Analytics?
- Implantar um modelo em um cluster AKS