Já parou para pensar como funciona uma empresa que oferece soluções de Inteligência Artificial para diversos setores e contextos diferentes? Esse é o caso da Hop AI. Neste artigo, vamos abordar o nosso stack tecnológico e discutir um pouco sobre como essas soluções são desenvolvidas.
A importância da qualidade dos dados e as tecnologias adotadas
É consenso no universo das soluções de inteligência artificial que a qualidade da sua solução depende muito da qualidade dos dados trabalhados. Tendo isso em mente, é importante definir um conjunto de ferramentas para lidar com dados, a fim de atender diferentes workloads e necessidades
Cada cliente apresenta um tipo de processamento diferente. Alguns vão processar fluxos contínuos de dados em tempo real, enquanto outros realizarão o processamento em lotes, em intervalos de tempo pré-definidos. Há aqueles que geram muitos eventos leves por minuto, e outros que produzem poucos eventos, mas com volumes massivos de dados.
Atualmente, na Hop AI, adotamos cinco tecnologias diferentes para lidar com dados: MongoDB, Postgres, Redis, Kafka e Object Storages (IBM Cloud Object Storage ou Amazon S3). O MongoDB é onde armazenamos grande parte das informações das soluções, devido à sua flexibilidade de esquema e capacidade de lidar com workloads que mesclam leitura e escrita com altas taxas de operação.
O Postgres é sempre útil para armazenarmos informações de negócio com natureza relacional. O Redis é utilizado como cache para operações que ocorrem frequentemente ou possuem requisitos rígidos de latência de resposta. O Kafka é nosso preferido para processamento de fluxos de dados contínuos, sendo ideal para soluções que precisam fornecer previsões em tempo real ou próximo, graças à sua capacidade inquestionável de lidar com altos volumes e baixíssima latência. Por fim, o Object Storage é onde armazenamos nossos dados mais volumosos, aqueles com uma taxa de acesso menor, mas que ocupam bastante espaço. Nele, também guardamos dados mais “crus”, adquiridos diretamente da fonte.
Python: A linguagem de programação escolhida para trabalhar com IA na Hop AI
Com os dados organizados e curados é hora de falar sobre as ferramentas que utilizamos para transformá-los em poderosas previsões. Nesse contexto, Python é a linguagem escolhida por nós como base de todo trabalho, por alguns motivos como: popularidade, comunidade ativa, diversidade bibliotecas e desempenho. Indo um pouco além, cada cliente da Hop AI possui um problema diferente que precisamos antes de mais nada definir uma estratégia canónica para abordarmos, isso exige flexibilidade por parte do nosso stack para que possamos trabalhar com diferentes tipos de problemas.
Problemas de otimização de processos, como o melhor forma de precificar ou definir o momento de parada de uma máquina para manutenção, são comumente implementados utilizando a biblioteca de aprendizado por reforço da OpenAI Gymnasium, ela possui uma implementação elegante e extensível que facilita a caracterização de cenários dos clientes de forma clara e objetiva.
Para séries temporais temos conseguido excelentes resultados utilizando a biblioteca do Facebook Prophet e a utilizamos em problemas similares à quanto vamos vender daqui 15 dias? No mês de agosto, quanto nosso cliente consegue comprar? Claro, que os clássicos problemas de classificação e regressão também fazem parte do nosso dia a dia e para eles possuímos um universo maior de soluções e a solução ideal vai depender muito do contexto do problema e tipo de dados de entrada, para eles variam desde das básicas implementações do scikit-learn até ferramentas mais poderosas como Tensorflow e PyTorch.
Integrando IA com outros componentes da solução: simulações, monitoramento e métricas
Claro que nenhuma solução de IA vive sozinha no vácuo. Uma analogia válida aqui e que repetimos com frequência é: a IA é o motor da solução, e como nos carros, quase não vemos o motor temos contatos com vários outros itens. Esses outros itens seriam os demais componentes da solução que vão variar de uma interface para simulações, onde o usuário pode entrar com parâmetros exógenos aos modelos e a partir desse estímulo ter uma visão das consequências da ação no futuro, ou até o monitoramento do que está sendo processado e suas métricas.
Para isso usamos um conjunto de soluções diferentes, desde soluções existentes dentro dos provedores de cloud a para monitorar indicadores de modelos até a construção de um sistema completamente novo. Como dito anteriormente, nossos modelos uma vez em produção estão sempre produzindo métricas que precisam ser monitoradas, nosso queridinho nesse contexto é o Metabase, uma solução simples e amigável que utilizamos para entregar a saúde das inúmeras métricas que sistemas complexos possuem.
Nessa altura, já deve ter ficado claro que a Hop AI também tem uma política multicloud de deploy. Uma vez que essa, também é uma variável que muda completamente de cliente para cliente. Por isso, todas nossas soluções são completamente independentes de fornecedores e não geram nenhuma espécie de lockin.
Vou deixar para uma próxima falarmos de metodologia de trabalho e as ferramentas que usamos no processo de engenharia por trás disso tudo.
AUTOR
Tiago Moura
CTO, Hop AI
QUER SABER MAIS SOBRE A HOP AI?
Leia mais sobre quem é a Hop AI, nossa história e conquistas. Acesse essa página e entre em contato.