Conozca LLMRouter: un sistema de enrutamiento inteligente diseñado para optimizar la inferencia de LLM seleccionando dinámicamente el modelo más adecuado para cada consulta

LLMRouter es una biblioteca de enrutamiento de código abierto del U Lab de la Universidad de Illinois Urbana Champaign que trata la selección de modelos como un problema de sistema de primera clase. Se ubica entre aplicaciones y un grupo de LLM y elige un modelo para cada consulta en función de la complejidad de la tarea, los objetivos de calidad y el costo, todo expuesto a través de una API y CLI de Python unificadas. El proyecto incluye más de 16 modelos de enrutamiento, un canal de generación de datos en 11 puntos de referencia y un sistema de complementos para enrutadores personalizados.

Familias de enrutadores y modelos compatibles

LLMRouter organiza los algoritmos de enrutamiento en cuatro familias: enrutadores de ronda única, enrutadores de ronda múltiple, enrutadores personalizados y enrutadores agentes. Los enrutadores de ronda única incluyen knnrouter, svmrouter, mlprouter, mfrouter, elorouter, routerdc, automix, hybrid_llm, graphrouter, causallm_router y las líneas de base más pequeña_llm y más grande_llm. Estos modelos implementan estrategias como k vecinos más cercanos, máquinas de vectores de soporte, perceptrones multicapa, factorización matricial, clasificación Elo, aprendizaje contrastivo dual, mezcla automática de modelos y enrutamiento basado en gráficos.

El enrutamiento de rondas múltiples se expone a través de router_r1, una instancia previamente entrenada del enrutador R1 integrada en LLMRouter. El enrutador R1 formula enrutamiento y agregación de LLM múltiples como un proceso de decisión secuencial donde el enrutador en sí es un LLM que alterna entre pasos de razonamiento interno y llamadas de modelo externo. Se entrena con aprendizaje por refuerzo utilizando una recompensa basada en reglas que equilibra el formato, el resultado y el costo. En LLMRouter, router_r1 está disponible como un destino de instalación adicional con dependencias fijadas probadas en vllm==0.6.3 y torch==2.4.0.

El enrutamiento personalizado es manejado por gmtrouter, descrito como un enrutador personalizado basado en gráficos con aprendizaje de preferencias del usuario. GMTRouter representa las interacciones LLM de usuarios de múltiples turnos como un gráfico heterogéneo sobre usuarios, consultas, respuestas y modelos. Ejecuta una arquitectura de paso de mensajes sobre este gráfico para inferir las preferencias de enrutamiento específicas del usuario a partir de unos pocos datos de interacción de disparos, y los experimentos muestran mejoras en la precisión y el AUC con respecto a líneas de base no personalizadas.

Los enrutadores agentes en LLMRouter extienden el enrutamiento a flujos de trabajo de razonamiento de varios pasos. knnmultiroundrouter utiliza el razonamiento del vecino más cercano k sobre trazas de múltiples vueltas y está diseñado para tareas complejas. llmmultiroundrouter expone un enrutador agente basado en LLM que realiza enrutamiento de varios pasos sin su propio bucle de entrenamiento. Estos enrutadores agentes comparten la misma configuración y formatos de datos que las otras familias de enrutadores y se pueden intercambiar mediante un único indicador CLI.

Canal de generación de datos para enrutar conjuntos de datos

LLMRouter se envía con un proceso completo de generación de datos que convierte los puntos de referencia estándar y los resultados de LLM en conjuntos de datos de enrutamiento. La canalización admite 11 puntos de referencia: Natural QA, Trivia QA, MMLU, GPQA, MBPP, HumanEval, GSM8K, CommonsenseQA, MATH, OpenBookQA y ARC Challenge. Se ejecuta en tres etapas explícitas. Primero, data_generación.py extrae consultas y etiquetas de verdad del terreno y crea divisiones JSONL de entrenamiento y prueba. En segundo lugar, generate_llm_embeddings.py crea incrustaciones para candidatos a LLM a partir de metadatos. En tercer lugar, api_calling_evaluación.py llama a las API de LLM, evalúa las respuestas y fusiona puntuaciones con incrustaciones en registros de enrutamiento. (GitHub)

La canalización genera archivos de consulta, JSON de incrustación de LLM, tensores de incrustación de consultas y archivos JSONL de datos de enrutamiento. Una entrada de enrutamiento incluye campos como nombre_tarea, consulta, verdad_terreno, métrica, nombre_modelo, respuesta, rendimiento, id_incrustación y núm_token. La configuración se maneja completamente a través de YAML, por lo que los ingenieros dirigen los scripts a nuevos conjuntos de datos y listas de modelos candidatos sin modificar el código.

Interfaz de chat y sistema de complementos

Para uso interactivo, llmrouter chat lanza una interfaz de chat basada en Gradio sobre cualquier enrutador y configuración. El servidor puede vincularse a un host y puerto personalizados y puede exponer un enlace público para compartir. Los modos de consulta controlan cómo el enrutamiento ve el contexto. current_only usa solo el último mensaje del usuario, full_context concatena el historial de diálogo y la recuperación aumenta la consulta con las k consultas históricas similares principales. La interfaz de usuario visualiza las opciones de modelo en tiempo real y está impulsada por la misma configuración del enrutador utilizada para la inferencia por lotes.

LLMRouter también proporciona un sistema de complementos para enrutadores personalizados. Los nuevos enrutadores se encuentran en custom_routers, la subclase MetaRouter e implementan route_single y route_batch. Los archivos de configuración en ese directorio definen rutas de datos, hiperparámetros y puntos finales de API predeterminados opcionales. El descubrimiento de complementos escanea la carpeta custom_routers del proyecto, un directorio ~/.llmrouter/plugins y cualquier ruta adicional en la variable de entorno LLMROUTER_PLUGINS. Los ejemplos de enrutadores personalizados incluyen randomrouter, que selecciona un modelo al azar, y umbralrouter, que es un enrutador entrenable que estima la dificultad de la consulta.

Conclusiones clave

Enrutamiento como abstracción de primera clase: LLMRouter es una capa de enrutamiento de código abierto de UIUC que se ubica entre aplicaciones y grupos LLM heterogéneos y centraliza la selección de modelos como una tarea de predicción consciente del costo y la calidad en lugar de scripts ad hoc. Cuatro familias de enrutadores que cubren más de 16 algoritmos: la biblioteca estandariza más de 16 enrutadores en cuatro familias: ronda única, ronda múltiple, personalizada y agente, incluidos knnrouter, graphrouter, routerdc, router_r1 y gmtrouter, todos expuestos a través de una configuración unificada y CLI. Enrutamiento RL de múltiples rondas a través del enrutador R1: router_r1 integra el marco del enrutador R1, donde un enrutador LLM intercala pasos de “pensamiento” internos con llamadas de “ruta” externas y se entrena con una recompensa basada en reglas que combina formato, resultado y costo para optimizar las compensaciones de costos de rendimiento. Personalización basada en gráficos con GMTRouter: gmtrouter modela usuarios, consultas, respuestas y LLM como nodos en un gráfico heterogéneo y utiliza el paso de mensajes para conocer las preferencias de enrutamiento específicas del usuario a partir de pocos historiales de disparos, logrando ganancias de precisión de hasta alrededor del 21 % y mejoras sustanciales en el AUC sobre líneas de base sólidas. Canalización y extensibilidad de extremo a extremo: LLMRouter proporciona una canalización de datos impulsada por puntos de referencia, CLI para entrenamiento e inferencia, una interfaz de usuario de chat Gradio, manejo centralizado de claves API y un sistema de complementos basado en MetaRouter que permite a los equipos registrar enrutadores personalizados mientras reutilizan los mismos conjuntos de datos de enrutamiento e infraestructura.

Consulte el repositorio de GitHub y los detalles técnicos. Además, no dude en seguirnos en Twitter y no olvide unirse a nuestro SubReddit de más de 100.000 ML y suscribirse a nuestro boletín. ¡Esperar! estas en telegrama? Ahora también puedes unirte a nosotros en Telegram.

Asif Razzaq es el director ejecutivo de Marktechpost Media Inc.. Como empresario e ingeniero visionario, Asif está comprometido a aprovechar el potencial de la inteligencia artificial para el bien social. Su esfuerzo más reciente es el lanzamiento de una plataforma de medios de inteligencia artificial, Marktechpost, que se destaca por su cobertura en profundidad del aprendizaje automático y las noticias sobre aprendizaje profundo que es técnicamente sólida y fácilmente comprensible para una amplia audiencia. La plataforma cuenta con más de 2 millones de visitas mensuales, lo que ilustra su popularidad entre el público.