[논문 리뷰] SGLang: Efficient Execution of Structured Language Model Programs
SGLang는 제어 흐름, 병렬 처리 및 생성을 위한 구조적 원소를 통해 대규모 언어 모델(LLM) 프로그래밍을 효율적으로 가능하게 하는 파이썬에 통합된 도메인 특화 언어(DSL)이다. 컴파일러, 인터프리터 및 새로운 런타임 최적화 기법인 RadixAttention을 통합하며, 이는 루트 트리 구조를 사용해 여러 LLM 추론 요청 간 키-값(KV) 상태를 캐시하고 공유함으로써 실행 속도를 최대 5배 향상시키고 코드 복잡도를 낮추며 복잡한 다중 호출 LLM 애플리케이션의 제어를 향상시킨다.
Large language models (LLMs) are increasingly used for complex tasks that require multiple generation calls, advanced prompting techniques, control flow, and structured inputs/outputs. However, efficient systems are lacking for programming and executing these applications. We introduce SGLang, a system for efficient execution of complex language model programs. SGLang consists of a frontend language and a runtime. The frontend simplifies programming with primitives for generation and parallelism control. The runtime accelerates execution with novel optimizations like RadixAttention for KV cache reuse and compressed finite state machines for faster structured output decoding. Experiments show that SGLang achieves up to 6.4x higher throughput compared to state-of-the-art inference systems on various large language and multi-modal models on tasks including agent control, logical reasoning, few-shot learning benchmarks, JSON decoding, retrieval-augmented generation pipelines, and multi-turn chat. The code is publicly available at https://github.com/sgl-project/sglang
연구 동기 및 목표
- 제어 흐름, 병렬 처리 및 외부 상호작용을 필요로 하는 복잡한 다중 호출 LLM 애플리케이션의 실행 성능 격차를 해소하기 위해.
- LLM을 위한 고수준 프로그래밍 언어와 고성능 런타임을 공동 설계하여 배치 처리, 캐싱, 병렬 처리와 같은 자동 최적화를 가능하게 하기 위해.
- 기존 모델 및 프레임워크와의 호환성을 유지하면서 LLM 프로그래밍의 코드 복잡도를 줄이기 위해.
- 새로운 런타임 기법을 통해 여러 요청 간 어텐션 키-값(KV) 캐시의 효율적 재사용을 가능하게 하기 위해.
제안 방법
- SGLang는 파이썬에 통합된 도메인 특화 언어(DSL)로 구현되며, 제어 흐름 및 생성을 위한 구조적 원소인 `fork`, `gen`, `join`, `choices`, `run` 등의 원소를 노출한다.
- 시스템은 동적 실행을 위한 인터프리터와 프로그램을 계산 그래프로 추적하여 강력한 최적화를 수행하는 컴파일러를 포함한다.
- RadixAttention은 루트 트리 데이터 구조를 사용해 가장 최근에 사용된(LRU) KV 상태 캐시를 유지함으로써 여러 추론 요청 간 자동 재사용을 가능하게 하는 새로운 기법이다.
- 컴파일러는 실행 효율성을 향상시키기 위해 코드 이동 및 프리패칭 애너테이션과 같은 고전적 최적화 기법을 적용한다.
- 런타임 시스템은 병렬 처리, 배치 처리 및 여러 요청 및 프로그램 간 KV 캐시 공유를 지원하며, 루트 트리 유지를 위한 낮은 오버헤드를 제공한다.
- 시스템은 오픈소스 및 프라이베이트 LLM 모두와 호환되며, OpenAI 및 Anthropic 등의 모델을 포함한 다양한 모델에서 이식 가능한 배포를 가능하게 한다.
실험 결과
연구 질문
- RQ1다중 호출 LLM 워크로드 최적화를 위해 고수준 프로그래밍 언어와 고성능 런타임을 공동 설계할 수 있는 방법은 무엇인가?
- RQ2여러 LLM 생성 호출 간 자동 KV 캐시 재사용이 추론 효율성에 얼마나 기여하는가?
- RQ3구조적 원소를 갖춘 도메인 특화 언어가 복잡한 제어 흐름과 병렬 처리를 가능하게 하면서도 코드 복잡도를 줄일 수 있는가?
- RQ4루트 트리 데이터 구조를 사용해 동적이고 공유 가능한 KV 캐시를 유지하는 데서 발생하는 런타임 오버헤드는 어느 정도인가?
- RQ5다양한 입력 공유 패턴(예: 공통 접두어, 한 문서당 다중 질문)이 RadixAttention의 성능 향상에 어떻게 영향을 미치는가?
주요 결과
- SGLang는 기준 시스템 대비 일반적인 LLM 워크로드에서 실행 시간을 최대 5배 향상시키며 뚜렷한 성능 향상을 입증한다.
- RadixAttention 기법은 특히 공유 가능한 입력 길이가 길어질수록 처리량을 크게 향상시키며, 공유 접두어 길이가 길어질수록 성능 향상이 증가한다.
- 공유 입력당 요청 수가 많아질수록 처리량 향상이 두드러지며, 이는 캐시 재사용 기회가 더 많아지기 때문이다. 예를 들어, 한 문서당 다수의 질문이 존재할 경우 두드러진다.
- 루트 트리 유지 오버헤드는 극단적인 경우에도 겨우 0.5%에 불과하여 실사용에 실용적이다.
- 시스템은 자연스러운 파이썬 제어 흐름과 재사용 가능한 함수 추상화를 통해 구조적이고 조합 가능한 LLM 프로그램을 가능하게 하여 코드 복잡도를 감소시킨다.
- 컴파일러 및 추적 파이프라인은 코드 이동 및 프리패칭과 같은 강력한 최적화를 가능하게 하여 기본 실행을 초월한 성능 향상을 이룬다.
더 나은 연구,지금 바로 시작하세요
논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.
카드 등록 없음 · 무료 플랜 제공
이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.