Agile Machine Learning

Flávio Clésio
Data Hackers
Published in
7 min readJun 21, 2020
Fonte: Agile Machine Learning

Ao redor da internet podemos ver em inúmeros sites com tutoriais, projetos de machine learning, papers acadêmicos, e novos pacotes chegando a cada dia; ao passo em que temos cada vez mais projetos que estão usando AI/ML/DS. Contudo, nem em todos os lugares falam sobre como é de fato colocar um projeto de machine learning em produção, e especialmente os principais desafios desse tipo de projeto.

E é esse o assunto que o livro “Agile Machine Learning” de Eric Carter, Matthew Hurst vem trazer dentro de uma perspectiva extremamente prática na qual os autores compartilham a experiência de trabalhar em um projeto de busca do Bing da Microsoft usando machine learning dentro da perspectiva ágil.

Aspectos importantes do livro

Prototipação

Uma das partes que mais chamam atenção de forma positiva no livro é o uso da prototipação nas fases iniciais do projeto pelo time do Microsoft Bing. A heurística de trabalho que eles usavam era de ter uma entrega inicial muito rápida através dos protótipos e iterar por cima ate chegar em um grau de maturação para escalar estes algoritmos ou plataformas. Para isso eles escolhiam ferramentas, tecnologias e heurísticas que inicialmente facilitassem essa entrega (mesmo com todas as ineficiências inerentes) ao invés de inventarem uma abordagem totalmente do zero. Os protótipos não serviam apenas para refinamento, como às vezes poderiam ser usados para experimentos e os dados coletados serviam como forma de validação e correção de curso das idéias do projeto.

Orientado para flexibilidade arquitetural

Uma prática utilizada pelos autores durante a construção da plataforma foi a de reescrita de código de forma frequente. A ideia é que mesmo com essa prática acabe consumindo muitos recursos de desenvolvimento, o processo de reescrita consegue ao longo do tempo adaptar o software a um conjunto novos de requisitos que não necessariamente vão estar ligados com os requerimentos no momento da construção da plataforma. Outra vantagem que eles encontraram é que a reescrita do código funciona para eles como um processo de transferência de conhecimento para novos membros do time, em que estes novos membros aprendem sobre o código, como também novas pessoas com outras perspectivas auxiliam no processo chamado pelos autores de polidez cruzada (cross-pollination) para melhoria das ideias/implementações.

Continuous Deployment of Data

Uma das coisas interessantes do livro é o conceito de Continuous Deployment de dados, tema este que está muito ligado à nova tendência de Machine Learning , em que eles consideram os dados como parte do pipeline de produção não somente no monitoramento de drift dos dados, como também as plataformas incorporam as métricas de performance de modelos e demais sanity checks nos testes de integração, e.g. a acurácia de um modelo tem que obter um percentual x para que o modelo entre em produção, caso contrário, o modelo não é promovido.

Alinhamento com o negócio

O capítulo de alinhamento com o negócio tem um tópico interessante que é sobre o gerenciamento de expectativas. Dado que vivemos em um momento da história em que tecnologias como AI/ML estão em todos os canais de comunicação, é natural que todos os stakeholders tenham uma expectativa alta em relação à adoção destas tecnologias e principalmente o real impacto nos negócios no que diz respeito à alavancagem de resultados. A mensagem que é trazida pelo livro para o gerenciamento dessas expectativas é de entender os limites dessas tecnologias, começar as iterações nos protótipos, e se der certo aí sim escalar; caso não for como o esperado e falhar, o ideal é deixar o projeto de lado o mais rápido possível para não haver desperdício de tempo.

No mesmo capítulo, um tema que eu achei bem interessante foi sobre o custo de uma solução perfeita em muitas das vezes não vale o tempo de trabalho. O livro trás uma reflexão importante de que as vezes uma acurácia alta pode representar custos muito mais altos do que o retorno esperado e que dessa forma, a solução não deve ser adotada.

Simplicidade

A parte de simplicidade tem algumas dicas acionáveis, em especial em relação ao grau de diligência que todas as pessoas do projeto devem ter em relação a especificação/descrição do que deve ser feito. Isso significa que o trabalho deve ser especificado de forma detalhada e com o valor que a estória vai trazer ao seu final. A descrição das estórias não devem ser vagas como por exemplo “treinar algoritmo”, o ideal é que tenha uma especificação junto com o valor que será trazido ao produto, como por exemplo “retreino algoritmo XYZ devido ao concept drift que foi gerado por conta da recente pandemia que levou a uma drástica redução das vendas em XYZ%”.

Uma parte subestimada na maioria das implementações de ML é a parte de integração com as plataformas já existentes, em que os autores preconizam que o ideal é que a integração aconteça ainda na fase inicial dos projetos, dado que essa parte de padrão vai herdar uma miríade de problemas relativos à engenharia de software (e.g. o algoritmo vai ser embutido na plataforma, ou vai serão contratos entre APIs? Monólito ou microserviços? etc.).

O livro faz uma abordagem interessante sobre o aspecto de Boss Management trazendo a tona um personagem muito recorrente em projetos de ML que é o HiPPO (ou, a opinião da pessoa mais bem paga). Aqui o livro das duas dicas simples em que a primeira é de questionar a decisão e perguntar quais são as prioridades (se houver espaço para isto), se possível solicitando os dados que fundamentaram a decisão. Isso ajuda não somente no entendimento da dinâmica corporativa como também faz a transferência da responsabilidade da decisão tomada. A outra dica é de antecipar-se ao HiPPO e discutir a decisão com análises previamente feitas (de forma a surpreender o HiPPO) através da exposição dos pontos de maneira clara e racional.

Existem muito mais pontos interessantes no livro como o estabelecimento de baselines e heurísticas para os modelos de ML, a informação dos limites de ML, observabilidade dos modelos e dos artefatos e prototipação; mas para conferir no detalhe eu recomendo a compra do livro.

Pontos positivos: O principal aspecto positivo do livro é a forma em que conceitos de agilidade são transpostos para problemas específicos de Machine Learning e Data Engineering; como no que diz respeito à parte de CI/CD e monitoramento das mudanças do dados (concept drift), em que os autores chamam esse processo de Continuous Deployment of Data.

Outro aspecto bastante positivo é que o livro é escrito dentro de uma perspectiva de engenharia em que os autores possuem muita experiência com produtos de dados, o que deixa o livro como uma referência única em que não são falados apenas protocolos e rituais gerais do Agile; mas sim um protocolo adaptável e verdadeiramente ágil em que engenharia e produto trabalham juntos na conceitualização e construção dos produtos de dados.

Pontos negativos: Um dos pontos que o livro não deixa muito claro é em relação à parte de análise de dados e feature engineering, tarefas estas que ocupam muito tempo do trabalho de cientistas de dados e que consequentemente ocupam um tempo significativo na Sprint. A visão que fica é que o projeto em que eles trabalharam já chegou quase que totalmente fechado, mais ou menos como se alguém dissesse: “Temos que fazer uma suíte de busca local para competir com a Google ”. Seria interessante ter a visão de como o projeto o foi desenhado e quais análises foram feitas.

Um outro ponto negativo do livro é que em nenhum momento são mencionados aspectos relativos à incerteza de projetos de AI/ML. Isto é plenamente compreensível, pois o livro retrata a jornada ágil dentro de um produto em que já havia uma estratégia e uma pré-validação anterior antes da primeira linha de código se escrita. Isto é compreensível, porém essa falta de reflexão sobre aspectos de incerteza não reflete o universo de algumas empresas que estejam em processo de adoção de AI/ML.

E o último ponto, e eu acho que aqui é mais uma observação geral, é que o livro fala apenas da perspectiva do Scrum e não cita, nem de maneira tangencial, outras metodologias como eXtreme Programming, Kanban, Test Driven Development (TDD), entre outras; mas isso de maneira nenhuma diminui o valor do livro.

Recomendado para:

  • Gerentes de Projetos e Produtos que desejam saber o que é um projeto de ML na prática e todas as suas características;
  • Desenvolvedores e cientistas de dados que desejem aplicar os mesmos paradigmas em seus atuais projetos;
  • Agilistas em geral.

Não recomendado para:

  • Quem quer conhecer como são projetos de ML com outros paradigmas de agilidade como Kanban, XP e afins;
  • Para quem busca uma perspectiva de agilidade e machine learning ligada mais em aspectos de produto (não-técnicos)
  • Quer entender aspectos de incerteza em projetos de ML quando na sua fase de adoção inicial ou validação em termos de valor

Considerações finais

O livro trás uma perspectiva de agilidade de um ponto de vista de engenharia de produto (algo como Product Engineering) dentro do paradigma ágil do Scrum. A experiência dos autores durante o projeto em que eles trabalharam dentro do Microsoft Bing, dá a ideia real de como funciona esse tipo de projeto em que existem inúmeras partes móveis em projetos de dados que devem ser consideradas dentro de um ciclo de desenvolvimento de produtos. Os futuros gerentes de projetos, Product Owners de dados têm um ótimo ponto de partida de referência de como integrar conceitos do Scrum em projetos de machine learning e/ou data engineering.

Ficha Técnica

Título: Agile Machine Learning: Effective Machine Learning Inspired by the Agile Manifesto

Autores: Eric Carter, Matthew Hurst

Lançamento: Agosto de 2019

Linguagem: Inglês

Editora: Apress

--

--

Flávio Clésio
Data Hackers

Father, Son, Brazilian, Machine Learning Engineer, Traveler, Blogger, and Smooth Operator @ flavioclesio.com