ChatPaper.aiChatPaper

S-LoRA: Servicio de Miles de Adaptadores LoRA Concurrentes

S-LoRA: Serving Thousands of Concurrent LoRA Adapters

November 6, 2023
Autores: Ying Sheng, Shiyi Cao, Dacheng Li, Coleman Hooper, Nicholas Lee, Shuo Yang, Christopher Chou, Banghua Zhu, Lianmin Zheng, Kurt Keutzer, Joseph E. Gonzalez, Ion Stoica
cs.AI

Resumen

El paradigma de "preentrenar y luego ajustar" es comúnmente adoptado en el despliegue de modelos de lenguaje grandes. La Adaptación de Bajo Rango (LoRA), un método de ajuste fino eficiente en parámetros, se emplea frecuentemente para adaptar un modelo base a una multitud de tareas, lo que resulta en una colección sustancial de adaptadores LoRA derivados de un único modelo base. Observamos que este paradigma presenta oportunidades significativas para la inferencia por lotes durante el servicio. Para aprovechar estas oportunidades, presentamos S-LoRA, un sistema diseñado para el servicio escalable de muchos adaptadores LoRA. S-LoRA almacena todos los adaptadores en la memoria principal y carga los adaptadores utilizados por las consultas actualmente en ejecución a la memoria de la GPU. Para utilizar eficientemente la memoria de la GPU y reducir la fragmentación, S-LoRA propone Paginación Unificada. La Paginación Unificada utiliza un grupo de memoria unificado para gestionar pesos dinámicos de adaptadores con diferentes rangos y tensores de caché KV con longitudes de secuencia variables. Además, S-LoRA emplea una novedosa estrategia de paralelismo de tensores y núcleos CUDA altamente optimizados para el procesamiento por lotes heterogéneo de cálculos LoRA. En conjunto, estas características permiten a S-LoRA servir miles de adaptadores LoRA en una sola GPU o en múltiples GPUs con un pequeño sobrecosto. En comparación con bibliotecas de vanguardia como HuggingFace PEFT y vLLM (con soporte básico para el servicio de LoRA), S-LoRA puede mejorar el rendimiento hasta 4 veces y aumentar el número de adaptadores servidos en varios órdenes de magnitud. Como resultado, S-LoRA permite el servicio escalable de muchos modelos ajustados específicamente para tareas y ofrece el potencial para servicios de ajuste fino personalizados a gran escala.
English
The "pretrain-then-finetune" paradigm is commonly adopted in the deployment of large language models. Low-Rank Adaptation (LoRA), a parameter-efficient fine-tuning method, is often employed to adapt a base model to a multitude of tasks, resulting in a substantial collection of LoRA adapters derived from one base model. We observe that this paradigm presents significant opportunities for batched inference during serving. To capitalize on these opportunities, we present S-LoRA, a system designed for the scalable serving of many LoRA adapters. S-LoRA stores all adapters in the main memory and fetches the adapters used by the currently running queries to the GPU memory. To efficiently use the GPU memory and reduce fragmentation, S-LoRA proposes Unified Paging. Unified Paging uses a unified memory pool to manage dynamic adapter weights with different ranks and KV cache tensors with varying sequence lengths. Additionally, S-LoRA employs a novel tensor parallelism strategy and highly optimized custom CUDA kernels for heterogeneous batching of LoRA computation. Collectively, these features enable S-LoRA to serve thousands of LoRA adapters on a single GPU or across multiple GPUs with a small overhead. Compared to state-of-the-art libraries such as HuggingFace PEFT and vLLM (with naive support of LoRA serving), S-LoRA can improve the throughput by up to 4 times and increase the number of served adapters by several orders of magnitude. As a result, S-LoRA enables scalable serving of many task-specific fine-tuned models and offers the potential for large-scale customized fine-tuning services.
PDF322December 15, 2024