No Nubank, implantar modelos de machine learning em um ambiente de produção construído principalmente em Clojure apresenta desafios e oportunidades únicos. 

Este artigo explora os principais tópicos em torno desse assunto, com foco nos aspectos técnicos da integração de modelos de machine learning em um ambiente Clojure-first.

Continue lendo para saber tudo sobre isso!

O que é software de produção?

Ao implantar software, especialmente em uma instituição financeira como o Nubank, a definição de software de produção vai além do código. Envolve um ecossistema abrangente que inclui:

  • Autenticação: garantindo que apenas serviços autorizados possam se comunicar com o software.
  • Criptografia: protegendo dados sensíveis, como números de identificação pessoal, durante a transmissão.
  • Registro de Logs: mantendo registros detalhados de todas as interações com o software para auxiliar na depuração e auditoria.
  • Testes de integração: verificando se os diferentes componentes de software interagem corretamente no ambiente de produção.
  • Governança: abrangendo a governança de dados (como conformidade com a LGPD) e a gestão geral do ambiente de produção.

Esses elementos são essenciais para criar um ambiente de produção robusto, seguro e em conformidade.

Conheça nossas oportunidades

Padronizando componentes de produção com Clojure como a linguagem principal

Em um ambiente de grande escala como o Nubank, onde várias equipes implantam software, padronizar componentes de produção é fundamental. Essa padronização garante que todas as equipes possam se concentrar em suas tarefas principais sem precisar reinventar soluções para requisitos comuns, como autenticação, criptografia e registro de logs.

No entanto, essa padronização também apresenta desafios ao integrar modelos de machine learning, especialmente quando esses modelos são desenvolvidos em linguagens como Python, que não são nativas do ecossistema Clojure.

O Nubank utiliza predominantemente Clojure para seu código de produção, aproveitando seus recursos robustos e compatibilidade com JVM. O desafio é que muitos componentes padronizados no ecossistema Nubank são escritos especificamente para Clojure, dificultando o uso desses componentes diretamente com modelos escritos em outras linguagens, como Python ou até R.

Uma abordagem inicial para esse desafio foi reescrever componentes essenciais, como autenticação e criptografia, em Python para suportar os modelos de machine learning. Embora isso tenha permitido alguma integração, resultou em altos custos de engenharia e soluções incompletas, uma vez que era difícil acompanhar o rápido ritmo de desenvolvimento no ecossistema Clojure.

O padrão sidecar: uma solução estratégica

Para superar as limitações da abordagem inicial, o Nubank desenvolveu o padrão sidecar. Essa solução arquitetônica envolve a implantação de um serviço em Clojure (o sidecar) ao lado do modelo de machine learning. 

O sidecar lida com todas as interações com a infraestrutura mais ampla, enquanto o modelo de machine learning se concentra apenas em previsões. Algumas das vantagens dessa solução incluem:

  • Redução da duplicação de código: o padrão sidecar elimina a necessidade de reescrever componentes em diferentes linguagens, reduzindo a carga de trabalho de engenharia.
  • Simplificação da implantação de modelos: ao delegar tarefas não essenciais para o sidecar, o modelo de machine learning se torna mais fácil de gerenciar e implantar.
  • Aproveitamento da infraestrutura existente: o padrão sidecar permite que os modelos de machine learning se beneficiem da infraestrutura robusta já estabelecida para os serviços em Clojure no Nubank.

Explorando ONNX para Interoperabilidade

O que é ONNX?

O Open Neural Network Exchange (ONNX) é um formato de código aberto projetado para permitir que modelos de machine learning sejam transferidos facilmente entre diferentes frameworks. Esse formato é particularmente útil para garantir interoperabilidade entre modelos desenvolvidos em diferentes linguagens e ambientes.

ONNX no contexto do Nubank

O Nubank explorou o ONNX como uma solução potencial para integrar modelos de machine learning com a infraestrutura baseada em Clojure existente. O ONNX Runtime, que oferece suporte a várias linguagens de programação, poderia permitir que os modelos de machine learning fossem implantados sem a necessidade do ambiente original no qual foram treinados. Aqui estão alguns dos benefícios desse formato:

  • Compatibilidade entre linguagens: o ONNX permite que modelos treinados em Python, por exemplo, sejam executados em um ambiente Clojure sem reescritas extensivas.
  • Gestão simplificada de dependências: o ONNX reduz a complexidade de gerenciar dependências, particularmente em ambientes de produção, exigindo apenas o ONNX Runtime.
  • Representação canônica de modelos: o ONNX oferece uma maneira padronizada de representar e servir modelos em diferentes implantações, potencialmente reduzindo o tempo de lançamento no mercado para novos modelos.

O futuro da implantação de Machine Learning no Nubank

O Nubank continua explorando soluções inovadoras como o ONNX, enquanto mantém a estabilidade e a robustez de seu ambiente Clojure-first. 

O padrão sidecar continua sendo uma escolha estratégica para integrar modelos de machine learning, com o ONNX sendo considerado para casos de uso específicos em que pode fornecer um valor claro para o negócio.

Ao equilibrar padronização, interoperabilidade e necessidades de negócios, os funcionários do Nubank estão encontrando soluções criativas enquanto permanecem fiéis à base tecnológica da empresa.

É assim que vamos construir o futuro roxo. Isso é trabalhar no Nu!

Conheça nossas oportunidades