Afinal, o que é o #MLOps e por que é tão importante para Ciência de Dados?
Primeiro fazer a engenharia do dado e o famoso feature engineering até ter um dataset bem organizado e num formato perfeito para ser utilizado num treinamento do modelo ideal, após horas de análise sobre o problema inicial do seu cliente.
E então vem o treinamento do modelo - e mesmo nos modelos tradicionais ou indo ao Deep Leaning, à ânsia da espera pelo resultado é a mesma. Depois de alguns ajustes e do famoso fine tuning do modelo o resultado chega, a acurácia é a ideal de acordo com o que foi proposto inicialmente pelo cliente e a alegria da entrega de valor é iminentemente...
Mas aí chega a grande pergunta do cliente:
Quando entra em produção?
E então surgem as dúvidas:
Produção? Como assim? Consigo rodar o Jupyter Notebook aqui na minha máquina. Posso te entregar um .pickle do modelo, pode ser? Ah, o Keras e o Fast.ai permitem exportar o modelo, mas no formato deles. Te atende?
Não, claro que não atende!
O cliente quer ver o modelo em produção, sendo utilizado por todas as áreas da empresa e de preferência mostrando os resultados plausíveis e agregando valor ao negócio.
E aí então que se chega num termo muito importante para Ciência de Dados: o MLOps.
Conhecendo um pouco mais sobre o MLOps
Por trás de toda a hype ao se agregar a sigla “Ops” ao final de alguma abreviação, tem uma grande vertente na área de Ciência de Dados que é a da preocupação por operacionalizar um modelo treinado. Em termos mais técnicos, é fazer o deploy dos modelos em produção, tornando-os utilizáveis de fato para a empresa.
Com isso, mais desafios passam a fazer parte da área e mostram que a Ciência de Dados deve sim ir muito além dos Jupyter Notebooks.
Devemos sim nos preocupar com controle de versão e passar a utilizar no dia a dia termos como 'Git Commit -m “”' e 'Git Push'. Temos que ter um repositório de códigos, utilizando-os a cada projeto!
O Docker também é nosso aliado e sim, funciona muito bem com o Flask ou com o Django - acredite, por experiência própria nunca mais quero utilizar máquinas virtuais depois da minha primeira API em Flask.
Além do Docker, ambientes em Cloud devem ser utilizados para a orquestração e gerenciamento das nossas aplicações. O Kubernetes (e os seus K8s) são ideais e o Cientista de Dados passa a conhecer comandos como o incrível 'kubectl get pod'.
E os resultados obtidos da aplicação que está operando o modelo? Como utilizá-los para uma retroalimentar este mesmo modelo afim de realizar um novo treinamento, dessa vez com dados reais de produção?
E o gerenciamento de informação? Podemos utilizar uma collection do MongoDB para isso?
Mongo? De verdade? Mesmo? Hahaha...
A evolução da Ciência de Dados passa sim pelo MLOps!
Escalabilidade, tempo de resposta e disponibilidade da aplicação são pontos importantes que devemos nos preocupar. Para o cliente, o importante é ter a aplicação funcionando e o modelo disponível para utilização.
Portanto sim, é imprescindível que nós, Cientista de Dados, nos tornemos cada vez mais responsáveis por aquilo que criamos. Treinar um modelo pode ser considerado como somente a primeira parte para fazer com que a aplicação como um todo esteja disponível para o cliente e de verdade agregue valor para o negócio.
O MLOps deve sim se tornar mais frequente nas empresas que estão apostando e enxergando a Ciência de Dados como área transformadora dos seus negócios. E cabe a nós, Cientistas de Dados, nos preocupar com a utilização dos nossos modelos.
Do início ao fim!
Data Scientist: CREA-31211/D-DF
5 aMuito importante esse assunto. Parabéns em divulgá-lo