vLLM

vLLM

vLLM은 대규모 LLM 서빙을 위한 고처리량 추론 엔진이에요. Transformers 모델을 백엔드로 사용해 vLLM으로 서빙하는 방법을 살펴볼게요.

출처: 문서

본문

vLLM은 대규모로 LLM을 서빙하기 위한 고처리량 추론 엔진이에요. 요청을 연속으로 배칭하고, PagedAttention으로 KV cache 메모리를 컴팩트하게 유지해요.

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

from vllm import LLM

llm = LLM(model="meta-llama/Llama-3.2-1B", model_impl="transformers")
print(llm.generate(["The capital of France is"]))

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

vllm serve meta-llama/Llama-3.2-1B \
    --task generate \
    --model-impl transformers

Transformers 통합 과정

  1. AutoConfig.from_pretrained()가 Hub 또는 Hugging Face 캐시에서 모델의 config.json을 불러와요. vLLM은 architectures 필드를 자체 모델 레지스트리와 비교해 어떤 vLLM 모델 클래스를 쓸지 결정해요.
  2. 모델이 레지스트리에 없으면 vLLM은 AutoModel.from_config()를 호출해 Transformers 모델 구현을 대신 불러와요.
  3. AutoTokenizer.from_pretrained()가 토크나이저 파일을 불러와요. vLLM은 추론 중 오버헤드를 줄이기 위해 토크나이저 내부 일부를 캐시해요.
  4. 모델 가중치는 safetensors 포맷으로 Hub에서 다운로드돼요.

model_impl="transformers"로 설정하면 vLLM 모델 레지스트리를 우회하고 Transformers에서 직접 불러와요. vLLM은 Transformers 모델 구조를 유지하면서 대부분의 모델 모듈(MoE, attention, 선형 레이어)을 자체 최적화 버전으로 교체해요.

리소스 (Resources)

더 알아보기 (Learn more)