본문 바로가기

LLM

SGLang launch_server 파라미터 완전 정리

반응형
python -m sglang.launch_server --help

이 명령어 치면 100개 넘는 파라미터가 쏟아져요. 뭐가 뭔지 몰라서 그냥 기본값으로 쓰는 경우가 많은데, 파라미터를 제대로 알면 성능이 2~3배 차이 나요.

전체 파라미터를 카테고리별로 완전 정리해 드릴게요.


1. 모델 및 토크나이저

--model-path (필수)

모델 가중치 경로예요. 로컬 폴더 또는 HuggingFace repo ID를 받아요.

# HuggingFace에서 다운로드
python -m sglang.launch_server \
  --model-path meta-llama/Llama-3.1-8B-Instruct

# 로컬 폴더
python -m sglang.launch_server \
  --model-path /data/models/llama-3.1-8b

# --model 으로도 쓸 수 있음 (별칭)
python -m sglang.launch_server \
  --model meta-llama/Llama-3.1-8B-Instruct

--tokenizer-path

토크나이저 경로예요. 기본값은 --model-path와 동일해요. 모델과 토크나이저가 다른 경로에 있을 때 사용해요.

python -m sglang.launch_server \
  --model-path /data/models/my-finetuned-model \
  --tokenizer-path meta-llama/Llama-3.1-8B-Instruct  # 원본 토크나이저 사용

--tokenizer-mode

토크나이저 모드예요. 기본값 auto.

# auto: 빠른 토크나이저 우선 사용 (기본값, 권장)
--tokenizer-mode auto

# slow: 느린 토크나이저 강제 사용 (특수 경우에만)
--tokenizer-mode slow

--tokenizer-worker-num

토크나이저 매니저의 워커 수예요. 기본값 1. 요청이 많을 때 늘리면 토크나이징 병목이 해소돼요.

# 고트래픽 환경에서
python -m sglang.launch_server \
  --model-path meta-llama/Llama-3.1-8B-Instruct \
  --tokenizer-worker-num 4

--skip-tokenizer-init

토크나이저 초기화를 건너뛰어요. input_ids를 직접 전달할 때 사용해요.

python -m sglang.launch_server \
  --model-path meta-llama/Llama-3.1-8B-Instruct \
  --skip-tokenizer-init
# 이 경우 input_ids 직접 전달
response = client.post("/generate", json={
    "input_ids": [1, 29871, 13, 3645, ...],  # 토큰 ID 직접
    "sampling_params": {"max_new_tokens": 128}
})

--load-format

모델 가중치 포맷이에요. 기본값 auto.

# auto: safetensors 우선, 없으면 pt (기본값, 대부분 사용)
--load-format auto

# safetensors: 명시적으로 safetensors만 로드
--load-format safetensors

# gguf: GGUF 양자화 모델 로드
python -m sglang.launch_server \
  --model-path /models/llama-3.1-8b-q4.gguf \
  --load-format gguf

# bitsandbytes: bnb 양자화 모델
--load-format bitsandbytes

# dummy: 랜덤 가중치로 초기화 (프로파일링/테스트용)
--load-format dummy

# npcache: numpy 캐시로 로딩 속도 향상
--load-format npcache

# layered: 레이어 단위 로딩 (메모리 피크 줄이기)
--load-format layered

--trust-remote-code

HuggingFace Hub의 커스텀 모델 코드를 허용해요. DeepSeek, Qwen 등 커스텀 모델링 파일이 있는 모델에 필요해요.

# DeepSeek, Qwen 등 커스텀 모델 필수
python -m sglang.launch_server \
  --model-path deepseek-ai/DeepSeek-V3 \
  --trust-remote-code

--context-length

모델의 최대 컨텍스트 길이예요. 기본값은 모델의 config.json 값을 사용해요.

# 기본값보다 짧게 (메모리 절약)
python -m sglang.launch_server \
  --model-path meta-llama/Llama-3.1-8B-Instruct \
  --context-length 8192  # 기본 131072를 8192로 제한

# 기본값보다 길게 (YaRN 설정과 함께)
python -m sglang.launch_server \
  --model-path Qwen/Qwen3-8B \
  --context-length 65536 \
  --json-model-override-args '{"rope_scaling":{"rope_type":"yarn","factor":2.0}}'

--revision

특정 모델 버전을 지정해요. 브랜치명, 태그명, 커밋 ID 모두 가능해요.

python -m sglang.launch_server \
  --model-path meta-llama/Llama-3.1-8B-Instruct \
  --revision abc123def  # 특정 커밋

--model-impl

모델 구현체를 선택해요. 기본값 auto.

# auto: SGLang 구현 우선, 없으면 Transformers (기본값)
--model-impl auto

# sglang: SGLang 구현만 사용
--model-impl sglang

# transformers: HuggingFace Transformers 구현 사용
--model-impl transformers

--is-embedding

CausalLM을 임베딩 모델로 사용할 때 설정해요.

python -m sglang.launch_server \
  --model-path Alibaba-NLP/gte-Qwen2-7B-instruct \
  --is-embedding

--enable-multimodal

멀티모달 기능을 활성화해요. 비전 언어 모델(VLM) 서빙 시 사용해요.

python -m sglang.launch_server \
  --model-path lmms-lab/llava-onevision-qwen2-7b-ov \
  --enable-multimodal \
  --chat-template chatml-llava

2. HTTP 서버

--host

HTTP 서버 호스트예요. 기본값 127.0.0.1 (로컬만 접근 가능).

# 외부 접근 허용 (프로덕션)
python -m sglang.launch_server \
  --model-path meta-llama/Llama-3.1-8B-Instruct \
  --host 0.0.0.0

# 특정 IP만 허용
--host 192.168.1.100

--port

HTTP 서버 포트예요. 기본값 30000.

python -m sglang.launch_server \
  --model-path meta-llama/Llama-3.1-8B-Instruct \
  --port 8080

--api-key

API 인증 키예요. 설정하면 모든 요청에 Authorization: Bearer <key> 헤더가 필요해요.

python -m sglang.launch_server \
  --model-path meta-llama/Llama-3.1-8B-Instruct \
  --api-key my-secret-key-12345
# 클라이언트에서 사용
client = OpenAI(
    base_url="http://localhost:30000/v1",
    api_key="my-secret-key-12345"
)

--served-model-name

API 응답에서 표시될 모델 이름이에요. OpenAI 호환 클라이언트에서 model 필드에 사용돼요.

python -m sglang.launch_server \
  --model-path meta-llama/Llama-3.1-8B-Instruct \
  --served-model-name gpt-3.5-turbo  # 클라이언트에서 이 이름으로 호출
# 이렇게 호출 가능
response = client.chat.completions.create(
    model="gpt-3.5-turbo",  # --served-model-name 값
    messages=[...]
)

--skip-server-warmup

서버 시작 시 워밍업을 건너뛰어요. 빠른 시작이 필요할 때 사용하지만 첫 요청이 느릴 수 있어요.

python -m sglang.launch_server \
  --model-path meta-llama/Llama-3.1-8B-Instruct \
  --skip-server-warmup

--grpc-mode

HTTP 대신 gRPC 서버를 사용해요. 고성능 내부 서비스 통신에 유용해요.

python -m sglang.launch_server \
  --model-path meta-llama/Llama-3.1-8B-Instruct \
  --grpc-mode \
  --port 50051

3. 양자화 및 데이터 타입

--dtype

모델 가중치와 활성화의 데이터 타입이에요. 기본값 auto.

# auto: FP32/FP16 모델은 FP16, BF16 모델은 BF16 (기본값)
--dtype auto

# bfloat16: 정밀도와 범위의 균형 (Llama, DeepSeek 권장)
python -m sglang.launch_server \
  --model-path meta-llama/Llama-3.3-70B-Instruct \
  --dtype bfloat16

# float16 / half: AWQ 양자화 시 권장
python -m sglang.launch_server \
  --model-path TheBloke/Llama-2-13B-AWQ \
  --dtype half

# float32: 최고 정밀도, 메모리 2배 소모
--dtype float32

--quantization

양자화 방식이에요. 기본값 없음 (양자화 미적용).

# FP8 양자화 (H100/A100 권장, 품질 손실 최소)
python -m sglang.launch_server \
  --model-path meta-llama/Llama-3.3-70B-Instruct \
  --quantization fp8

# AWQ INT4 (모든 GPU, 메모리 75% 절감)
python -m sglang.launch_server \
  --model-path TheBloke/Llama-2-70B-AWQ \
  --quantization awq \
  --dtype half  # AWQ는 float16 권장

# GPTQ INT4
python -m sglang.launch_server \
  --model-path TheBloke/Llama-2-70B-GPTQ \
  --quantization gptq

# BitsAndBytes (NF4/INT8)
python -m sglang.launch_server \
  --model-path meta-llama/Llama-3.1-8B-Instruct \
  --quantization bitsandbytes \
  --load-format bitsandbytes

# MXFP4 (최신 Blackwell GPU용, 메모리 최대 절감)
--quantization mxfp4

양자화 방식별 GPU 요구사항

FP8:          H100, A100, A10G (Ampere/Hopper 이상)
AWQ INT4:     모든 CUDA GPU
GPTQ INT4:    모든 CUDA GPU
BitsAndBytes: 모든 CUDA GPU
MXFP4:        Blackwell (B200, GB200) 전용

--kv-cache-dtype

KV 캐시 저장 데이터 타입이에요. 기본값 auto (모델 데이터 타입 따름).

# FP8 KV 캐시 (메모리 절약, 미세한 품질 손실)
python -m sglang.launch_server \
  --model-path meta-llama/Llama-3.1-70B-Instruct \
  --kv-cache-dtype fp8_e4m3  # 권장
  # 또는 --kv-cache-dtype fp8_e5m2

# BF16 KV 캐시 (고품질)
--kv-cache-dtype bfloat16

--quantization-param-path

KV 캐시 스케일링 팩터가 담긴 JSON 파일 경로예요. FP8 KV 캐시 사용 시 정확도를 위해 제공해요.

python -m sglang.launch_server \
  --model-path meta-llama/Llama-3.1-70B-Instruct-FP8 \
  --kv-cache-dtype fp8_e4m3 \
  --quantization-param-path /path/to/kv_cache_scales.json

4. 메모리 및 스케줄링

--mem-fraction-static

GPU 메모리 중 모델 가중치 + KV 캐시에 사용할 비율이에요. 기본값 0.9.

# OOM 에러 발생 시 줄이기
python -m sglang.launch_server \
  --model-path meta-llama/Llama-3.3-70B-Instruct \
  --mem-fraction-static 0.80

# 안정적인 프로덕션 설정
--mem-fraction-static 0.85

# 기본값 (대부분 환경에서 OK)
--mem-fraction-static 0.90

OOM 발생 시 조정 순서

0.90 → 0.85 → 0.80 → 0.75

--max-running-requests

동시에 처리 가능한 최대 요청 수예요. 기본값은 자동 계산돼요.

# 낮은 메모리 GPU에서 제한
python -m sglang.launch_server \
  --model-path meta-llama/Llama-3.1-8B-Instruct \
  --max-running-requests 256

# 고트래픽 서버
--max-running-requests 2048

--max-queued-requests

대기열에 넣을 수 있는 최대 요청 수예요. 이 수를 초과하면 503 에러를 반환해요.

python -m sglang.launch_server \
  --model-path meta-llama/Llama-3.1-8B-Instruct \
  --max-queued-requests 1000

--max-total-tokens

메모리 풀의 최대 토큰 수예요. 기본값은 mem-fraction-static으로 자동 계산돼요. 보통 직접 설정할 필요 없어요.

# 개발/디버깅 목적으로만 사용
--max-total-tokens 50000

--chunked-prefill-size

청크드 프리필의 청크당 최대 토큰 수예요. 기본값은 모델에 따라 자동 설정.

# 긴 프롬프트 프리필 OOM 에러 발생 시 줄이기
python -m sglang.launch_server \
  --model-path meta-llama/Llama-3.1-8B-Instruct \
  --chunked-prefill-size 4096  # 기본보다 작게

# 청크드 프리필 비활성화
--chunked-prefill-size -1

--max-prefill-tokens

한 번의 프리필 배치에 처리할 최대 토큰 수예요. 기본값 16384.

# 고메모리 GPU에서 처리량 향상
python -m sglang.launch_server \
  --model-path meta-llama/Llama-3.1-8B-Instruct \
  --max-prefill-tokens 32768

# 메모리 절약
--max-prefill-tokens 8192

--schedule-policy

요청 스케줄링 정책이에요. 기본값 fcfs (선입선출).

# fcfs: 선입선출 (기본값, 공정한 처리)
--schedule-policy fcfs

# lpm: Longest Prefix Match - 캐시 히트율 최대화
python -m sglang.launch_server \
  --model-path meta-llama/Llama-3.1-8B-Instruct \
  --schedule-policy lpm  # RAG, 챗봇에 권장

# random: 랜덤 스케줄링
--schedule-policy random

# priority: 우선순위 기반
python -m sglang.launch_server \
  --model-path meta-llama/Llama-3.1-8B-Instruct \
  --schedule-policy priority \
  --enable-priority-scheduling

--schedule-conservativeness

스케줄링 보수성이에요. 기본값 1.0. 값이 클수록 보수적으로 스케줄링해요.

# 요청이 자주 retract 될 때 값 올리기
python -m sglang.launch_server \
  --model-path meta-llama/Llama-3.1-8B-Instruct \
  --schedule-conservativeness 1.5

--radix-eviction-policy

RadixAttention 캐시 제거 정책이에요. 기본값 lru.

# lru: 가장 최근에 사용되지 않은 것 제거 (기본값)
--radix-eviction-policy lru

# lfu: 사용 빈도 낮은 것 제거 (반복 패턴이 많을 때)
--radix-eviction-policy lfu

5. 병렬화

--tp (텐서 병렬)

텐서 병렬 크기예요. 사용할 GPU 수와 같게 설정해요.

# 2 GPU로 13B 모델
python -m sglang.launch_server \
  --model-path meta-llama/Llama-3.1-13B-Instruct \
  --tp 2

# 4 GPU로 70B 모델
python -m sglang.launch_server \
  --model-path meta-llama/Llama-3.3-70B-Instruct \
  --tp 4

# 8 GPU로 405B 모델
python -m sglang.launch_server \
  --model-path meta-llama/Llama-3.1-405B-Instruct-FP8 \
  --tp 8

--dp (데이터 병렬)

데이터 병렬 크기예요. 메모리가 충분할 때 처리량을 늘려요.

# 메모리가 넉넉할 때 처리량 2배
python -m sglang.launch_server \
  --model-path meta-llama/Llama-3.1-8B-Instruct \
  --dp 2  # 총 2개의 모델 복제본

# tp와 함께 사용 (총 4 GPU)
python -m sglang.launch_server \
  --model-path meta-llama/Llama-3.1-13B-Instruct \
  --tp 2 \
  --dp 2

--pp (파이프라인 병렬)

파이프라인 병렬 크기예요. 매우 긴 컨텍스트나 대규모 모델에 사용해요.

python -m sglang.launch_server \
  --model-path meta-llama/Llama-3.1-405B-Instruct \
  --tp 4 \
  --pp 2   # 파이프라인 2단계

--ep (전문가 병렬 — MoE 모델용)

MoE(Mixture of Experts) 모델의 전문가 병렬 크기예요.

# DeepSeek V3/R1 등 MoE 모델
python -m sglang.launch_server \
  --model-path deepseek-ai/DeepSeek-V3 \
  --tp 8 \
  --ep 8   # 전문가 병렬 8

--enable-dp-attention

DP 어텐션을 활성화해요. 대규모 데이터 병렬 환경에서 어텐션 연산을 분산해요.

# DeepSeek 모델 대규모 배포 시
python -m sglang.launch_server \
  --model-path deepseek-ai/DeepSeek-V3 \
  --tp 8 \
  --dp 4 \
  --enable-dp-attention

6. 멀티 노드 분산 서빙

--nnodes

총 노드 수예요. 멀티 노드 배포 시 설정해요.

# 2개 노드
--nnodes 2

--node-rank

현재 노드의 번호예요. 0부터 시작해요.

--node-rank 0  # 마스터 노드
--node-rank 1  # 워커 노드

--dist-init-addr

분산 환경 초기화 주소예요. 마스터 노드의 호스트:포트 형식이에요.

# 노드 0 (마스터)
python -m sglang.launch_server \
  --model-path meta-llama/Llama-3.1-70B-Instruct \
  --tp 8 \
  --nnodes 2 \
  --node-rank 0 \
  --dist-init-addr 192.168.1.100:50000

# 노드 1 (워커)
python -m sglang.launch_server \
  --model-path meta-llama/Llama-3.1-70B-Instruct \
  --tp 8 \
  --nnodes 2 \
  --node-rank 1 \
  --dist-init-addr 192.168.1.100:50000

--nccl-port

NCCL 분산 환경 설정 포트예요. 기본값은 랜덤 포트.

# 방화벽 설정이 있을 때 고정 포트 지정
--nccl-port 29500

7. 성능 최적화

--enable-torch-compile

torch.compile로 소형 모델의 속도를 높여요. 주로 작은 배치 사이즈에서 효과적이에요.

# 8B 이하 소형 모델에서 효과적
python -m sglang.launch_server \
  --model-path meta-llama/Llama-3.1-8B-Instruct \
  --enable-torch-compile

참고: 공식 문서에서 "out of maintenance" 표시가 있어 최신 버전에서는 주의가 필요해요.


--cuda-graph-max-bs

CUDA 그래프 최대 배치 사이즈예요. CUDA 그래프는 GPU 커널 호출 오버헤드를 줄여요.

# 고메모리 GPU에서 처리량 향상
python -m sglang.launch_server \
  --model-path meta-llama/Llama-3.1-8B-Instruct \
  --cuda-graph-max-bs 256

# 70B 이상 대형 모델에서 메모리 절약을 위해 줄이기
--cuda-graph-max-bs 64

--disable-cuda-graph

CUDA 그래프를 비활성화해요. 멀티 노드에서 데드락이 발생할 때 시도해요.

python -m sglang.launch_server \
  --model-path meta-llama/Llama-3.1-8B-Instruct \
  --tp 4 \
  --disable-cuda-graph  # 데드락 발생 시

--enable-p2p-check

GPU 간 P2P 접근 지원 여부를 확인해요. "peer access is not supported" 에러 발생 시 추가해요.

python -m sglang.launch_server \
  --model-path meta-llama/Llama-3.1-8B-Instruct \
  --tp 2 \
  --enable-p2p-check

--enable-deterministic-inference

결정론적 추론을 활성화해요. 같은 입력에 항상 같은 출력이 나와요 (테스트, 재현성 필요 시).

python -m sglang.launch_server \
  --model-path meta-llama/Llama-3.1-8B-Instruct \
  --enable-deterministic-inference

8. Speculative Decoding (투기적 디코딩)

--speculative-algorithm

투기적 디코딩 알고리즘이에요.

# EAGLE (가장 빠름, 별도 드래프트 모델 필요)
python -m sglang.launch_server \
  --model-path meta-llama/Llama-3.1-8B-Instruct \
  --speculative-algorithm EAGLE \
  --speculative-draft-model-path lmzheng/sglang-EAGLE-llama3.1-Instruct-8B \
  --speculative-num-draft-tokens 5

# EAGLE3 (최신, 드래프트 모델 없이도 동작)
python -m sglang.launch_server \
  --model-path meta-llama/Llama-3.1-70B-Instruct \
  --speculative-algorithm EAGLE3 \
  --tp 4

# NEXTN (N-gram 기반, 드래프트 모델 불필요)
python -m sglang.launch_server \
  --model-path meta-llama/Llama-3.1-8B-Instruct \
  --speculative-algorithm NEXTN \
  --speculative-num-draft-tokens 3

--speculative-draft-model-path

투기적 디코딩에 사용할 드래프트 모델 경로예요.

python -m sglang.launch_server \
  --model-path meta-llama/Llama-3.1-70B-Instruct \
  --speculative-algorithm EAGLE \
  --speculative-draft-model-path /path/to/eagle-draft-model

--speculative-num-draft-tokens

한 번에 예측할 드래프트 토큰 수예요. 기본값 5.

# 더 공격적인 투기 (빠르지만 수락률 낮을 수 있음)
--speculative-num-draft-tokens 8

# 보수적인 투기 (수락률 높음)
--speculative-num-draft-tokens 3

9. PD 분리 배포 (Prefill-Decode Disaggregation)

--disaggregation-mode

PD 분리 모드예요.

# Prefill 전용 서버
python -m sglang.launch_server \
  --model-path meta-llama/Llama-3.1-70B-Instruct \
  --tp 4 \
  --disaggregation-mode prefill \
  --disaggregation-transfer-backend mooncake \
  --port 30000

# Decode 전용 서버
python -m sglang.launch_server \
  --model-path meta-llama/Llama-3.1-70B-Instruct \
  --tp 4 \
  --disaggregation-mode decode \
  --disaggregation-transfer-backend mooncake \
  --port 30001

--disaggregation-transfer-backend

KV 캐시 전송 백엔드예요.

# mooncake: 고성능 KV 전송 (권장)
--disaggregation-transfer-backend mooncake

# nixl: NVIDIA 전송 라이브러리
--disaggregation-transfer-backend nixl

10. LoRA 서빙

--lora-paths

LoRA 어댑터 경로 목록이에요. 여러 LoRA를 동시에 서빙해요.

python -m sglang.launch_server \
  --model-path meta-llama/Llama-3.1-8B-Instruct \
  --lora-paths \
    lora_name_1=/path/to/lora1 \
    lora_name_2=/path/to/lora2 \
    lora_name_3=/path/to/lora3
# 특정 LoRA 선택해서 요청
response = client.chat.completions.create(
    model="meta-llama/Llama-3.1-8B-Instruct",
    messages=[{"role": "user", "content": "안녕"}],
    extra_body={"lora_uid": "lora_name_1"}
)

--max-loras-per-batch

배치당 최대 LoRA 수예요. 기본값 8.

python -m sglang.launch_server \
  --model-path meta-llama/Llama-3.1-8B-Instruct \
  --lora-paths lora1=/path/to/lora1 lora2=/path/to/lora2 \
  --max-loras-per-batch 4

11. 채팅 템플릿

--chat-template

커스텀 채팅 템플릿이에요. HuggingFace 토크나이저에 템플릿이 없을 때 사용해요.

# 사전 정의된 템플릿 사용
python -m sglang.launch_server \
  --model-path lmms-lab/llava-onevision-qwen2-7b-ov \
  --chat-template chatml-llava

# 파일에서 Jinja2 템플릿 로드
python -m sglang.launch_server \
  --model-path /path/to/custom-model \
  --chat-template /path/to/template.jinja

--hf-chat-template-name

HuggingFace 토크나이저의 named 템플릿을 선택해요.

# 툴 사용 템플릿 선택
python -m sglang.launch_server \
  --model-path meta-llama/Llama-3.1-8B-Instruct \
  --hf-chat-template-name tool_use

12. 로깅 및 모니터링

--log-level

모든 로거의 로그 레벨이에요. 기본값 info.

# 상세 로그
--log-level debug

# 경고만
--log-level warning

# 에러만
--log-level error

--enable-metrics

Prometheus 메트릭을 활성화해요. /metrics 엔드포인트로 접근 가능해요.

python -m sglang.launch_server \
  --model-path meta-llama/Llama-3.1-8B-Instruct \
  --enable-metrics
# 메트릭 확인
curl http://localhost:30000/metrics

--log-requests

모든 요청의 입력/출력을 로깅해요.

python -m sglang.launch_server \
  --model-path meta-llama/Llama-3.1-8B-Instruct \
  --log-requests

--log-requests-level

로그 상세 수준이에요.

# 0: 메타데이터만 (기본)
--log-requests-level 0

# 1: 메타데이터 + 샘플링 파라미터
--log-requests-level 1

# 2: 메타데이터 + 파라미터 + 입출력 일부
--log-requests-level 2

# 3: 모든 입출력 전체 로깅
--log-requests-level 3

--show-time-cost

각 단계별 소요 시간을 보여줘요. 성능 프로파일링에 유용해요.

python -m sglang.launch_server \
  --model-path meta-llama/Llama-3.1-8B-Instruct \
  --show-time-cost

13. MoE 전용 (DeepSeek 등)

--moe-dense-tp-size

MoE 모델에서 Dense 레이어의 텐서 병렬 크기예요.

# DeepSeek V3 최적화
python -m sglang.launch_server \
  --model-path deepseek-ai/DeepSeek-V3 \
  --tp 8 \
  --ep 8 \
  --moe-dense-tp-size 8

--enable-moe-padding

MoE 배치 패딩을 활성화해요. 처리량 향상에 도움돼요.

python -m sglang.launch_server \
  --model-path deepseek-ai/DeepSeek-V3 \
  --tp 8 \
  --enable-moe-padding

14. 모델 오버라이드

--json-model-override-args

모델 config.json의 값을 JSON으로 오버라이드해요.

# YaRN으로 컨텍스트 길이 확장
python -m sglang.launch_server \
  --model-path Qwen/Qwen3-8B \
  --json-model-override-args '{"rope_scaling":{"rope_type":"yarn","factor":4.0,"original_max_position_embeddings":32768}}'

# 최대 시퀀스 길이 수동 설정
python -m sglang.launch_server \
  --model-path meta-llama/Llama-3.1-8B-Instruct \
  --json-model-override-args '{"max_position_embeddings": 16384}'

15. 설정 파일

--config

YAML 설정 파일로 파라미터를 관리해요. CLI 인수가 설정 파일 값을 오버라이드해요.

# config.yaml
model-path: meta-llama/Llama-3.1-70B-Instruct
host: 0.0.0.0
port: 30000
tp: 4
mem-fraction-static: 0.85
dtype: bfloat16
enable-metrics: true
log-requests: true
max-running-requests: 1024
# 설정 파일로 서버 실행
python -m sglang.launch_server --config config.yaml

# CLI 인수가 설정 파일보다 우선
python -m sglang.launch_server --config config.yaml --port 8080

자주 쓰는 조합 레시피

① 단일 GPU, 7~8B 모델, 빠른 시작

python -m sglang.launch_server \
  --model-path meta-llama/Llama-3.1-8B-Instruct \
  --host 0.0.0.0 \
  --port 30000 \
  --mem-fraction-static 0.85

② 4 GPU, 70B 모델, 프로덕션

python -m sglang.launch_server \
  --model-path meta-llama/Llama-3.3-70B-Instruct \
  --host 0.0.0.0 \
  --port 30000 \
  --tp 4 \
  --dtype bfloat16 \
  --mem-fraction-static 0.85 \
  --max-running-requests 1024 \
  --schedule-policy lpm \
  --enable-metrics \
  --log-requests

③ AWQ 양자화 (메모리 절약)

python -m sglang.launch_server \
  --model-path TheBloke/Llama-2-70B-AWQ \
  --quantization awq \
  --dtype half \
  --tp 2 \
  --kv-cache-dtype fp8_e4m3 \
  --mem-fraction-static 0.80

④ DeepSeek V3 대규모 배포

python -m sglang.launch_server \
  --model-path deepseek-ai/DeepSeek-V3 \
  --trust-remote-code \
  --tp 8 \
  --ep 8 \
  --dtype bfloat16 \
  --enable-dp-attention \
  --mem-fraction-static 0.88

⑤ EAGLE 투기적 디코딩 (저레이턴시)

python -m sglang.launch_server \
  --model-path meta-llama/Llama-3.1-8B-Instruct \
  --speculative-algorithm EAGLE3 \
  --speculative-num-draft-tokens 5 \
  --tp 1

⑥ 임베딩 모델 서빙

python -m sglang.launch_server \
  --model-path Alibaba-NLP/gte-Qwen2-7B-instruct \
  --is-embedding \
  --host 0.0.0.0 \
  --port 30001

마무리

파라미터 우선순위 기준이에요.

필수:
  --model-path       ← 반드시 설정

거의 항상 설정:
  --host 0.0.0.0     ← 외부 접근
  --port             ← 포트
  --tp               ← GPU 수에 맞게
  --dtype bfloat16   ← 대부분 모델에서 권장
  --mem-fraction-static 0.85  ← OOM 방지

성능 튜닝:
  --schedule-policy lpm       ← 캐시 히트율 향상
  --enable-metrics            ← 모니터링
  --max-running-requests      ← 트래픽 제어

특수 상황:
  --trust-remote-code         ← DeepSeek, Qwen 등
  --quantization              ← 메모리 부족 시
  --speculative-algorithm     ← 저레이턴시 필요 시
  --disaggregation-mode       ← 대규모 PD 분리

모든 파라미터는 python -m sglang.launch_server --help로 확인할 수 있어요. 😄


 

메인 공식 문서 https://docs.sglang.io

서버 파라미터 전체 목록 https://docs.sglang.io/advanced_features/server_arguments.html

GitHub 소스 (실제 파라미터 정의) https://github.com/sgl-project/sglang/blob/main/python/sglang/srt/server_args.py

GitHub 메인 https://github.com/sgl-project/sglang


 

반응형