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.