En Nubank, desplegar modelos de machine learning en un entorno de producción construido principalmente sobre Clojure presenta desafíos y oportunidades únicos. 

Este artículo explora los temas clave alrededor de este asunto, centrándose en los aspectos técnicos de integrar modelos de machine learning dentro de un entorno centrado en Clojure. 

¡Sigue leyendo y descúbrelo todo!

¿Qué es el software en producción?

Cuando se despliega software, especialmente en una institución financiera como Nubank, la definición de software en producción va más allá del código. Involucra un ecosistema integral que incluye:

  • Autenticación: asegurando que solo los servicios autorizados puedan comunicarse con el software.
  • Encriptación: protegiendo datos sensibles, como números de identificación personal, durante la transmisión.
  • Registro de logs: manteniendo un registro detallado de todas las interacciones con el software para ayudar en la depuración y auditoría.
  • Pruebas de integración: verificando que diferentes componentes del software interactúen correctamente en el entorno de producción.
  • Gobernanza: abarcando la gobernanza de datos (como el cumplimiento de la LGPD) y la gestión del entorno de producción en general.

Estos elementos son esenciales para crear un entorno de producción robusto, seguro y conforme a las normativas.

Descubre las oportunidades

Estandarización de componentes de producción con Clojure como lenguaje principal

En un entorno a gran escala como Nubank, donde múltiples equipos despliegan software, estandarizar los componentes de producción es crucial. Esta estandarización asegura que todos los equipos puedan centrarse en sus tareas principales sin tener que reinventar la rueda para requisitos comunes como autenticación, encriptación y registro de logs.

Sin embargo, esta estandarización también plantea desafíos al integrar modelos de machine learning, especialmente cuando estos modelos se desarrollan en lenguajes como Python, que no son nativos del ecosistema de Clojure.

Nubank utiliza predominantemente Clojure para su código de producción, aprovechando sus características robustas y la compatibilidad con la JVM. El desafío es que muchos componentes estandarizados en el ecosistema de Nubank están escritos específicamente para Clojure, lo que dificulta reutilizar estos componentes directamente con modelos escritos en otros lenguajes, como Python o incluso R.

Una de las primeras soluciones a este desafío fue reescribir componentes esenciales como la autenticación y la encriptación en Python para soportar modelos de machine learning. Si bien esto permitió cierta integración, resultó en altos costos de ingeniería y soluciones incompletas, ya que era difícil mantener el ritmo del rápido desarrollo en el ecosistema de Clojure.

La norma sidecar: una solución estratégica

Para superar las limitaciones del enfoque inicial, Nubank desarrolló el patrón sidecar. Esta solución arquitectónica implica desplegar un servicio en Clojure (el sidecar) junto al modelo de machine learning.

El sidecar maneja todas las interacciones con la infraestructura general, mientras que el modelo de machine learning se centra únicamente en las predicciones. Algunas de las ventajas de esta solución incluyen:

  • Reducción de duplicación de código: el patrón sidecar elimina la necesidad de reescribir componentes en diferentes lenguajes, reduciendo la carga de trabajo de ingeniería.
  • Simplificación del despliegue de modelos: al descargar tareas no esenciales en el sidecar, el modelo de machine learning se vuelve más fácil de gestionar y desplegar.
  • Aprovechamiento de la infraestructura existente: el patrón sidecar permite que los modelos de machine learning se beneficien de la infraestructura robusta ya establecida para los servicios en Clojure en Nubank.

Explorando ONNX para la interoperabilidad

¿Qué es ONNX?  

El Open Neural Network Exchange (ONNX) es un formato de código abierto diseñado para permitir que los modelos de machine learning se transfieran fácilmente entre diferentes marcos. Este formato es particularmente útil para asegurar la interoperabilidad entre modelos desarrollados en diferentes lenguajes y entornos.

ONNX en el contexto de Nubank

Nubank exploró ONNX como una solución potencial para integrar modelos de machine learning con la infraestructura existente basada en Clojure. El runtime de ONNX, que soporta múltiples lenguajes de programación, podría permitir que los modelos de machine learning se desplieguen sin necesidad del entorno original en el que fueron entrenados. Algunos de los beneficios de este formato incluyen:

  • Compatibilidad entre lenguajes: ONNX permite que los modelos entrenados en Python, por ejemplo, se ejecuten en un entorno de Clojure sin grandes reescrituras.
  • Gestión simplificada de dependencias: ONNX reduce la complejidad de la gestión de dependencias, particularmente en entornos de producción, al requerir únicamente el runtime de ONNX.
  • Representación canónica de modelos: ONNX proporciona una forma estandarizada de representar y servir modelos en diferentes implementaciones, lo que potencialmente reduce el tiempo de comercialización de nuevos modelos.

El futuro del despliegue de Machine Learning en Nubank

Nubank continúa explorando soluciones innovadoras como ONNX, mientras mantiene la estabilidad y robustez de su entorno centrado en Clojure.

El patrón sidecar sigue siendo una opción estratégica para la integración de modelos de machine learning, mientras que ONNX se considera para casos de uso específicos donde pueda aportar un claro valor empresarial.

Al equilibrar la estandarización, la interoperabilidad y las necesidades del negocio, los empleados de Nubank están encontrando soluciones creativas sin perder de vista la base tecnológica de la compañía. Así es como vamos a construir el futuro morado. ¡Así es trabajar en Nu!

Descubre las oportunidades