Los mecanismos de indicación avanzados, el flujo de control, el contacto con entornos externos, muchas llamadas de generación encadenadas y actividades complejas están ampliando la utilización de los modelos de lenguaje grande (LLM). Por otra parte, faltan métodos eficaces para desarrollar y ejecutar dichos programas. LMSYS ORG presenta SGLang, un lenguaje de generación estructurado para LLM que colabora en la arquitectura tanto del sistema de ejecución backend como de los lenguajes frontend. SGLang mejora las interacciones con los LLM, haciéndolas más rápidas y controlables.
Backend: Reutilización automática de caché KV con RadixAttention
Para aprovechar estas oportunidades de reutilización sistemáticamente, el equipo proporciona RadixAttention, un nuevo método automático de reutilización de caché KV mientras se ejecuta. La caché KV no se elimina del árbol de base cuando se completa una solicitud de generación; se conserva tanto para los resultados de generación como para las indicaciones. Esta estructura de datos hace posible la búsqueda, inserción y desalojo eficiente de prefijos. Para mejorar la tasa de aciertos de la caché, los investigadores emplean una política de programación consciente de la caché junto con una política de desalojo menos utilizada recientemente (LRU). Puede ejecutarse con entusiasmo utilizando un intérprete o rastrearse como un gráfico de flujo de datos y ejecutarse con un ejecutor de gráficos. En el segundo escenario, son posibles optimizaciones del compilador como la reubicación de código, la selección de instrucciones y el ajuste automático.
Frontend: programación fácil de LLM con SGLang
El equipo también presenta SGLang, un lenguaje integrado de dominio específico en Python, en el front-end. Con él se pueden articular de forma sencilla métodos complejos de indicaciones, flujo de control, multimodalidad, limitaciones de decodificación e interacción externa. Los usuarios pueden ejecutar una función SGLang a través de modelos locales, OpenAI, Anthropic y Gemini.
Como mencionó el equipo, gran parte de la sintaxis de SGLang se inspira en Guidance. Los usuarios también se ocupan del procesamiento por lotes y del paralelismo intraprograma además de introducir nuevas primitivas. Con todas estas nuevas características, SGLang es mucho más poderoso que antes. Mejore la tasa de aciertos de la caché con una política de desalojo y un enfoque de programación que considere el conocimiento de la caché.
Los investigadores registraron el rendimiento que alcanzó su sistema al probarlo en las siguientes cargas de trabajo típicas de LLM:
- MMLU: una prueba multitarea, de cinco opciones y de opción múltiple.
- HellaSwag: una herramienta de evaluación para completar frases de opción múltiple de 20 disparos.
- Un trabajo de agente basado en seguimientos de indicaciones tomados del documento ReAct original es ReAct Agent.
- Árbol del pensamiento: un mensaje de resolución de problemas GSM-8K basado en búsquedas de árboles personalizadas.
- Un decodificador JSON puede analizar un artículo de Wikipedia y devolver sus datos en formato JSON.
- El punto de referencia del chat (corto) es un chat sintético en el que cada conversación consta de cuatro turnos con breves resultados de LLM.
- Este punto de referencia de chat sintético utiliza salidas LLM largas y cuatro turnos por conversación.
- DSPy RAG: una canalización en el tutorial de DSPy que utiliza la recuperación para aumentar la generación.
- El punto de referencia LLaVA-in-the-wild se utiliza para ejecutar el modelo de lenguaje de visión LLaVA v1.5.
Utilizando los modelos Llama-7B y Mixtral-8x7B en las GPU NVIDIA A10G, el equipo aplicó SGLang a cargas de trabajo típicas de LLM, como agentes, razonamiento, extracción, chat y tareas de aprendizaje de pocas tomas. Los investigadores utilizaron Hugging Face TGI v1.3.0, asesoramiento v0.1.8 y vllm v0.2.5 como punto de partida. SGLang supera a los sistemas actuales, específicamente a Guid, por un factor de hasta cinco en términos de rendimiento. También funcionó bastante bien en las pruebas de latencia, especialmente aquellas que involucran el token inicial, donde un acierto de caché de prefijo es muy útil. Los sistemas actuales hacen un trabajo terrible al manejar programas LLM sofisticados, pero mientras desarrollaban el tiempo de ejecución SGLang, se observó una oportunidad de optimización crítica: la reutilización de la caché KV. Al reutilizar la caché KV, muchas solicitudes que comparten el mismo prefijo pueden usar la caché KV intermedia, lo que ahorra memoria y cálculo. Se pueden encontrar muchos otros métodos de reutilización de caché KV, incluidos ance y vLLM, en programas complicados que utilizan muchas llamadas LLM. La reutilización automática de la caché KV con RadixAttention, la capacidad del intérprete para proporcionar paralelismo dentro del programa y el hecho de que los sistemas frontend y backend fueron codiseñados contribuyen a estos beneficios.
Revisar la Código y Blog. Todo el crédito por esta investigación va a los investigadores de este proyecto. Además, no olvides seguirnos en Gorjeo. Unirse nuestro SubReddit de 36k+ ML, 41k+ comunidad de Facebook, Canal de discordiay LinkedIn Grarriba.
Si te gusta nuestro trabajo, te encantará nuestro Boletin informativo..
No olvides unirte a nuestro Canal de telegramas
Dhanshree Shenwai es ingeniero en informática y tiene una buena experiencia en empresas de tecnología financiera que cubren el ámbito financiero, tarjetas y pagos y banca con un gran interés en las aplicaciones de IA. Le entusiasma explorar nuevas tecnologías y avances en el mundo en evolución de hoy que facilita la vida de todos.