MongoDB Atlas y Fireworks AI ofrecen una inferencia más rápida de IA, menores costos y aplicaciones RAG eficientes.
caso de uso: Gen AI, Optimización de Rendimiento del Modelo
Industrias: Servicios financieros
Productos: MongoDB Atlas
emparejar: Fireworks IA, LangChain
Resumen de la solución
Las aplicaciones de IA requieren tanto un alto rendimiento como eficiencia en costos. Las empresas deben optimizar la relación precio/rendimiento para garantizar que las mejoras en velocidad y eficiencia se traduzcan en beneficios de costos. MongoDB y Fireworks IA ofrecen una solución que mejora el rendimiento y reduce los costos. MongoDB maneja la gestión de datos, mientras que Fireworks IA optimiza los modelos. Juntos, mejoran la latencia y el rendimiento mientras minimizan los costos operativos.
Esta solución aborda los siguientes temas:
Métodos para mejorar el rendimiento y reducir Coste total de propiedad (TCO) con MongoDB y Fireworks AI
Estrategias de caching para optimizar RAG con MongoDB Atlas y modelos de IA generativa
Ajuste fino de SLMs de LLMs para un rendimiento más rápido con una calidad de respuesta comparable.
Técnicas de la plataforma Fireworks IA para afinar modelos, acelerar la inferencia y reducir los requisitos de hardware
Un estudio de caso sobre recomendaciones de tarjetas de crédito con mejoras cuantificadas en latencia, uso de memoria y rentabilidad
Mejores prácticas para la implementación y el escalamiento de la producción
Esta solución proporciona estrategias prácticas para mejorar el rendimiento de la IA a un menor costo, respaldadas por ejemplos prácticos y métricas de rendimiento.
MongoDB y Fireworks AI
El esquema flexible, la indexación eficiente y la arquitectura distribuida de MongoDB permiten a las organizaciones escalar su infraestructura de datos según demanda. Combinada con las capacidades de optimización de modelos de Fireworks AI, esta solución mejora el rendimiento de la IA y reduce los costos.
El framework FireOptimizer integra MongoDB con el proceso de ajuste de modelos de Fireworks IA para acelerar la inferencia por lotes a través de los siguientes componentes:
FireAttention: mejora el procesamiento de solicitudes y optimiza la utilización de recursos
Fine tuning eficiente de parámetros: utiliza los métodos LoRA y QLoRA para afinar modelos de manera eficiente con datos de rastreo o etiquetado, lo que reduce los recursos informáticos necesarios.
Figura 1. Arquitectura FireOptimizer para optimización adaptativa e inferencia de alta calidad
Esta solución ofrece los siguientes beneficios:
Velocidad de inferencia mejorada: la ejecución especulativa adaptativa de FireOptimizer proporciona hasta 3x mejoras de latencia para cargas de trabajo en producción.
Optimización automática: FireOptimizer gestiona automáticamente procesos de optimización complejos.
FireOptimizer: Generación de tokens adaptativos
Los modelos de lenguaje de gran tamaño (LLMs) generan salidas un token a la vez, lo que ralentiza las respuestas en salidas largas. La decodificación especulativa acelera este proceso al usar un modelo de borrador más pequeño para generar múltiples candidatos de token mientras la LLM principal procesa. El LLM evalúa y retiene solo las predicciones precisas.
Los modelos tradicionales de borradores entrenados con datos genéricos funcionan bien para tareas generales, pero tienen una precisión menor en dominios especializados como codificación o análisis financiero.
Con Fireworks IA, la ejecución especulativa adaptable mejora este enfoque al utilizar modelos personalizados para dominios específicos o perfiles de usuarios en lugar de modelos genéricos. Esta optimización aumenta la precisión y las tasas de acierto, como del 29% al 76% en la generación de código, reduce los costos de inferencia y proporciona mejoras de latencia de hasta 3veces.
FireAttention: Procesamiento de contexto largo
Las instrucciones largas que utilizan entre 8k y32k de tokens generan cuellos de botella de rendimiento en aplicaciones como el análisis de documentos o la autocompletación de código. FireAttention V2 de Firework IA aborda este desafío proporcionando un procesamiento 12veces más rápido para tareas de contextos largos mediante las siguientes funcionalidades:
Escalado de atención optimizado: reduce la sobrecarga computacional para entradas extensas
Implementación de múltiples hosts: distribuye las cargas de trabajo de manera eficiente entre las GPU
Kernels avanzados: optimizan las operaciones para una ejecución más rápida
FireAttention V3 amplía el soporte a las GPU MI300 de AMD como una alternativa rentable a NVIDIA. Las mejoras de rendimiento incluyen:
1.4x–1.8x mayor rendimiento para modelos como LLaMA 8B y 70B
Hasta 5.5veces más rápido en escenarios de baja latencia
Rendimiento mejorado a través de kernels de atención rediseñados y uso de memoria optimizado
Estas capacidades mejoran el ajuste fino de los SLM al permitir un procesamiento eficiente de la entrada de contexto largo para tareas específicas de dominio. Los mecanismos de atención optimizados reducen la sobrecarga computacional, permiten ciclos de entrenamiento más rápidos y habilitan tamaños de lote mayores en implementaciones GPU de múltiples hosts.
Optimización Adaptativa de Recursos
Las optimizaciones de IA de Fireworks se extienden más allá de la especulación adaptativa a través de tres técnicas que maximizan el rendimiento y la rentabilidad:
Almacenamiento en caché adaptativo: reutiliza cálculos frecuentes para omitir trabajo redundante, lo que reduce la latencia entre un y 30un50% para cargas de trabajo de alto tráfico.
Cuantización personalizable: Equilibra la precisión de 4a8bits con la calidad del modelo, duplicando las velocidades mientras se mantiene más del 99% de precisión para tareas de procesamiento agrupado.
atención desagregada: Personaliza la asignación de hardware al tipo de carga de trabajo alojando varias copias ligeras de modelos o particionando grandes modelos en GPUs para tareas complejas.
Compilar la solución
Los modelos pequeños y eficientes ofrecen oportunidades de ajuste fino para la adaptación especializada al tiempo que mantienen la eficiencia de los recursos. Continúa la investigación para optimizar los SLM en implementaciones en la nube, en el dispositivo y en hardware dedicado.
Las técnicas de ajuste fino incluyen:
Aditivo PEFT
Esta categoría introduce parámetros adicionales entrenables a los modelos preentrenados existentes sin modificar los pesos originales.
Adaptadores: Inserta capas pequeñas y entrenables entre las capas del modelo. Los adaptadores aprenden transformaciones específicas de la tarea sin modificar los parámetros preentrenados.
Prompts suaves: Embeddings vectoriales entrenables adjuntos a secuencias de entrada. Guían el comportamiento del modelo hacia las tareas deseadas.
Ajuste de prefijos: Añade prefijos entrenables a las secuencias de entrada. Los prefijos aprenden información específica de la tarea sin modificar el modelo principal.
Reparametrización PEFT
Este enfoque reparametriza los pesos de los modelos existentes utilizando aproximaciones de bajo rango para reducir los parámetros entrenables.
Adaptación de bajo rango: aproxima las actualizaciones de pesos en las capas de atención utilizando matrices de bajo rango. Esto disminuye los parámetros entrenables.
LoRA cuantizado: Mejora LoRA utilizando técnicas de cuantización, lo que reduce el uso de memoria y los costos computacionales.
Ajuste fino selectivo
Esta categoría ajusta selectivamente parámetros específicos del modelo previamente entrenado, mejorando la eficiencia computacional.
BitFit: ajusta únicamente los términos de sesgo u otros parámetros específicos, mejorando la eficiencia computacional.
DiffPruning: identifica y elimina los parámetros que contribuyen mínimamente al rendimiento del modelo, reduciendo los parámetros entrenables.
Estrategias de congelación de capa
Estas estrategias congelan ciertas capas del modelo previamente entrenado mientras afinan otras, optimizando la adaptación.
Congelar y reconfigurar: Congela capas específicas del modelo y ajusta las capas restantes para optimizar la adaptación.
FishMask: utiliza máscaras para congelar o ajustar selectivamente capas para tareas específicas.
La técnica más popular es PEFT. Las técnicas de PEFT adaptan grandes modelos preentrenados a nuevas tareas ajustando una pequeña fracción de los parámetros. Este enfoque previene el sobreajuste, reduce los requisitos computacionales y de memoria en comparación con un ajuste fino completo y mitiga el olvido catastrófico en los LLM. PEFT permite una personalización eficiente del modelo sin necesidad de un reentrenamiento completo, lo que lo convierte en una opción ideal para entornos con recursos limitados.
Puedes usar técnicas LoRA de PEFT con datos de traza generados a partir de interacciones con el modelo y datos etiquetados, que están explícitamente anotados para tareas, para ajustar modelos más pequeños y obtener un alto rendimiento en tareas específicas sin grandes recursos computacionales.
Para aplicaciones prácticas, este ejemplo utiliza un demo de solicitud de tarjeta de crédito en MongoDB. El demo ilustra MongoDB para calificación crediticia con análisis predictivo, explora resultados de calificación crediticia utilizando IA generativa y realiza recomendaciones de tarjetas de crédito usando RAG con LLMs. Este ejemplo de ajuste fino se centra en simplificar las explicaciones de calificaciones crediticias utilizando LLMs. La aplicación incluye la generación de perfiles de usuario, recomendaciones de productos y reordenamiento con resumen. Encuentra detalles sobre el diseño de la aplicación y el código fuente en la Página de la librería de Soluciones de la Aplicación de Tarjeta de Crédito de MongoDB.
Desafíos y soluciones actuales
Las LLM causan tiempos de respuesta más lentos debido a cálculos complejos sobre miles de millones de parámetros. Las recomendaciones de tarjetas de crédito requieren múltiples queries LLM, lo que resulta en un tiempo total de respuesta de 10 a 20 segundos, siendo que cada query toma 5 segundos o más. Los LLM son difíciles y costosos de implementar y escalar para millones de usuarios.
Pequeños Modelos de Lenguaje: Los SLM ofrecen velocidades de procesamiento más rápidas y eficiencia en costos. Los SLM requieren menos poder de cómputo, lo que los hace adecuados para dispositivos con recursos limitados. Ofrecen respuestas más rápidas y menores costos operativos.
PEFT y LoRA: PEFT y LoRA mejoran la eficiencia al optimizar los subconjuntos de parámetros. Este enfoque reduce los requisitos de memoria y los costos operativos. La integración con MongoDB optimiza el manejo de datos y permite un ajuste eficiente de los modelos.
MongoDB: MongoDB proporciona gestión de datos e integración en tiempo real que mejora la eficiencia operativa. MongoDB almacena datos de trazabilidad como JSON y posibilita una recuperación y almacenamiento eficiente, añadiendo valor a la optimización de modelos. MongoDB actúa como una capa de almacenamiento en caché para evitar solicitudes repetidas de LLM idénticas.
Ajusta un pequeño modelo de lenguaje con Fireworks AI
La demostración de la aplicación de Tarjeta de Crédito explica las puntuaciones de crédito a los clientes en un lenguaje sencillo. Los LLM como LLaMA de Meta 3.1-405B generan estas explicaciones utilizando los parámetros del perfil del usuario, las características de entrada del modelo y la importancia de las características del modelo que predice la calificación o puntuación de crédito del cliente. Los SLMs no pueden lograr consistentemente estas tareas debido a parámetros limitados para un razonamiento y explicación efectivos. Utilice el proceso de ajuste fino con la plataforma de ajuste fino de la IA de Fireworks para lograr el resultado deseado.
El proceso para ajustar un SLM utiliza el siguiente flujo de trabajo:
Figura 2. Proceso de ajuste fino de LLM/SLM
El proceso de ajuste comienza con la recopilación de datos relevantes específicos de cada tarea. La Figura 2 muestra cómo MongoDB Atlas almacena en caché las respuestas LLM/SLM de usuarios específicos según sus datos ingresados en la aplicación de tarjeta de crédito. Los usuarios pueden simular perfiles de crédito en la interfaz web. El siguiente fragmento de código de Python muestra cómo configurar un decorador para almacenar en caché las respuestas LLM/SLM en MongoDB Atlas:
class mdbcache: def __init__(self, function): self.function = function def __call__(self, *args, **kwargs): key = str(args) + str(kwargs) ele = ccol.find_one({"key": key}) if ele: return ele["response"] value = self.function(*args, **kwargs) ccol.insert_one({"key":key, "response": value}) return value def invoke_llm(prompt): """ Invoke the language model with the given prompt with cache. The llm.invoke method can invoke either a LLM or SLM based on the Fireworks Model ID provided at the start of application. Args: prompt (str): The prompt to pass to the LLM. """ response = llm.invoke(prompt) return response
Como se muestra en el diagrama, puedes generar el conjunto de datos de entrenamiento usando un simulador. Este ejemplo simula perfiles de usuarios con un muestreo estratificado para seleccionar muestras iguales para las tres calificaciones crediticias: Buena, Normal y Deficiente. Esta demostración genera alrededor de 1,300 respuestas de muestra.
Transforma las respuestas generadas en el formato que la plataforma de Fireworks IA admite para afinación. Generar el cc_cache.jsonl archivo utilizado en el proceso de ajuste fino ejecutando el siguiente código:
from pymongo import MongoClient import pandas as pd import json client = MongoClient("mongodb+srv://<uid>:<pwd>@bfsi-demo.2wqno.mongodb.net/?retryWrites=true&w=majority") df = pd.DataFrame.from_records(client["bfsi-genai"]["cc_cache"].find({},{"_id": 0})) df["prompt"] = df["key"].apply(lambda x: x.strip('(').strip('"').strip(")").strip("\\")) del df["key"] df["response"] = df["response"].apply(lambda x: x.strip()) df.to_json("cc_cache.jsonl", orient="records", lines=True) # transform cache to messages messages = [] for item in df.iterrows(): messages += [{"messages": [{"role": "user", "content": item["prompt"].strip(" \\")}, {"role": "assistant", "content": item["response"]}]}] with open("cc_cache.jsonl", "w") as f: for item in messages: f.write(json.dumps(item) + "\n")
Después de preparar el conjunto de datos y generar el archivo cc_cache.jsonl, ajusta finamente el modelo preentrenado llama-v3p1-8b-instruct siguiendo los siguientes pasos:
Pasos
Este procedimiento demuestra cómo la integración de MongoDB y Fireworks AI mejora el costo del rendimiento de los modelos de IA.
Después de implementar el modelo en la plataforma Fireworks como una API sin servidor, utiliza el ID del modelo, models/ft-m88hxaga-pi11m, que se muestra en la Figura 2 para invocar el modelo SLM ajustado utilizando tu framework de modelo de lenguaje preferido.
El ajuste fino del SLM para recomendaciones de tarjetas de crédito produce los siguientes resultados:
Mejora del tiempo de respuesta: El tiempo medio de respuesta de LLM es de 5 segundos. Los SLM reducen esto a aproximadamente 0.15 segundos, proporcionando una reducción de latencia de 19veces.
import time class tiktok: """ Decorator to time the execution of a function and log the time taken. """ def __init__(self, function): self.function = function def __call__(self, *args, **kwargs): import time start = time.time() value = self.function(*args, **kwargs) end = time.time() print(f"Time taken for {self.function.__name__}: {end - start} seconds") return value def invoke_llm(prompt): """ Invoke the language model with the given prompt with cache. The invoke LLM method can invoke either a LLM or SLM based on the Fireworks Model ID initialized. Args: prompt (str): The prompt to pass to the LLM. """ ... ModeloTiempo de inferencia 1 (s)Tiempo de inferencia 2 (s)Tiempo de inferencia 3 (s)Tiempo promedio (s)llama-v3p1-405b-instruct
5.5954
7.5936
4.9121
6.0337
SLM - llama ajustada a3p1-8b
0.3554
0.0480
0.0473
0.1502
Reducción de memoria: Los LLM suelen requerir 8x80GB de VRAM. Los SLM funcionan con 16 GB de VRAM, lo que reduce el uso de memoria en 97.5un %.
Reducción de hardware: Los modelos de lenguaje grandes requieren GPUs de alta gama o múltiples servidores. Los modelos de lenguaje pequeños pueden implementarse en CPUs estándar o servidores individuales, reduciendo los costos de hardware.
Lecciones clave
Reducción del costo total de propiedad: las técnicas LoRA y QLoRA reducen los requisitos computacionales para la optimización fina de SLM. La arquitectura distribuida y la indexación eficiente de MongoDB escalan la infraestructura de datos bajo demanda, minimizando los costos de almacenamiento y reduciendo los gastos operativos.
Optimice los flujos de trabajo de datos y de IA: MongoDB permite la integración de datos en tiempo real para modelos de IA. La integración con las herramientas de ajuste fino de Fireworks IA crea flujos de trabajo que mantienen los modelos actualizados y mejoran la precisión en la toma de decisiones.
Mejore las soluciones RAG: MongoDB Atlas y Fireworks IA se combinan para crear marcos RAG con mejor almacenamiento y recuperación de datos. MongoDB Atlas proporciona almacenamiento escalable de embebidos mientras que Fireworks IA ofrece alojamiento gestionado LLM/SLM.
Autores
Wei You Pan, MongoDB
Ashwin Gangadhar, MongoDB
Peyman Parsi, MongoDB
Benny Chen, Fireworks IA
Ayaan Momin, IA de fuegos artificiales
Obtén más información
FireAttention V2: Mejora la eficiencia del procesamiento de contexto largo durante la inferencia, proporcionando un procesamiento hasta 12veces más rápido
FireAttention V3: Permite el uso de hardware AMD para la inferencia con GPU, ampliando las opciones de hardware y reduciendo costes
FireOptimizer: Personaliza la latencia y la calidad para cargas de trabajo de inferencia en producción