Um modelo de machine learning (ML) só tem valor para o negócio se for colocado em produção. Entretanto, o que vemos na maioria das vezes nos cursos e nas palestras são exemplos de modelos ainda em protótipos, em ambientes de experimentação. A maioria dos cursos de inteligência artificial (IA) não aborda o tema com profundidade, concentrando sua atenção nos modelos em si e nas técnicas de treinamento. Os desafios de colocá-los em produção é abordado de forma superficial.

Colocar um modelo de ML em produção significa que ele terá que se integrar a outros sistemas, pois dificilmente o modelo vai operar de forma isolada; ter um interface com usuário que seja adequado; ser monitorado continuamente para desempenho e ajustes quando ao seu nível de assertividade ao longo do tempo; ser auditado para evitar contaminação por vieses; garantir que o modelo seja cercado de medidas de proteção para evitar ataques que possam danificá-lo e que os dados que ele utiliza estejam aderentes às regulações e regras de privacidade e compliance. Além disso, é claro, deve atender aos princípios de “AI responsible”.

Não é só isso! À medida que você for obtendo experiência com projetos de IA vai aprender que os prazos para suas iniciativas de IA são muito mais incertos do que os que você está acostumado, como no desenvolvimento de software tradicional. Os sistemas de IA não podem ser desenvolvidos de forma linear, desenvolvidos de uma vez, testados e implantados. Normalmente, são necessários vários ciclos de treinamento para identificar uma combinação adequada de dados, arquitetura de rede e 'hiperparâmetros' (as variáveis que definem como um sistema aprende).

Essa dinâmica varia de acordo com o domínio e a natureza do problema e os dados disponíveis. Portanto, pode ser um desafio prever ou automatizar iniciativas de IA, a menos que sejam muito similares aos projetos que você já realizou anteriormente. Além disso, precisamos ter confiança que não temos anomalias.

Diferentemente da computação programática onde o software responde diretamente ao desenvolvedor que coloca todas as instruções em linhas de código e caso a resposta não seja correta, você depura e conserta o código, a IA interpreta dados com seus algoritmos e daí toma suas decisões.

Nos algoritmos não supervisionados, não sabemos se a resposta está certa ou errada, pois a resposta pode ser algo que nós humanos não havíamos percebido e a máquina identificou como um padrão e gerou sua decisão a partir desta constatação. A máquina pode gerar resultados surpreendentes, que nós jamais imaginaríamos.

Mas, então, o que significa colocar em produção, “fazer o deployment” de um modelo? Para entender o que significa o “deployment” um modelo de ML, precisamos entender o ciclo de vida de um projeto de IA. Tudo começa quando a empresa identifica algumas necessidades e entende que um modelo de ML poderá ser usado para resolver esse problema.

Para entender o que significa o “deployment” um modelo de ML, precisamos entender o ciclo de vida de um projeto de IA

Isso pode envolver a criação de um novo produto ou o aprimoramento de um produto existente. Assim, antes de começar é necessário definir as metas do projeto, como os níveis mínimos de assertividade que serão aceitos (taxa de acerto de 85% é aceitável?), escolhendo as métricas e validando se existem os dados adequados para treinamento e validação.

O objetivo é construir um modelo cujo nível de desempenho preditivo atenda ou exceda os objetivos estabelecidos nas fases de ideação e planejamento. Durante os estágios iniciais de desenvolvimento, as necessidades dos usuários que motivaram esse projeto ainda não são atendidas. Um modelo de ML só agrega valor a uma organização quando as informações desse modelo se tornam rotineiramente disponíveis para os usuários para os quais foram criados.

A implantação ou “deployment” é totalmente diferente das tarefas rotineiras de aprendizado de máquina, como seleção e avaliação de modelos. Colocar em produção implica em saber com que frequência as previsões devem ser geradas, se as previsões devem ser geradas para uma amostra de dados de cada vez ou para um lote de amostras, o número de aplicativos e sistemas que acessarão o modelo e os requisitos de latência desses aplicativos. Se estas demandas não forem definidas no início do projeto, podemos descobrir depois de um grande esforço que o modelo funciona muito bem, mas a sua latência não atende à demanda dos usuários. É um modelo inútil.

O modelo não vai funcionar de forma isolada e assim ele deverá ter interfaces com diversos sistemas e aplicativos. Encapsular e criar APIs para fornecer inputs e obter resultados do modelo é outro aspecto fundamental do sistema de ML. Chamamos a atenção aqui para o fato que um sistema desses não é construído apenas por “ML engineers”, mas temos a necessidade da criação de uma equipe multidisciplinar. Outros profissionais, como desenvolvedores com expertise na criação e gerenciamento de APIs, bem como representantes dos setores usuários, que conheçam profundamente as demandas, devem fazer parte do projeto.

As questões de desempenho estão relacionadas com a complexidade do modelo e com à sua demanda. O modelo será usado em processamentos batch ou o acesso será online, quase tempo real? A demanda por capacidade computacional e os recursos tecnológicos envolvidos devem ser cuidadosamente analisados e validados para garantir que os requisitos de latência dos usuários sejam atendidos. Um acesso via um app que demore minutos é totalmente inviável. A reposta deve ser instantânea. Os usuários hoje não aceitam demoras nas suas solicitações aos apps.

Um sistema de ML colocado em produção é diferente de um ERP tradicional, por exemplo. Neste último, assim que ele se torna operacional, você o deixa quieto, sem tocar mais nele. “Não mexa, se mexer estraga”! Já em ML, depois que um modelo é implantado, seu comportamento deve ser monitorado. Espera-se naturalmente que o desempenho preditivo de um modelo diminua com o tempo à medida que o ambiente muda.

Um sistema de ML colocado em produção é diferente de um ERP tradicional

Esse fenômeno, conhecido como “concept drift”, ocorre quando as distribuições dos recursos de entrada se afastam da distribuição na qual o modelo foi originalmente treinado. Ou sejam, os dados que foram usados para treinar o modelo são agora diferentes do contexto real dos dados que entram para o modelo operar.

Uma vez detectado este desvio, ele pode ser reajustado treinando novamente os modelos de aprendizado de máquina. Mas detectar a deriva através do monitoramento é difícil, às vezes só sendo observado após dias, semanas ou meses de sua entrada em operação. Uma estratégia para esse monitoramento é usar uma métrica de um modelo implantado que possa ser medido ao longo do tempo.

Por exemplo, medir a distribuição de saída pode ser útil para detectar desvios, mesmo quando a saída real não está disponível em tempo hábil. A distribuição observada pode ser comparada à distribuição de saída do treinamento, e os alertas podem notificar os responsáveis pelo modelo quando esses valores divergirem.

Pois é, vimos apenas alguns cuidados que devem ser tomados quando desenvolvemos projetos de ML. Isso sinaliza que sair de um ambiente controlado e isolado, e colocar um sistema destes em produção não é tão simples assim.

Finalizamos o texto e recomendações com alguns “take aways”:

- Foco na formulação do problema de negócios. O primeiro passo para agregar valor é o foco no problema de negócios que você deseja resolver. Você pode definir claramente o problema? Quem são os usuários que você deseja melhorar a experiência? Esses usuários querem o que você planeja desenvolver? É importante se perguntar se você pode criar esta experiência para o usuário sem o uso de um modelo de ML/DL antes de se comprometer com a construção dele. Se você não precisa realmente de um modelo complexo, para que desenvolvê-lo?

Garantir que o projeto está aderente aos princípios de “AI responsible”, atendendo aos compromissos da organização com ética, privacidade, “fairness” e aberto à auditoria. O fato de podermos usar IA não significa que devemos usar IA se estes princípios não forem atendidos.

- Monte uma equipe adequada. Depois de formular claramente o problema e decidir que um modelo de ML é necessário, você deve montar uma equipe. Os cientistas de dados não podem criar produtos por conta própria. Você precisa montar uma equipe com diversas habilidades para criar um produto entregável. Diferentes profissionais precisam trabalhar juntos desde o estágio de planejamento até a implementação.

- Quantifique o custo dos erros de resultados do modelo. Depois de definir o problema e montar uma equipe, é hora de começar a definir o escopo do trabalho técnico. Para um problema de ML, a parte mais importante desta preparação é planejar as inevitáveis previsões incorretas. Quando possível, as equipes devem atribuir valores a cada tipo de erro e assim ajudar a avaliar a viabilidade ou não do projeto.

- Monitorar. Depois de implantar seus modelos na produção, o trabalho não termina. Os modelos devem ser monitorados continuamente para detectar e combater desvios na qualidade do modelo, como “concept drift”. A detecção precoce e proativa desses desvios permite que você tome ações corretivas, como reciclagem de modelos, auditoria de sistemas ou correção de problemas de qualidade de dados.

Em resumo, antes de investir tempo e dinheiro em IA, você precisa de uma estratégia para orientar sua utilização. Sem uma estratégia de IA, a IA se tornará um custo adicional que não fornecerá um adequado retorno do investimento. As iniciativas de IA não devem ser feitas pelo modismo (“todos estão fazendo”) mas com objetivos bem claros para resolução de problemas de negócio.

As iniciativas de IA não devem ser feitas pelo modismo, mas com objetivos bem claros para resolução de problemas de negócio

Esteja atento às suas limitações, e separe os mitos da realidade. Não existem soluções “plug-and-play” que magicamente funcionam do nada, sem uma, às vezes longa e exaustiva fase de treinamento do algoritmo aos seus dados; não esqueça que nem tudo pode e deve ser resolvido através da IA; estude e se aprofunde nos conceitos, potencialidades e limitações da IA;  priorize seus projetos de IA baseados no valor a ser gerado e na sua viabilidade (existem dados para possibilitar treinamento do algoritmo?); assegure-se que você tem equipe preparada (“ML engineers” não são colhidos em árvores); e reserve budget adequado para seu desenvolvimento e contínuo refinamento.

O treinamento dos algoritmos pode demandar muito tempo e a implementação do sistema pode demandar grandes recursos computacionais. No mais, boa sorte e colha bons resultados!