Skip to main content
QUICK REVIEW

[논문 리뷰] S-LoRA: Serving Thousands of Concurrent LoRA Adapters

Ying Sheng, Shiyi Cao|arXiv (Cornell University)|2023. 11. 06.
Parallel Computing and Optimization Techniques인용 수 7
한 줄 요약

S-LoRA는 통합 메모리 풀링, 최적화된 CUDA 커널을 활용한 이종 배치, 그리고 혁신적인 텐서 병렬화 전략을 통해 단일 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 배포를 위한 저오버헤드, 스케일링 가능한 텐서 병렬화 전략을 설계하기 위해.
  • 대규모 맞춤형 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과 같은 최신 기술 대비 난이도 높은 LoRA 지원 방식을 사용할 경우 최대 4배 높은 추론 처리량을 달성한다.
  • 기존 시스템 대비 수개의 주기수 더 많은 LoRA 어댑터를 단일 GPU에서 제공할 수 있어 높은 스케일링 성능을 보인다.
  • 통합 메모리 풀링은 메모리 분할과 I/O 오버헤드를 감소시켜 다양한 랭크와 시퀀스 길이를 가진 어댑터의 효율적인 동적 로딩을 가능하게 한다.
  • 커스터마이즈된 CUDA 커널을 활용한 이종 배치는 비연속 메모리에서의 효율적 계산을 가능하게 하여 다양한 어댑터 구성에서의 지연 오버헤드를 최소화한다.
  • S-LoRA TP는 기본 모델 통신과 LoRA 계산을 융합함으로써 통신 비용을 최소화하여 다중 GPU 확장에 효과적으로 대응한다.
  • 시스템은 A10G-24G 및 A100-80G GPU에서 높은 효율성을 보이며, 추론 실험을 통한 분석을 통해 조기 종료 스케줄링과 메모리 관리의 효과성을 입증했다.

더 나은 연구,지금 바로 시작하세요

논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.

카드 등록 없음 · 무료 플랜 제공

이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.