Descubra as principais estratégias para disponibilizar modelos de machine learning de forma eficiente, considerando diferentes arquiteturas de deployment.

Arquitetura Embutida para Deployment de Modelos de Machine Learning

A arquitetura embutida, também conhecida como embedded, consiste em incorporar o modelo treinado diretamente dentro da aplicação com a qual o usuário final irá interagir. Por exemplo, ao construir uma aplicação web com Streamlit para classificação de imagens, o script Python executado pelo Streamlit contém as linhas de código que carregam o modelo já treinado e realizam inferências nele.

  • Simplicidade e facilidade de desenvolvimento são os principais benefícios da arquitetura embutida
  • Não são necessários serviços adicionais ou camadas extras na arquitetura, o que facilita o desenvolvimento
  • Como o modelo está embutido na aplicação, não há necessidade de fazer chamadas a APIs externas, o que pode melhorar a performance, especialmente em aplicações simples

Desvantagens da Arquitetura Embutida

Apesar dos benefícios, a abordagem embutida apresenta desvantagens, como a falta de isolamento do modelo. Isso significa que se houver a necessidade de atualizar o modelo com novos dados ou features, será necessário modificar a aplicação cliente, introduzindo acoplamento e dificultando a manutenção a longo prazo.

  • A necessidade de modificar a aplicação cliente ao atualizar o modelo
  • O acoplamento introduzido pela falta de isolamento do modelo
  • Dificuldades de manutenção a longo prazo

API Dedicada para o Modelo de Machine Learning

Nesta abordagem, uma API (Interface de Programação de Aplicações) dedicada é criada especificamente para atender requisições de inferência no modelo de machine learning. Isso proporciona maior flexibilidade e escalabilidade, além de manter o modelo isolado da aplicação cliente.

  • Maior flexibilidade e escalabilidade
  • Manutenção do modelo isolado da aplicação cliente
  • Possibilidade de atender a requisições de inferência de forma eficiente

API dedicada vs. Embedding do Modelo

Ao escolher entre uma API dedicada e a incorporação do modelo diretamente na aplicação, é importante considerar os benefícios e desafios de cada abordagem. A API dedicada isola o modelo em um serviço independente, facilitando atualizações futuras e permitindo o uso do mesmo modelo por múltiplas aplicações clientes. No entanto, essa abordagem introduz uma complexidade maior, exigindo desenvolvimentos distintos da aplicação e da API, e pode ter um desempenho inferior em comparação com a execução do modelo localmente.

  • Isolamento do modelo em um serviço independente
  • Facilidade de atualizações futuras
  • Possibilidade de uso do mesmo modelo por múltiplas aplicações clientes
  • Complexidade maior devido ao desenvolvimento separado da aplicação e da API
  • Possível desempenho inferior em comparação com a execução local do modelo

Modelo Publicado como Dados

Publicar o modelo junto aos dados em cenários de dados de streaming é uma abordagem comum para permitir predições em tempo real. Nesse contexto, o modelo é continuamente ajustado conforme novos dados chegam, o que possibilita predições com baixíssima latência. Empresas como Spotify e Netflix adotam essa estratégia para atualizar constantemente seus modelos de recomendação com base no streaming de dados de usuários. No entanto, essa abordagem requer infraestrutura e engenharia de dados sofisticadas, sendo ainda restrita a grandes empresas.

  • Atualização contínua do modelo com base nos novos dados
  • Predições em tempo real com baixíssima latência
  • Adoção por empresas como Spotify e Netflix
  • Necessidade de infraestrutura e engenharia de dados sofisticadas

Modelo de Deployment de Modelos de Machine Learning

Ao invés disso, os dados novos são coletados e armazenados em batch.

  • Modelos de machine learning podem não ficar disponíveis continuamente para fazer predições em tempo real
  • Os dados novos são coletados e armazenados em batch para posterior inferência offline
  • Essa abordagem é comum em modelos que geram insights ou predições em um nível mais macro

Vantagens do Processamento em Batch

A vantagem de processar os dados em batch é poder rodar o modelo em uma programação fixa, facilitando a integração com outras fontes de dados e visualizações.

  • Facilita a integração com outras fontes de dados e visualizações
  • Permite rodar o modelo em uma programação fixa
  • O processamento em lote tende a ser mais eficiente

Desvantagens do Processamento em Batch

Por outro lado, a desvantagem é a ausência de insights em tempo real e a latência introduzida entre a coleta e o processamento dos dados.

  • Ausência de insights em tempo real
  • Introdução de latência entre a coleta e o processamento dos dados
  • Mais indicado para casos de uso com tolerância a algum delay

Conclusão

Cada tipo de arquitetura possui vantagens e desvantagens.

  • A escolha depende do caso de uso, tipo de dados, recursos computacionais disponíveis e necessidade de performance em tempo real
  • A abordagem mais simples (embutida) pode ser um bom ponto de partida para validar a prova de conceito do modelo
  • Evoluir para uma API dedicada ou infra de streaming conforme a complexidade aumenta

Conclusão

Ao escolher a arquitetura de deployment mais adequada, é possível garantir a eficácia e a manutenção dos modelos de machine learning, atendendo às necessidades específicas de cada caso de uso.