대규모 언어 모델의 효율적인 서빙을 위해서는 메모리 관리와 병렬 처리 같은 최적화 기술이 필수적입니다. LLM 서빙이란 동일한 연산을 수행하면서도 성능 하락 없이 추론 능력을 향상시키는 방안을 통해 모델 서빙을 수행하는 것을 말합니다. 다양한 프레임워크들이 개발되었지만, 현재 가장 널리 사용되고 자주 언급되는 vLLM과 SGLang에 대해 간단히 설명하고 비교해보는 시간을 가지겠습니다.
1. vLLM
vLLM은 LLM 추론 및 제공을 위한 빠르고 사용하기 쉬운 라이브러리입니다. UC 버클리의 스카이 컴퓨팅 랩에서 개발되었으며, 학계와 산업계의 기여를 통해 커뮤니티 중심 프로젝트로 발전했습니다.

주요 기능
1) 고성능 서빙
- PagedAttention 기술을 사용한 메모리 관리와 처리 성능 극대화
- 대기중인 요청 연속 처리 가능
- 고처리량을 유지하면서도 낮은 지연 시간 실현 가능
- 실시간 응용 프로그램에서 강력한 성능을 발휘
- CUDA/HIP 그래프를 통한 빠른 모델 실행
- 최적화된 CUDA 커널과 FlashAttention, FlashInfer 통합
2) 유연한 배포 및 확장성
- Hugging Face 같은 다양한 모델 허브에서 모델 가져올 수 있음
- Tensor Parallelism, Pipeline Parallelism을 지원하여 여러 GPU에 걸쳐 모델 분산 배포 가능
- 대규모 데이터 처리와 추론작업에서 탁월한 성능 제공
- NVIDIA 및 AMD 환경에서 최적화
3) 다양한 디코딩 알고리즘
- 병렬 샘플링: 다수의 출력 동시 생성
- 빔 검색: 최적의 출력 시퀀스 탐색
4) API 호환성
- OpenAI API와 호환되는 서버 설정 가능
- 기존 OpenAI API를 사용하던 애플리케이션을 vLLM으로 대체하거나 보완 가능
5) 최적화 기능
- GPTQ, AWQ, FP8 KV Cache와 같은 다양한 양자화 기법 지원
- 모델의 메모리 사용량을 줄이고, GPU에서 실행 시 성능을 최적화
- 스트리밍 출력 및 프리픽스 캐싱 지원
- Multi-lora 지원
6) 하드웨어 지원
- NVIDIA GPU, AMD CPU 및 GPU
- Intel CPU, Gaudi® 가속기
- IBM Power CPU, TPU
- AWS Trainium 및 Inferentia 가속기
2. sglang
SGLang은 대규모 언어 모델과 비전 언어 모델을 위한 빠른 서빙 프레임워크입니다. 백엔드 런타임과 프런트엔드 언어를 공동 설계하여 모델과의 상호 작용을 더 빠르고 제어 가능하게 만듭니다.

주요 기능
1) 빠른 백엔드 런타임
- 접두사 캐싱, 제로 오버헤드 CPU 스케줄러
- 연속 배칭, 토큰 어텐션(페이지 어텐션)
- 추측 디코딩, 텐서 병렬 처리
- 청크별 사전 채우기, 구조화된 출력
- RadixAttention을 통한 효율적인 서비스 제공
- FP8/INT4/AWQ/GPTQ 양자화 지원
2) 유연한 프런트엔드 언어
- 체인 생성 호출: 복잡한 생성 작업의 연결
- 고급 프롬프팅: 효과적인 프롬프트 전략 지원
- 제어 흐름: 조건부 및 반복적 프로세스 구현
- 다중 모달 입력: 텍스트와 이미지 등 다양한 입력 처리
- 병렬성: 동시 작업 처리
- 외부 상호 작용: 다른 시스템과의 통합
3) 광범위한 모델 지원
- 생성 모델: Llama, Gemma, Mistral, QWen, DeepSeek, LLaVA 등
- 임베딩 모델: e5-mistral, gte, mcdse
- 보상 모델: Skywork
- 새로운 모델을 쉽게 통합할 수 있는 확장성
4) 커뮤니티
- 오픈 소스로 제공
- 활발한 커뮤니티의 지원
- 업계에서 점차 채택되는 추세
3. vLLM vs sglang
1) 공통점
PagedAttention 기술 | 두 프레임워크 모두 메모리 관리 최적화를 위한 PagedAttention 기술 활용 |
연속 배칭 | 대기 중인 요청들을 효율적으로 처리하여 처리량 극대화 |
양자화 지원 | GPTQ, AWQ, INT4 등 다양한 양자화 기법 지원으로 모델 경량화 |
추측 디코딩 | 생성 속도 향상을 위한 추측 디코딩 메커니즘 지원 |
텐서 병렬 처리 | 대규모 모델의 분산 처리를 위한 텐서 병렬화 지원 |
청크별 사전 채우기 | 대용량 입력을 효율적으로 처리하기 위한 청크 기반 사전 채우기 지원 |
2) vLLM 강점
다양한 하드웨어 지원 | • NVIDIA GPU, AMD CPU/GPU<br>• Intel CPU, IBM Power CPU<br>• TPU, Gaudi 가속기<br>• AWS Trainium/Inferentia |
OpenAI 호환 API | 기존 OpenAI API 기반 애플리케이션과의 즉시 호환성 제공 |
다양한 디코딩 알고리즘 | 병렬 샘플링, 빔 검색 등 다양한 디코딩 방식 지원 |
CUDA/HIP 그래프 | 그래프 기반 최적화로 모델 실행 속도 향상 |
멀티로라 지원 | 여러 LoRA 어댑터를 동시에 적용할 수 있는 기능 제공 |
3) sglang 강점
통합 백엔드-프론트엔드 설계 | 백엔드 런타임과 프론트엔드 언어의 공동 설계로 일관된 개발 경험 |
유연한 프로그래밍 모델 | • 체인 생성 호출<br>• 고급 프롬프팅<br>• 제어 흐름<br>• 병렬성 관리 |
다중 모달 입력 처리 | 텍스트, 이미지 등 다양한 입력 형식의 통합 처리 지원 |
제로 오버헤드 CPU 스케줄러 | CPU 리소스의 효율적 활용을 위한 최적화된 스케줄러 |
RadixAttention | 구조화된 출력 생성을 위한 특화된 어텐션 메커니즘 |
임베딩 및 보상 모델 지원 | • 임베딩 모델: e5-mistral, gte, mcdse<br>• 보상 모델: Skywork |
4. 선택 가이드
1) vLLM 선택 시나리오
- 다양한 하드웨어 환경에서 배포 필요
- OpenAI API와의 호환성 중요
- 최대한의 처리량과 확장성이 우선시되는 경우
- 멀티-LoRA 적용이 필요한 경우
- 성숙한 커뮤니티 지원과 광범위한 문서화가 중요한 경우
2) SGLang 선택 시나리오
- 복잡한 생성 작업의 체인화 필요
- 고급 프롬프팅 및 제어 흐름 중요
- 통합된 백엔드-프론트엔드 접근 방식이 선호되는 경우
- 다중 모달 입력 처리 필요
- 임베딩 및 보상 모델과의 통합 필요
- 구조화된 출력 처리 중요
vLLM은 다양한 하드웨어 지원과 성숙한 인프라를 갖춘 범용 서빙 솔루션으로, 대규모 배포와 높은 처리량이 필요한 프로젝트에 적합합니다. 반면 SGLang은 프로그래밍 모델과 사용자 경험에 중점을 둔 통합 접근 방식을 제공하여, 복잡한 LLM 애플리케이션 개발에 더 적합할 수 있습니다. 공식문서마다 적절한 예제와 자세한 설명이 제공되고있으니 활용하면 좋을 것 같습니다.
참고자료
https://docs.vllm.ai/en/latest/
https://machinelog.tistory.com/entry/vLLM-%EC%9D%B4%EB%9E%80-%EB%AD%98%EA%B9%8C
'LLMops' 카테고리의 다른 글
[LLM evaluation] LLM 모델 자체 평가 (1) | 2025.04.07 |
---|---|
[LLMops] Opik으로 LLM 평가하기 (0) | 2025.03.28 |
[LLMops] 오픈소스 LLM 평가 프레임워크 opik (0) | 2025.03.12 |