Skip to main content
QUICK REVIEW

[論文レビュー] S-LoRA: Serving Thousands of Concurrent LoRA Adapters

Ying Sheng, Shiyi Cao|arXiv (Cornell University)|Nov 6, 2023
Parallel Computing and Optimization Techniques被引用数 7
ひとこと要約

S-LoRA は、統合メモリプール、最適化された CUDA カーネルを用いた異種バッチ処理、および新規のテンソル並列戦略を活用することで、1枚の GPU または複数の GPU を通じて数千もの同時 LoRA アダプタを効率的に提供するスケーラブルなシステムです。HuggingFace PEFT や vLLM といった最先端のシステムと比較して、最大 4 倍のスループットを達成し、アダプタの数は桁違いに増加します。

ABSTRACT

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. The code is available at https://github.com/S-LoRA/S-LoRA

研究の動機と目的

  • 限られた GPU メモリの中で、数千もの LoRA アダプタを同時に提供する際のスケーラビリティの課題に対処すること。
  • 異なるランクとシーケンス長を持つアダプタの動的読み込みに伴うメモリ断片化と I/O オーバーヘッドを低減すること。
  • 非連続なメモリレイアウトを持つ異種のアダプタ間で、LoRA の計算を効率的にバッチ処理すること。
  • 複数の GPU での LoRA アダプタのデプロイに適した低オーバーヘッドでスケーラブルなテンソル並列戦略を設計すること。
  • 大規模かつカスタマイズされた LLM サービスにおいて、高インファレンススループットを実現するとともに、遅延とメモリ使用量を最小限に抑えること。

提案手法

  • S-LoRA は、アダプタ重みと KV キャッシュテンソルを動的に管理する統合ページングを導入し、メモリ断片化と I/O オーバーヘッドを低減します。
  • 非連続メモリ上で直接動作するカスタム CUDA カーネルを用いた異種バッチ処理を採用し、異なるランクを持つアダプタ間で効率的なバッチ推論を実現します。
  • S-LoRA TP は、ベースモデルの通信と LoRA の計算を統合することで、複数の GPU 間での通信コストを最小限に抑える新規のテンソル並列戦略です。
  • ベースモデルの計算(バッチ処理可能)とアダプタの計算(バッチ処理不可)を分離することで、最適なスケジューリングとメモリアクセスパターンを実現します。
  • ホストメモリに基づくアダプタストレージ戦略を採用し、必要に応じてアクティブなアダプタのみを GPU メモリにオンデマンドでフェッチします。
  • システムは、早期中止スケジューリングを統合しており、統合メモリプールを介して動的シーケンス長の処理をサポートしています。

実験結果

リサーチクエスチョン

  • RQ1異なるランクと動的シーケンス長を持つ数千もの LoRA アダプタのメモリを効率的に管理する方法は何か?
  • RQ2非連続なメモリレイアウトを持つ異種のアダプタ間で、LoRA の計算を最適にバッチ処理する方法は何か?
  • RQ3複数の GPU にわたる LoRA サービングをスケーリングする際、通信とメモリのオーバーヘッドを最小限に抑える方法は何か?
  • RQ4統合メモリプールと最適化されたカーネルは、既存のシステムと比較してスループットとアダプタ容量を顕著に向上させるか?
  • RQ5動的アダプタの読み込みとアンロードが、インファレンスの遅延と GPU 利用率に与える性能への影響は何か?

主な発見

  • S-LoRA は、HuggingFace PEFT や vLLM といった最先端のシステムと比較して、最大 4 倍のインファレンススループットを達成しました。
  • 既存のシステムと比較して、数個のオーダーもしくはそれ以上のアダプタ数を 1 枚の GPU で提供可能となり、高いスケーラビリティを実現しました。
  • 統合メモリプールにより、メモリ断片化と I/O オーバーヘッドが低減され、多様なランクとシーケンス長を持つアダプタの効率的な動的読み込みが可能になりました。
  • カスタム CUDA カーネルを用いた異種バッチ処理により、非連続メモリ上での計算が効率的に行われ、さまざまなアダプタ構成における遅延オーバーヘッドが最小限に抑えられました。
  • S-LoRA TP は、ベースモデルの通信と LoRA の計算を統合することで、通信コストを最小限に抑え、効果的なマルチ GPU スケーリングを実現しました。
  • A10G-24G および A100-80G GPU において高い効率を示し、アブレーションスタディにより、早期中止スケジューリングとメモリ管理の有効性が確認されました。

より良い研究を、今すぐ始めましょう

論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。

クレジットカード登録不要

このレビューはAIが作成し、人間の編集者が確認しました。