ChatPaper.aiChatPaper

S-LoRA: Bereitstellung Tausender gleichzeitiger LoRA-Adapter

S-LoRA: Serving Thousands of Concurrent LoRA Adapters

November 6, 2023
Autoren: 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

Zusammenfassung

Das "Pretrain-then-Finetune"-Paradigma wird häufig bei der Bereitstellung großer Sprachmodelle eingesetzt. Low-Rank Adaptation (LoRA), eine parameter-effiziente Feinabstimmungsmethode, wird oft verwendet, um ein Basismodell an eine Vielzahl von Aufgaben anzupassen, was zu einer umfangreichen Sammlung von LoRA-Adaptern führt, die von einem Basismodell abgeleitet sind. Wir beobachten, dass dieses Paradigma erhebliche Möglichkeiten für gebündelte Inferenz während der Bereitstellung bietet. Um diese Möglichkeiten zu nutzen, stellen wir S-LoRA vor, ein System, das für die skalierbare Bereitstellung vieler LoRA-Adapter entwickelt wurde. S-LoRA speichert alle Adapter im Hauptspeicher und lädt die Adapter, die von den aktuell laufenden Anfragen verwendet werden, in den GPU-Speicher. Um den GPU-Speicher effizient zu nutzen und Fragmentierung zu reduzieren, schlägt S-LoRA Unified Paging vor. Unified Paging verwendet einen einheitlichen Speicherpool, um dynamische Adaptergewichte mit unterschiedlichen Rängen und KV-Cache-Tensoren mit variierenden Sequenzlängen zu verwalten. Darüber hinaus setzt S-LoRA eine neuartige Tensor-Parallelitätsstrategie und hochoptimierte benutzerdefinierte CUDA-Kernel für die heterogene Bündelung von LoRA-Berechnungen ein. Zusammengenommen ermöglichen diese Funktionen S-LoRA, Tausende von LoRA-Adaptern auf einer einzelnen GPU oder über mehrere GPUs hinweg mit geringem Overhead bereitzustellen. Im Vergleich zu modernsten Bibliotheken wie HuggingFace PEFT und vLLM (mit einfacher Unterstützung für LoRA-Bereitstellung) kann S-LoRA den Durchsatz um bis zu das Vierfache steigern und die Anzahl der bereitgestellten Adapter um mehrere Größenordnungen erhöhen. Dadurch ermöglicht S-LoRA die skalierbare Bereitstellung vieler aufgaben-spezifisch feinabgestimmter Modelle und bietet das Potenzial für groß angelegte, maßgeschneiderte Feinabstimmungsdienste.
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