SGLang

SGLang

SGLang은 저지연·고처리량 LLM 추론 엔진이에요. Transformers 모델을 백엔드로 사용해 SGLang으로 실행하는 방법을 살펴볼게요.

출처: 문서

본문

SGLang은 대규모 언어 모델(LLM)을 위한 저지연·고처리량 추론 엔진이에요. 에이전트형 워크플로를 구축하기 위한 프론트엔드 언어도 함께 제공해요.

Transformers 모델링 백엔드를 불러오려면 model_impl="transformers"로 설정해요.

import sglang as sgl

llm = sgl.Engine("meta-llama/Llama-3.2-1B-Instruct", model_impl="transformers")
print(llm.generate(["The capital of France is"], {"max_new_tokens": 20})[0])

온라인 서빙의 경우 sglang.launch_server 명령에 --model-impl transformers를 넘겨요.

python3 -m sglang.launch_server \
  --model-path meta-llama/Llama-3.2-1B-Instruct \
  --model-impl transformers \
  --host 0.0.0.0 \
  --port 30000

Transformers 통합 과정

model_impl="transformers"로 설정하면 SGLang이 자체 모델 매칭을 건너뛰고 Transformers 모델을 직접 사용해요.

  1. PreTrainedConfig.from_pretrained()가 Hub 또는 Hugging Face 캐시에서 모델의 config.json을 불러와요.
  2. AutoModel.from_config()가 config를 바탕으로 모델 클래스를 결정해요.
  3. 로딩 중 _attn_implementation이 "sglang"으로 설정돼요. 그러면 attention 호출이 SGLang의 RadixAttention 커널을 통해 이뤄져요.
  4. SGLang의 병렬 선형(parallel linear) 클래스가 선형 레이어를 대체해 텐서 병렬화를 지원해요.
  5. load_weights 함수가 safetensors 파일의 가중치로 모델을 채워요.

Transformers 모델 구조를 쓰면서도 SGLang의 모든 최적화 혜택을 받는 구조예요.

[!WARNING] 호환 모델은 _supports_attention_backend=True여야 SGLang이 attention 실행을 제어할 수 있어요. 자세한 내용은 추론용 호환 모델 백엔드 만들기 가이드를 참고하세요.

리소스 (Resources)

더 알아보기 (Learn more)