Automatizar a publicação do seu modelo com MLOps
para colocar seus projetos de Machine Learning no ar
Uma das grandes dificuldades enfrentadas em projetos de Machine Learning está relacionada ao processo de automatizar a publicação do seu modelo, mas não se desespere, isso pode ser resolvido com MLOps. Fazendo uma brincadeira com a imagem de destaque desta postagem, não podemos mais pegar os modelos criados pelos cientistas de dados e jogar por cima do muro, ou seja, precisamos integrar cada vez mais a área de ciência de dados e a área de operações. É importante destacar que esta disciplina busca trazer alguns dos recursos comprovados da engenharia de software e metodologias ágeis para o aprendizado de máquina e inteligência artificial.
Esta disciplina é relativamente nova, e segundo a Forbes, começou por volta de 2015 com a publicação do artigo “Hidden Technical Debt in Machine Learning Systems”.
Sculley, D., Holt, G., Golovin, D., Davydov, E., Phillips, T., Ebner, D., … & Dennison, D. (2015). Hidden technical debt in machine learning systems. Advances in neural information processing systems, 28, 2503-2511.
Apesar de existir uma diferença fundamental entre o desenvolvimento de software tradicional, onde as regras de negócios são escritas explicitamente no código, e o desenvolvimento de machine learning, onde são apresentadas as entradas e as saídas, e é esperado que o processo consiga criar as regras que melhor ajustam a entrada para chegar à aquela saída. Nas atividades de MLOps é combinada a parte de operações das publicações de software tradicional e as necessidades de machine learning. O nome é uma adaptação de DevOps, só que trocando o Dev por ML (de Machine Learning).
Caso queira ler um pouco mais sobre como funciona o processo de aprendizagem de máquina comentado mais acima, leia este texto.
O que se espera de um processo de MLOps
Algumas das principais práticas recomendadas em MLOps é ter um pipeline reproduzível para preparação de dados e treinamento. Isso é importante porque as empresas só enxergam valor do ML quando os modelos estão em produção. Isso é, quando estão implantados e integrados aos processos de negócios existentes. Como já era de se esperar, portanto, uma das barreiras para colocar no ar os modelos de ML é o longo processo de experimentação e treino. Contudo, deixar o ambiente automatizado para a execução das tarefas, diminui a chance de erros humanos e aumenta a confiança no processo de ponta a ponta.
Você pode baixar gratuitamente o livro Introducing MLOps, escrito por Mark Treveil e o time da Dataiku. O livro explica que o pipeline deve ser criado e conter as tarefas de automação que são importantes para o seu negócio. Pode-se começar, enquanto isso, usando Infraestutura como Código que permite uma automação que atenda a reprodutibilidade do processo. Contudo, para que essa automação seja disparada a cada vez que seu código for “commitado” (não sei qual palavra em português usar para me referir à “Commit de Código”) no repositório definido, é preciso programar isso.
Alguns passos que podem ser automatizados em uma esteira de publicação de modelos:
- Garantia de acesso aos dados para treino do modelo;
- Criação/acesso à infraestrutura de treino do modelo;
- Validação dos dados para evitar vieses inconscientes e equidade nos dados;
- Treino do modelo;
- Criação da infraestrutura de publicação do modelo treinado;
- Criação dos endpoints de acesso ao modelo treinado.
Desafios em se automatizar
Repare que apenas uma pequena parte é envolvida com os códigos de Machine Learning dentre todos estes passos possíveis de uma esteira. É possível confirmar isso com a figura do artigo referenciado lá no começo do texto, que diz: “Apenas uma pequena fração dos sistemas de ML do mundo real é composta pelo código de ML, conforme mostrado pela pequena caixa preta no meio. A infraestrutura envolvente necessária é vasta e complexa.”
Estes são alguns dos desafios encontrados na engenharia de machine learning, quando se trabalha com MLOps
Data Management
As vezes os conjuntos de dados são muito grandes e, portanto, dependem de uma arquitetura de Big Data. Acessar estes dados pode ser um desafio quando os times que envolvem governança, segurança, redes e outras áreas parceiras não ajudam.
Experimentação
Os ambientes devem ser integrados, e algumas vezes, os cientistas de dados desenvolvem as soluções localmente em seus Jupyter Notebooks. Outro problema é quando o acesso aos dados é bloqueado, porque diferente de um desenvolvimento de software tradicional, ao se trabalhar com Machine Learning os dados são fundamentais para sucesso do projeto.
Tempo de treino/Infraestrutura
A infraestutura apropriada para se treinar um modelo de machine learning é peça fundamental para o trabalho. Ou seja, rodar os treinos de modelos que podem levar dias, e não estou exagerando, em sua máquina com CPU pode ser reduzido à horas em uma máquina que possui GPU. Certamente o uso de contêineres também pode ser utilizado para melhorar o parque de treinamento e publicação dos modelos.
Testes
Como comentado mais acima é importante garantir que seu modelo não seja publicado com bias ou fairness. Inclusive, gravamos um podcast na Lambda3 em 2019 falando sobre um problema de Bias e Fairness, mas que também foi explorado no capítulo 9 do livro de Mark Treveil. Clique aqui para acessar o podcast.
Para encerrar, usar MLOps para automatizar a publicação do seu modelo não é nenhum Rocket Science, mas também não é tão trivial como um Hello Word! Para aprofundar suas pesquisas, procure por ferramentas de CI/CD…