Daniel Galinkin
💻 Data & AI - Head of ML Engineering no iFood
Um plataforma de aprendizado de máquina é o conjunto de ferramentas, processos e fluxos construídos com os seguintes objetivos:
- Tornar o processo de desenvolver e treinar um modelo de aprendizado de máquina mais rápido, confiável e reprodutível.
- Tornar o processo de prover um modelo de aprendizado de máquina para sistemas em produção com confiança, escalabilidade e rastreabilidade.
- Tornar o processo de testar, monitorar e avaliar um modelo de aprendizado de máquina em produção transparente, de fácil acesso e de forma padronizada.
Em resumo, é a engenharia aplicada na ciência de dados.
Estado da arte
A área de desenvolvimento de plataformas de aprendizado de máquina, ou ML Engineering, é uma área jovem e sem padrões definitivos definidos.
Em áreas mais maduras, como processamento distribuído de dados, é possível enumerar soluções bastante adotadas e de código aberto, como o Apache Spark, que possui empresas de grande porte auxiliando no seu desenvolvimento e avançando a fronteira da pesquisa enquanto definem novos padrões.
No entanto, quando o assunto é o estado da arte de ML Engineering, a resposta é menos definitiva.
Componentes open source
Existem hoje algumas ferramentas que tratam partes do problema, como por exemplo:
- MLFlow: trata o processo de desenvolvimento e registro de experimentos de modelos de aprendizado de máquina.
- AWS Sagemaker: serviço da Amazon Web Services que simplifica a execução de treinamento de modelos de forma distribuída e a geração de microsserviços com base nestes modelos.
- GoJek Feast: feature store desenvolvida pela GoJek. Trata o processo de geração, processamento e disponibilização de atributos para consumo para modelos de aprendizado de máquina.
Cada uma destas ferramentas trata uma parte do desafio de colocar e manter um modelo de aprendizado de máquina em produção. Construir uma plataforma de aprendizado de máquina é mais complicado do que simplesmente combiná-las: normalmente, existem requisitos de negócio, incompatibilidades entre elas e lacunas nas funcionalidades que devem ser supridas.
Plataformas completas
Existem também plataformas que cobrem todas as partes do problema desenvolvidas por empresas para uso interno. Estas plataformas, no entanto, não estão disponíveis para utilização, nem mesmo para uso comercial. Alguns exemplos são:
Aqui no iFood, estamos desenvolvendo e trabalhando na nossa solução interna de plataforma de aprendizado de máquina, tendo em vista o estado da arte, tanto de ferramentas open source, quanto de soluções proprietárias.
Para tal, é importante levantar requisitos e atender às necessidades de negócio e dos nossos clientes, os cientistas de dados.
Requisitos de uma plataforma de aprendizado de máquina
Existem dois pontos principais ao se construir uma plataforma de aprendizado de máquina: MLOps e Feature Store.
MLOps
O termo MLOps é uma abreviação para Machine Learning Operations, ou operacionalização de aprendizado de máquina, em tradução livre. O termo é derivado do conceito mais popular e adotado de DevOps, que é o conjunto de técnicas e processos para automatizar a entrega de software com alto padrão de qualidade para produção.
MLOps, portanto, é o conjunto de técnicas e processos para automatizar a entrega de modelos de aprendizado de máquina com alto padrão de qualidade para produção.
Os principais pontos que devem ser atendidos para que isso ocorra são:
- Gerar conjuntos de dados de treino
- Treinar modelos
- Colocar modelos em produção (deploy)
- Monitorar modelos
1. Gerar conjuntos de dados de treino
O DevOps tradicional se baseia em versões do código: uma vez que uma nova versão do código passa por todas as validações necessárias, ela pode ser utilizada para atualizar o programa sendo executado em produção.
No caso do MLOps, existem duas dependências: versão do código e versão do dado de treino, sendo que ambas devem ser devidamente validadas. Uma plataforma de aprendizado de máquina deve executar os testes automaticamente sempre que necessário.
2. Treinar modelos
Uma vez que se tem novas versões válidas do código e do dado de treino, é necessário gerar um novo modelo. Este, no entanto, é um processo potencialmente custoso que pode demandar muito tempo e recursos computacionais. Uma plataforma de aprendizado de máquina deve abstrair a alocação destes recursos para o cientista de dados.
3. Colocar modelos em produção
Uma vez que um novo modelo é gerado, é necessário disponibilizá-lo para consumo de forma eficiente, robusta e escalável para suprir às demandas de negócio. Uma plataforma de aprendizado de máquina deve abstrair os desafios destes requisitos para o cientista de dados.
4. Monitorar modelos
Uma vez que o modelo está sendo utilizado em produção, é necessário monitorar se seu comportamento está de acordo com o esperado.
Por exemplo: o domínio dos dados sendo utilizados para predições pode mudar ao longo do tempo (um conceito conhecido como concept drift ou data drift).
Uma plataforma de aprendizado de máquina deve ser capaz de gerar alertas nestes casos, comparar versões de modelos e detectar regressões de forma automática.
Feature Store
A construção de um modelo de aprendizado de máquina se baseia em features, ou atributos. Um modelo que determina o tempo de preparo de um prato por um restaurante pode se basear, por exemplo, no número de pratos em preparo em um dado instante. Este número seria uma feature para este modelo.
Feature store é o serviço responsável por calcular e armazenar estes atributos, e disponibilizá-los para consumo nas fases de treino e predição dos modelos.
Uma feature store completa tem, dentre outros, os seguintes requisitos:
- Acesso de baixa latência para atributos calculados em tempo real.
- Acesso e busca eficiente de atributos históricos para geração de conjuntos de dados para treino de modelos.
- Facilidade para descoberta e reuso de atributos existentes.
- Escalabilidade para tratar dados de grandes volumes, variabilidade e velocidade de chegada.
Uma plataforma de aprendizado de máquina deve ter uma feature store que atenda a estes requisitos e seja facilmente acessível em todos as fases do desenvolvimento de modelos.
Por exemplo, para construir um modelo de predição do tempo necessário para a entrega de um pedido, exemplos de atributos importantes são:
- O tempo médio de preparo do restaurante
- O quanto a cozinha do restaurante está sobrecarregada no momento do pedido
- O horário do pedido e se isso corresponde a um pico de trânsito da região
- Se está chovendo ou não
A feature store é responsável por armezenar dados históricos desses atributos e disponibilizá-los para treino dos modelos. No caso do iFood, esse dado é de grande volume, e esse acesso precisa ser feito de forma eficiente e distribuída.
Além disso, ela também é responsável por disponibilizar os atributos gerados em tempo real, de forma que quando um usuário faz um pedido, o modelo consegue consultar os valores em tempo real e com baixa latência para dar uma estimativa o quanto antes. Afinal, a gente não quer esperar mais ainda quando estamos com fome, não é mesmo?
Conclusão
O desenvolvimento de plataformas de aprendizado de máquina é uma área nova e repleta de desafios técnicos, intrigantes e de ponta. É necessário conhecimentos de aprendizado de máquina, sim, mas também de engenharia de software, big data, DevOps e computação em nuvem.
Os padrões estão sendo definidos e amadurecidos pelas empresas com o volume de dados que requer criatividade, inovação e engenharia para atender aos desafios e requisitos necessários, e estão em constante evolução.
Aqui no iFood, nossa plataforma de aprendizado de máquina está em constante desenvolvimento e evolução, e em breve seremos uma das referências nesta área!
Já pensou em trabalhar com a gente e contribuir com a nossa plataforma?