S-LoRA: Gestione di Migliaia di Adattatori LoRA Concorrenti
S-LoRA: Serving Thousands of Concurrent LoRA Adapters
November 6, 2023
Autori: 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
Abstract
Il paradigma "pretrain-then-finetune" è comunemente adottato nell'implementazione di modelli linguistici di grandi dimensioni. La Low-Rank Adaptation (LoRA), un metodo di fine-tuning efficiente in termini di parametri, è spesso utilizzata per adattare un modello di base a una moltitudine di task, risultando in una vasta raccolta di adattatori LoRA derivati da un unico modello di base. Osserviamo che questo paradigma offre significative opportunità per l'inferenza in batch durante il servizio. Per sfruttare queste opportunità, presentiamo S-LoRA, un sistema progettato per il servizio scalabile di molti adattatori LoRA. S-LoRA memorizza tutti gli adattatori nella memoria principale e trasferisce gli adattatori utilizzati dalle query attualmente in esecuzione nella memoria GPU. Per utilizzare in modo efficiente la memoria GPU e ridurre la frammentazione, S-LoRA propone Unified Paging. Unified Paging utilizza un pool di memoria unificato per gestire i pesi dinamici degli adattatori con ranghi diversi e i tensori della cache KV con lunghezze di sequenza variabili. Inoltre, S-LoRA impiega una nuova strategia di parallelismo tensoriale e kernel CUDA personalizzati altamente ottimizzati per il batch eterogeneo del calcolo LoRA. Nel complesso, queste funzionalità consentono a S-LoRA di servire migliaia di adattatori LoRA su una singola GPU o su più GPU con un sovraccarico minimo. Rispetto a librerie all'avanguardia come HuggingFace PEFT e vLLM (con supporto rudimentale del servizio LoRA), S-LoRA può migliorare il throughput fino a 4 volte e aumentare il numero di adattatori serviti di diversi ordini di grandezza. Di conseguenza, S-LoRA abilita il servizio scalabile di molti modelli fine-tuned specifici per task e offre il potenziale per servizi di fine-tuning personalizzati su larga scala.
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.