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.