SGLang 23모델 서빙 실전 가이드 — 모델별 최적 설정 총정리
"모델만 바꾸면 되는 게 아닙니다." SGLang으로 LLM을 서빙할 때, 모델마다 양자화 방식, 어텐션 백엔드, 컨텍스트 길이, VRAM 점유가 다릅니다. 잘못된 설정 하나가 OOM(Out of Memory) 크래시나 추론 실패로 이어집니다. 23개 모델을 실제로 SGLang에 올리고 서빙하면서 정리한 모델별 최적 설정과 트러블슈팅 노하우를 공개합니다.
23개
서빙 테스트 모델
3종
양자화 (AWQ/BF16/FP8)
2.5~64GB
VRAM 범위
flashinfer
MoE 필수 백엔드

왜 모델마다 설정이 다른가
SGLang은 python -m sglang.launch_server로 모델을 서빙합니다. 하지만 동일한 명령어로 모든 모델을 올릴 수는 없습니다. 4가지 변수가 모델마다 다르기 때문입니다.
양자화 방식
AWQ(INT4), BF16(16비트), FP8(8비트) — VRAM과 속도가 2~4배 차이
어텐션 백엔드
flashinfer vs triton — MoE 모델은 flashinfer 필수, triton 사용 시 크래시
VRAM 점유
2.5GB(4B AWQ)부터 64GB(32B BF16)까지 — GPU에 맞는 모델 선택 필수
컨텍스트 길이
8K~1M 토큰 — 길수록 VRAM 추가 사용, 모델별 지원 범위 상이
SGLang 서빙 명령어 기본 구조
python -m sglang.launch_server \
--model-path <모델경로> \
--port <포트> \
--attention-backend <flashinfer|triton> \
--context-length <컨텍스트길이> \
--mem-fraction-static 0.85AWQ 모델은 별도 플래그 없이 자동 감지됩니다. FP8은 --quantization fp8 추가 필요.
23모델 서빙 설정 총정리
실제로 서빙에 성공한 23개 모델의 설정을 정리했습니다. 포트 번호는 모델 크기 기반 규칙으로 관리합니다: 30000 + (파라미터 × 10) + 양자화 오프셋(BF16=0, AWQ=1, FP8=2).
| 모델 | 양자화 | VRAM | 백엔드 | CTX | 포트 |
|---|---|---|---|---|---|
| Qwen3-0.6B | BF16 | ~1.5 GB | flashinfer | 32K | 30010 |
| Qwen3-1.7B | BF16 | ~3.5 GB | flashinfer | 32K | 30011 |
| Qwen3-4B | BF16 | ~8 GB | flashinfer | 32K | 30040 |
| Qwen3-4B-AWQ | AWQ | ~2.5 GB | flashinfer | 32K | 30041 |
| Qwen3-8B | BF16 | ~16 GB | flashinfer | 32K | 30080 |
| Qwen3-8B-AWQ | AWQ | ~5 GB | flashinfer | 32K | 30081 |
| Qwen3-14B | BF16 | ~28 GB | flashinfer | 32K | 30140 |
| Qwen3-14B-AWQ | AWQ | ~8 GB | flashinfer | 32K | 30141 |
| Qwen3-14B-FP8 | FP8 | ~15 GB | flashinfer | 32K | 30142 |
| Qwen3-32B | BF16 | ~64 GB | flashinfer | 32K | 30320 |
| Qwen3-32B-AWQ | AWQ | ~18 GB | flashinfer | 32K | 30321 |
| Qwen3-30B-A3BMoE | BF16 | ~60 GB | flashinfer | 32K | 30300 |
| GLM-4-9B-Chat-1MMoE | BF16 | ~18 GB | flashinfer | 1M | 30900 |
| Gemma-3-4B-it | BF16 | ~8 GB | flashinfer | 32K | 30050 |
| Gemma-3-12B-it-AWQ | AWQ | ~7 GB | flashinfer | 32K | 30121 |
| Phi-4 | BF16 | ~28 GB | flashinfer | 16K | 30200 |
| Phi-4-AWQ | AWQ | ~8 GB | flashinfer | 16K | 30201 |
| EXAONE-3.5-7.8B | BF16 | ~16 GB | flashinfer | 32K | 30070 |
| EXAONE-3.5-32B | BF16 | ~64 GB | flashinfer | 32K | 30330 |
| EXAONE-3.5-32B-AWQ | AWQ | ~18 GB | flashinfer | 32K | 30331 |
| Llama-3.1-8B-AWQ | AWQ | ~5 GB | flashinfer | 8K | 30085 |
| KORMo-10B-sft | BF16 | ~20 GB | flashinfer | 8K | 30100 |
| DeepSeek-R1-Distill-Qwen-32B | BF16 | ~64 GB | flashinfer | 32K | 30340 |
포트 관리 규칙
포트를 규칙적으로 관리하면 어떤 포트에 어떤 모델이 있는지 외울 필요가 없습니다. 예: Qwen3-14B-AWQ → 30000 + 14×10 + 1 = 30141. 핫스왑 시에도 동일 포트를 유지하여 클라이언트 변경 없이 모델만 교체할 수 있습니다.
양자화 선택 가이드 — AWQ vs BF16 vs FP8

| 항목 | AWQ (INT4) | FP8 | BF16 |
|---|---|---|---|
| VRAM 사용 | 최소 (1/4) | 중간 (1/2) | 최대 (기준) |
| 추론 속도 | 가장 빠름 | 빠름 | 기준 |
| 품질 손실 | 미미 (체감 불가) | 거의 없음 | 없음 (원본) |
| SGLang 지원 | 자동 감지 | --quantization fp8 | 기본값 |
| 추천 환경 | VRAM ≤ 24GB | VRAM 24~48GB | VRAM ≥ 48GB |
AWQ (INT4) — 속도 우선
- • VRAM 16GB 이하에서 유일한 선택
- • 14B 모델을 8GB로 서빙 가능
- • 32B에서 2.94배 속도 향상
- • 한국어 품질 차이 체감 불가
FP8 — 균형
- • AWQ보다 품질 미세하게 상위
- • VRAM 절반으로 서빙 가능
- • 추가 플래그 필요:
--quantization fp8 - • 모든 모델이 FP8 지원하진 않음
BF16 — 품질 최우선
- • 모델 원본 그대로 서빙
- • VRAM에 여유가 있을 때
- • 벤치마크 기준선으로 활용
- • 96GB GPU면 32B도 서빙 가능
실전 판단 기준
VRAM이 충분해도 AWQ를 쓰는 것이 합리적입니다. 96GB GPU에서 32B BF16(64GB)은 올릴 수 있지만, AWQ(18GB)로 바꾸면 남은 VRAM으로 더 긴 컨텍스트나 동시 요청 처리가 가능합니다. BF16은 품질 검증용 벤치마크에만 사용하고, 프로덕션은 AWQ가 정답입니다.
MoE 모델 특수 설정
MoE(Mixture of Experts) 모델은 일반 Dense 모델과 다른 설정이 필요합니다. 가장 중요한 차이는 어텐션 백엔드입니다. triton 백엔드로 MoE 모델을 실행하면 에러 없이 조용히 잘못된 결과를 출력하거나, 아예 크래시가 발생합니다.
필수: MoE 모델은 flashinfer 백엔드만 사용
# ✅ 올바른 설정
python -m sglang.launch_server \
--model-path Qwen/Qwen3-30B-A3B \
--attention-backend flashinfer \
--port 30300
# ❌ 크래시 또는 잘못된 출력
python -m sglang.launch_server \
--model-path Qwen/Qwen3-30B-A3B \
--attention-backend triton \
--port 30300| MoE 모델 | 전체 파라미터 | 활성 파라미터 | 필수 백엔드 | 주의사항 |
|---|---|---|---|---|
| Qwen3-30B-A3B | 30B | 3B | flashinfer | VRAM은 30B 기준, 속도는 8B급 |
| GLM-4-9B-Chat-1M | 9B | ~1.2B | flashinfer | 1M 컨텍스트 시 VRAM 급증 주의 |
Dense 모델은 어떤 백엔드든 동작합니다
Dense 모델(Qwen3-8B, Gemma-3-12B 등)은 flashinfer와 triton 모두에서 정상 동작합니다. 하지만 flashinfer가 일반적으로 더 빠르므로, 모든 모델에 flashinfer를 기본으로 사용하면 MoE/Dense 구분 없이 안전합니다.
통일 규칙: --attention-backend flashinfer 항상 사용
VRAM 관리와 모델 크기별 점유

GPU별로 올릴 수 있는 모델이 다릅니다. 아래 표에서 VRAM에 맞는 모델을 빠르게 판단할 수 있습니다.
| GPU VRAM | 서빙 가능 모델 (AWQ) | 서빙 가능 모델 (BF16) |
|---|---|---|
| 8GB | 4B, 8B 모델까지 | 4B 이하만 |
| 12GB | 14B AWQ까지 (8GB) | 4B만 여유 있게 |
| 16GB | 14B AWQ 쾌적 | 8B 모델까지 |
| 24GB | 32B AWQ (18GB) 가능 | 14B 모델까지 |
| 48GB | 모든 AWQ 모델 + 여유 | 32B 불가, 14B 쾌적 |
| 96GB | 모든 모델 + 대량 동시요청 | 32B BF16 (64GB) 가능 |
VRAM = 모델 가중치 + KV 캐시
모델 가중치가 8GB라고 8GB GPU에 올라가지 않습니다. KV 캐시(추론 중 생성되는 중간 데이터)가 추가로 필요합니다.--mem-fraction-static 0.85로 VRAM의 85%까지 사용하게 설정하되, 나머지 15%는 운영체제와 KV 캐시용으로 남겨두세요.
동시 요청 시 VRAM 추가 사용
단일 요청에서는 문제없던 모델이 동시 10명부터 OOM이 발생할 수 있습니다. 각 동시 요청마다 KV 캐시가 별도로 할당되기 때문입니다. 동시 접속이 많은 서비스라면 VRAM 여유를 30% 이상 확보하세요.
실전 공식: 서빙 가능 여부 판단
모델 VRAM × 1.3 < GPU VRAM → 서빙 가능 (30% 여유). 예: Qwen3-14B-AWQ(8GB) × 1.3 = 10.4GB → 12GB GPU에서 서빙 가능. Qwen3-32B-AWQ(18GB) × 1.3 = 23.4GB → 24GB GPU에서 빠듯하지만 가능.
실전 트러블슈팅
23개 모델을 서빙하면서 겪은 실제 문제와 해결법을 정리합니다.
OOM (Out of Memory) 크래시
증상: 모델 로딩 후 첫 요청에서 CUDA OOM 발생
mem-fraction-static을 0.85 → 0.75로 낮추기
context-length를 32K → 16K 또는 8K로 줄이기
더 작은 양자화(BF16 → AWQ)로 전환
nvidia-smi로 다른 프로세스가 VRAM 점유 중인지 확인
MoE 모델에서 이상한 출력
증상: Qwen3-30B-A3B 서빙 시 응답이 깨지거나 반복 루프
--attention-backend flashinfer 확인 (triton 사용 시 발생)
SGLang 버전 0.5.8 이상 확인 (이전 버전 MoE 미지원)
flashinfer 패키지가 올바르게 설치되었는지 pip show flashinfer
포트 충돌로 서빙 실패
증상: 이전 서빙 프로세스가 좀비로 남아 포트 점유
lsof -i :포트번호 로 점유 프로세스 확인
kill -9 <PID> 로 좀비 프로세스 제거
서빙 스크립트에 기존 프로세스 kill 로직 추가
핫스왑: 무중단 모델 교체
증상: 서비스 중단 없이 모델을 교체하고 싶음
새 모델을 다른 포트에 먼저 올림 (예: 30141 → 30142)
헬스체크 후 로드밸런서/프록시의 업스트림을 새 포트로 변경
이전 모델 프로세스 종료 — 다운타임 0초
모델별 알려진 이슈
| 모델 | 이슈 | 대응 |
|---|---|---|
| Phi-4-AWQ | SGLang 최적화 부족, 속도 저하 | 속도 중요하면 Qwen3-14B-AWQ로 대체 |
| GLM-4-9B-Chat-1M | 1M 컨텍스트 시 VRAM 폭증 | context-length를 32K~128K로 제한 |
| KORMo-10B-sft | AWQ 미제공, BF16만 서빙 가능 | VRAM 20GB 확보 필수 |
| Llama-3.1-8B-AWQ | 한국어 품질 매우 낮음 | 한국어 서비스에 사용 금지 |
| DeepSeek-R1-Distill-Qwen-32B | BF16 64GB — 96GB GPU 전용 | AWQ 모델 출시 대기 또는 FP8 시도 |
결론: 서빙 자동화 스크립트
23개 모델을 수동으로 관리하는 것은 비현실적입니다. 모델 이름만 넘기면 양자화, 백엔드, 포트, 컨텍스트 길이가 자동으로 결정되는 서빙 자동화 스크립트를 사용합니다.
자동화 스크립트 핵심 구조
#!/bin/bash
# serve.sh — 모델명으로 최적 설정 자동 적용
MODEL=$1
PORT=$2
# 기본 설정
BACKEND="flashinfer"
MEM_FRAC="0.85"
CTX="32768"
EXTRA_ARGS=""
# 모델별 특수 설정
case $MODEL in
*"FP8"*) EXTRA_ARGS="--quantization fp8" ;;
*"1M"*) CTX="131072" ;; # 128K로 제한
*"Phi"*) CTX="16384" ;; # Phi-4 컨텍스트
*"Llama"*) CTX="8192" ;; # Llama 컨텍스트
esac
# 기존 프로세스 정리
lsof -ti :$PORT | xargs -r kill -9 2>/dev/null
sleep 2
# 서빙 시작
python -m sglang.launch_server \
--model-path $MODEL \
--port $PORT \
--attention-backend $BACKEND \
--context-length $CTX \
--mem-fraction-static $MEM_FRAC \
$EXTRA_ARGS핵심 설계: flashinfer를 모든 모델의 기본 백엔드로 사용하여 MoE/Dense 구분을 없앴습니다. 모델 경로의 키워드(FP8, 1M, Phi, Llama)로 특수 설정을 자동 감지합니다.
5가지 핵심 원칙
flashinfer 통일
MoE든 Dense든 flashinfer를 기본으로 — 모델 구분 불필요
AWQ 우선
VRAM이 충분해도 AWQ 사용 — 속도 향상 + 동시 요청 여유 확보
포트 규칙화
30000 + (파라미터 × 10) + 양자화 오프셋 — 기억할 필요 없는 체계
VRAM 30% 여유
모델 가중치 × 1.3 < GPU VRAM — 동시 접속 대비
핫스왑 설계
새 모델 먼저 올리고, 확인 후 교체 — 다운타임 0초
이 글의 핵심 정리
- ✓23개 모델 서빙 설정 총정리 — 양자화, 백엔드, VRAM, 포트 모두 포함
- ✓양자화 선택: VRAM ≤ 24GB → AWQ 필수, 48GB+ → FP8/BF16 선택 가능
- ✓MoE 필수 설정: --attention-backend flashinfer (triton 사용 시 크래시)
- ✓VRAM 판단 공식: 모델 VRAM × 1.3 < GPU VRAM → 서빙 가능
- ✓포트 규칙: 30000 + (파라미터 × 10) + 양자화 오프셋(BF16=0, AWQ=1, FP8=2)
- ✓핫스왑: 새 포트에 먼저 올리고, 확인 후 프록시 전환 — 다운타임 0초
함께 읽으면 좋은 글
본 가이드는 2026년 2월 기준으로 작성되었습니다. SGLang 0.5.8.post1, CUDA 12.8, RTX PRO 6000(96GB) 및 RTX 5060 Ti(16GB) 환경에서 검증했습니다. 모델 버전이나 SGLang 업데이트에 따라 일부 설정이 변경될 수 있습니다. 특히 MoE 지원은 SGLang 업데이트마다 개선되고 있으므로, 최신 릴리스 노트를 확인하시기 바랍니다. 본 콘텐츠의 비상업적 공유는 자유이나, 상업적 이용 시 문의 페이지를 통해 연락 바랍니다.
댓글
(4개)로그인하면 댓글을 작성할 수 있습니다.
23모델 서빙 설정을 한눈에 볼 수 있는 표가 정말 유용합니다. MoE에서 flashinfer가 필수라는 건 직접 겪어봐야 아는 건데, 미리 알려주셔서 시간 절약했습니다.
핫스왑 전략이 인상적입니다. 포트 고정하고 프로세스만 바꾸는 방식은 프로덕션에서 바로 쓸 수 있겠네요. OOM 대응 가이드도 실전적입니다.
VRAM 점유 테이블 덕분에 우리 GPU에 어떤 모델을 올릴 수 있는지 바로 판단할 수 있었습니다. AWQ vs BF16 선택 기준도 명확하고요.
관련 글
© 2026 TreeRU. All rights reserved.
본 콘텐츠의 저작권은 TreeRU에 있으며, 출처를 밝히지 않은 무단 전재 및 재배포를 금합니다. 인용 시 출처(treeru.com)를 반드시 명시해 주세요.