Rocket Money x Hugging Face Escalando modelos de aprendizaje automático volátiles en producción

Rocket Money x Hugging Face Scaling volatile machine learning models in production

“Descubrimos que no eran solo proveedores de servicios, sino socios que estaban comprometidos con nuestros objetivos y resultados” – Nicolas Kuzak, Ingeniero ML Senior en Rocket Money.

Escalando y Manteniendo Modelos de ML en Producción sin un Equipo de MLOps

Creamos Rocket Money (una aplicación de finanzas personales anteriormente conocida como Truebill) para ayudar a los usuarios a mejorar su bienestar financiero. Los usuarios vinculan sus cuentas bancarias a la aplicación que luego clasifica y categoriza sus transacciones, identificando patrones recurrentes para proporcionar una vista consolidada y completa de su vida financiera personal. Una etapa crítica del procesamiento de transacciones es detectar comerciantes y servicios conocidos, algunos de los cuales Rocket Money puede cancelar y negociar el costo para los miembros. Esta detección comienza con la transformación de cadenas de transacciones cortas, a menudo truncadas y con formato críptico, en clases que podemos utilizar para enriquecer nuestra experiencia de producto.

El Viaje hacia un Nuevo Sistema

Primero extraímos marcas y productos de las transacciones utilizando normalizadores basados en expresiones regulares. Estos se utilizaron junto con una tabla de decisiones cada vez más intrincada que mapeaba cadenas a marcas correspondientes. Este sistema resultó efectivo durante los primeros cuatro años de la empresa, cuando las clases estaban vinculadas solo a los productos que admitíamos para cancelaciones y negociaciones. Sin embargo, a medida que nuestra base de usuarios creció, la economía de suscripción se disparó y el alcance de nuestro producto aumentó, necesitábamos mantenernos al día con la tasa de nuevas clases al mismo tiempo que ajustábamos las expresiones regulares y evitábamos colisiones y superposiciones. Para abordar esto, exploramos varias soluciones tradicionales de aprendizaje automático (ML), incluido un modelo de bolsa de palabras con una arquitectura de modelo por clase. Este sistema tuvo dificultades para el mantenimiento y el rendimiento y fue archivado.

Decidimos comenzar desde cero, reuniendo tanto un nuevo equipo como un nuevo mandato. Nuestra primera tarea fue acumular datos de entrenamiento y construir un sistema interno desde cero. Utilizamos Retool para construir colas de etiquetado, conjuntos de datos de validación de referencia y herramientas de monitoreo de detección de cambios. Exploramos diferentes topologías de modelos, pero finalmente elegimos una familia de modelos BERT para resolver nuestro problema de clasificación de texto. La mayor parte de las pruebas y evaluaciones iniciales del modelo se realizaron sin conexión dentro de nuestro almacén de GCP. Aquí diseñamos y construimos la telemetría y el sistema que utilizamos para medir el rendimiento de un modelo con más de 4000 clases.

Resolviendo Desafíos y Limitaciones del Dominio mediante la Asociación con Hugging Face

Hay una serie de desafíos únicos que enfrentamos dentro de nuestro dominio, incluida la entropía inyectada por los comerciantes, las empresas de procesamiento/pago, las diferencias institucionales y los cambios en el comportamiento del usuario. Diseñar y construir un rendimiento eficiente del modelo junto con conjuntos de datos de referencia realistas ha demostrado ser un desafío continuo. Otro obstáculo significativo es determinar el número óptimo de clases para nuestro sistema: cada clase representa una cantidad significativa de esfuerzo para crear y mantener. Por lo tanto, debemos considerar el valor que proporciona a los usuarios y a nuestro negocio.

Con un modelo que funciona bien en las pruebas sin conexión y un pequeño equipo de ingenieros de ML, nos enfrentamos a un nuevo desafío: la integración perfecta de ese modelo en nuestro flujo de producción. El sistema regex existente procesaba más de 100 millones de transacciones al mes con una carga muy intensiva, por lo que era crucial tener un sistema de alta disponibilidad que pudiera escalar dinámicamente para cargar y mantener una baja latencia general dentro del flujo de trabajo, junto con un sistema optimizado para los modelos que estábamos utilizando. Como una pequeña startup en ese momento, decidimos comprar en lugar de construir la solución de distribución del modelo. En ese momento, no teníamos experiencia interna en operaciones de modelos y necesitábamos enfocar la energía de nuestros ingenieros de ML en mejorar el rendimiento de los modelos dentro del producto. Con esto en mente, nos embarcamos en la búsqueda de la solución.

Al principio, realizamos una audición de una solución de alojamiento de modelos interna que habíamos estado utilizando para prototipos, comparándola con AWS Sagemaker y la nueva API de alojamiento de modelos de Hugging Face. Dado que utilizamos GCP para el almacenamiento de datos y Google Vertex Pipelines para el entrenamiento de modelos, exportar modelos a AWS Sagemaker era engorroso y propenso a errores. Afortunadamente, la configuración de Hugging Face fue rápida y sencilla, y pudo manejar una pequeña parte del tráfico en una semana. Hugging Face simplemente funcionó desde el principio, y esta reducción de fricción nos llevó a seguir este camino.

Después de un extenso período de evaluación de tres meses, elegimos a Hugging Face para alojar nuestros modelos. Durante este tiempo, aumentamos gradualmente el volumen de transacciones en sus modelos alojados y realizamos numerosas pruebas de carga simuladas basadas en nuestros volúmenes de escenario más adversos. Este proceso nos permitió ajustar nuestro sistema y monitorear el rendimiento, dándonos finalmente confianza en la capacidad de la API de inferencia para manejar nuestras cargas de enriquecimiento de transacciones.

Más allá de las capacidades técnicas, también establecimos una sólida relación con el equipo de Hugging Face. Descubrimos que no solo eran proveedores de servicios, sino socios que estaban comprometidos con nuestros objetivos y resultados. Al principio de nuestra colaboración, establecimos un canal compartido en Slack que resultó invaluable. Nos impresionó especialmente su pronta respuesta a los problemas y su enfoque proactivo para resolverlos. Sus ingenieros y CSMs demostraron constantemente su compromiso con nuestro éxito y su dedicación para hacer las cosas bien. Esto nos dio una capa adicional de confianza cuando llegó el momento de hacer la selección final.

Integración, Evaluación y Selección Final

“En general, la experiencia de trabajar mano a mano con Hugging Face en la implementación del modelo ha sido enriquecedora para nuestro equipo y nos ha infundido la confianza para buscar una mayor escala” – Nicolas Kuzak, Ingeniero ML Senior en Rocket Money.

Una vez firmado el contrato, comenzamos la migración de nuestro sistema basado en expresiones regulares para dirigir una cantidad cada vez mayor de tráfico crítico hacia el modelo de transformador. Internamente, tuvimos que desarrollar nuevas telemetrías tanto para el monitoreo del modelo como para los datos de producción. Dado que este sistema se encuentra en una etapa temprana de la experiencia del producto, cualquier inexactitud en los resultados del modelo podría tener un impacto significativo en las métricas comerciales. Realizamos un experimento exhaustivo en el que los nuevos usuarios se dividieron por igual entre el antiguo sistema y el nuevo modelo. Evaluamos el rendimiento del modelo en conjunto con métricas comerciales más amplias, como la retención y participación de usuarios pagos. El modelo de ML superó claramente en términos de retención, lo que nos llevó a tomar la decisión de escalar el sistema con confianza, primero para nuevos usuarios y luego para usuarios existentes, aumentando al 100% en un período de dos meses.

Con el modelo completamente integrado en el flujo de procesamiento de transacciones, tanto la disponibilidad como la latencia se convirtieron en preocupaciones principales. Muchos de nuestros procesos secundarios dependen de los resultados de clasificación y cualquier complicación puede provocar demoras en los datos o enriquecimiento incompleto, lo que afecta la experiencia del usuario.

El primer año de colaboración entre Rocket Money y Hugging Face no estuvo exento de desafíos. Sin embargo, ambos equipos mostraron una notable resistencia y un compromiso compartido para resolver los problemas a medida que surgían. Una de esas instancias ocurrió cuando ampliamos el número de clases en nuestro segundo modelo de producción, lo que lamentablemente provocó una interrupción del servicio. A pesar de este contratiempo, los equipos perseveraron y logramos evitar la repetición del mismo problema. Otra complicación ocurrió cuando hicimos la transición a un nuevo modelo, pero seguimos recibiendo resultados del modelo anterior debido a problemas de caché en el lado de Hugging Face. Este problema se solucionó rápidamente y no ha vuelto a ocurrir. En general, la experiencia de trabajar mano a mano con Hugging Face en la implementación del modelo ha sido enriquecedora para nuestro equipo y nos ha infundido la confianza para buscar una mayor escala.

Hablando de escala, a medida que comenzamos a presenciar un aumento significativo en el tráfico hacia nuestro modelo, quedó claro que el costo de la inferencia superaría nuestro presupuesto proyectado. Implementamos una capa de caché antes de las llamadas de inferencia que reduce significativamente la cardinalidad de las transacciones e intenta aprovechar inferencias anteriores. Técnicamente, nuestro problema podría lograr una tasa de caché del 93%, pero solo hemos alcanzado el 85% en un entorno de producción. Con el modelo sirviendo el 100% de las predicciones, hemos alcanzado algunos hitos en el lado de Rocket Money: nuestro modelo ha logrado escalar a una tasa de ejecución de más de mil millones de transacciones por mes y manejar el aumento repentino de tráfico a medida que escalamos a la aplicación financiera número uno en la tienda de aplicaciones y al puesto número siete en general, todo mientras mantenemos baja latencia.

Colaboración y Planes Futuros

“El tiempo de actividad y la confianza que tenemos en la API de Inferencia de HuggingFace nos han permitido centrar nuestra energía en el valor generado por los modelos y menos en las tareas operativas y de mantenimiento diario” – Nicolas Kuzak, Ingeniero ML Senior en Rocket Money.

Después del lanzamiento, el equipo interno de Rocket Money ahora se está enfocando tanto en la afinación de clases y rendimiento del modelo, como en la monitorización y sistemas de etiquetado de entrenamiento más automatizados. Agregamos nuevas etiquetas a diario y nos enfrentamos a los desafíos divertidos de la gestión del ciclo de vida del modelo, que incluyen cosas únicas como el cambio de nombre de la empresa y la aparición de nuevas empresas y productos después de que Rocket Companies adquiriera Truebill a finales de 2021.

Constantemente examinamos si tenemos la topología de modelo adecuada para nuestro problema. Si bien los LLMs han estado en las noticias recientemente, hemos luchado por encontrar una implementación que pueda superar a nuestros clasificadores de transformadores especializados en términos de velocidad y costo en este momento. Vemos promesa en los primeros resultados de su uso en la larga cola de servicios (es decir, tiendas pequeñas) – mantén un ojo en eso en una futura versión de Rocket Money. El tiempo de actividad y la confianza que tenemos en la API de Inferencia de HuggingFace nos ha permitido centrar nuestra energía en el valor generado por los modelos y menos en la plomería y la operación diaria. Con la ayuda de Hugging Face, hemos asumido más escala y complejidad dentro de nuestro modelo y los tipos de valor que genera. Su servicio al cliente y soporte han superado nuestras expectativas y son genuinamente un gran socio en nuestro viaje.

Si deseas aprender cómo Hugging Face puede gestionar tus cargas de trabajo de inferencia de ML, contacta al equipo de Hugging Face aquí.

We will continue to update Zepes; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more

Investigación

Investigadores del MIT introducen la técnica de Restart Sampling para mejorar los procesos generativos.

Los modelos generativos profundos basados en ecuaciones diferenciales han surgido recientemente como herramientas de ...

Inteligencia Artificial

Las características de IA SaaS se encuentran con aplicaciones sin fosos

Varias empresas de SaaS han anunciado recientemente características de IA generativa, lo cual representa una amenaza ...

Inteligencia Artificial

Conozca Prompt Diffusion Un marco de inteligencia artificial para permitir el aprendizaje en contexto en modelos generativos basados en difusión

Los modelos de lenguaje grandes de última generación (LLMs), incluyendo BERT, GPT-2, BART, T5, GPT-3 y GPT-4, han sid...

Inteligencia Artificial

Investigadores de Microsoft proponen DeepSpeed-VisualChat Un salto adelante en el entrenamiento de modelos de lenguaje multi-modal escalables.

Los modelos de lenguaje grandes son sistemas de inteligencia artificial sofisticados creados para comprender y produc...

Inteligencia Artificial

La IA escribió un proyecto de ley de vivienda. Los críticos dicen que no es inteligente

Un asambleísta de Queens utilizó un programa de inteligencia artificial para identificar vacíos en la ley de Nueva Yo...

Inteligencia Artificial

Los modelos base Llama 2 de Meta ahora están disponibles en Amazon SageMaker JumpStart

Hoy, nos complace anunciar que los modelos base Llama 2 desarrollados por Meta están disponibles para los clientes a ...