vLLM 엔진 기동 시퀀스

vLLM 엔진 기동 시퀀스 A sequence diagram generated by Archify. EngineCore(vllm_config, executor_class) MultiprocExecutor 생성 랭크마다 WorkerProc 생성 init_device() → load_model() ready 핸드셰이크 determine_available_memory() profile_run(): 최대 배치 더미 forward 피크 활성 메모리 측정 KV에 쓸 수 있는 여유 바이트 initialize_from_config(kv_cache_configs) get_kv_cache_configs()로 블록 수 확정 KV 블록 텐서 할당 compile_or_warm_up_model() 컴파일 → 워밍업 → capture_model() Scheduler 생성 후 ready 프로세스 기동 메모리 프로파일링 KV 캐시 · 워밍업 서빙 준비 LLM / AsyncLLM · 진입점 · Sequence participant LLM / AsyncLLM 진입점 EngineCore · P1 프로세스 · Sequence participant EngineCore P1 프로세스 MultiprocExecutor · RPC 브로드캐스트 · Sequence participant MultiprocExecutor RPC 브로드캐스트 WorkerProc · 랭크마다 1개 · Sequence participant WorkerProc 랭크마다 1개 Legend 주요 단계 반환 호출

워커가 먼저, 프로파일링이 나중

  • • WorkerProc는 init_device() → load_model()까지 마치고 ready를 올림
  • • 가중치가 올라간 뒤에야 KV에 쓸 여유 메모리를 잴 수 있음

메모리 프로파일링

  • • determine_available_memory()가 profile_run()으로 피크 활성 메모리를 측정
  • • kv_cache_memory_bytes를 직접 주면 프로파일링을 건너뜀

블록 수가 정해진 뒤

  • • get_kv_cache_configs()로 블록 수를 확정하고 워커에 텐서를 할당
  • • Scheduler는 이 블록 수를 받아 마지막에 생성됨