Optimization Levels — 최적화 수준 -O0~O3

Optimization Levels

vLLM은 **최적화 레벨(-O0~-O3)**로 '시작 시간과 성능'을 맞바꾸도록 설계돼 있어요. 개발 중에는 빠르게 뜨고, 프로덕션에서는 최대 성능을 쓰라는 취지예요.

네 단계

  • -O0: 최적화 없음. 시작이 가장 빠르고 성능은 낮아요. 디버깅·초기 개발에 적합.
  • -O1: 빠른 최적화. 간단한 컴파일·퓨전과 PIECEWISE CUDA graphs.
  • -O2: 기본값. 추가 컴파일 범위, 추가 퓨전, FULL_AND_PIECEWISE CUDA graphs. 프로덕션 권장.
  • -O3: 공격적. 현재는 -O2와 같고 향후 더 많은 실험적 최적화가 들어갈 수 있어요.

사용 예

# CLI
vllm serve RedHatAI/Llama-3.2-1B-FP8 -O1
from vllm.entrypoints.llm import LLM
llm = LLM(model="RedHatAI/Llama-3.2-1B-FP8", optimization_level=2)  # -O2와 동일

튜닝 노브

최적화 레벨은 내부 플래그의 묶음이에요. -cc.mode, -cc.cudagraph_mode, -cc.pass_config.fuse_* 같은 플래그로 퓨전을 세밀하게 조절할 수 있고, 사용자가 직접 지정한 플래그가 레벨 기본값보다 우선해요.

문제 해결

  • 시작이 너무 느리면 -O0/-O1.
  • 컴파일 에러는 debug_dump_path로 디버깅.
  • 프로덕션에선 -O2로.

더 알아보기