S-LoRA: Het Bedienen van Duizenden Gelijktijdige LoRA-Adapters
S-LoRA: Serving Thousands of Concurrent LoRA Adapters
November 6, 2023
Auteurs: 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
Samenvatting
Het "pretrain-then-finetune"-paradigma wordt veel gebruikt bij de implementatie van grote taalmodellen. Low-Rank Adaptation (LoRA), een parameter-efficiënte fine-tuningmethode, wordt vaak ingezet om een basismodel aan te passen aan een veelheid aan taken, wat resulteert in een aanzienlijke verzameling LoRA-adapters afgeleid van één basismodel. Wij observeren dat dit paradigma aanzienlijke mogelijkheden biedt voor batchgewijze inferentie tijdens het serveren. Om van deze mogelijkheden gebruik te maken, presenteren we S-LoRA, een systeem ontworpen voor het schaalbaar serveren van vele LoRA-adapters. S-LoRA slaat alle adapters op in het hoofdgeheugen en haalt de adapters die worden gebruikt door de momenteel lopende queries op naar het GPU-geheugen. Om het GPU-geheugen efficiënt te gebruiken en fragmentatie te verminderen, stelt S-LoRA Unified Paging voor. Unified Paging gebruikt een geïntegreerd geheugenpool om dynamische adaptergewichten met verschillende rangen en KV-cache-tensors met variërende sequentielengtes te beheren. Daarnaast maakt S-LoRA gebruik van een nieuwe tensorparallelisme-strategie en sterk geoptimaliseerde aangepaste CUDA-kernels voor heterogene batchverwerking van LoRA-berekeningen. Samen maken deze functies het mogelijk dat S-LoRA duizenden LoRA-adapters kan serveren op een enkele GPU of over meerdere GPU's met een kleine overhead. Vergeleken met state-of-the-art bibliotheken zoals HuggingFace PEFT en vLLM (met eenvoudige ondersteuning van LoRA-serving), kan S-LoRA de doorvoer tot wel 4 keer verbeteren en het aantal geserveerde adapters met meerdere ordes van grootte verhogen. Hierdoor maakt S-LoRA het schaalbaar serveren van vele taakspecifiek fine-tunede modellen mogelijk en biedt het potentieel voor grootschalige gepersonaliseerde fine-tuningdiensten.
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.