nano-vLLM Prefill/Decode Loop
마지막 수정:
nano-vLLM의 step()은 request를 조금씩 전진시킨다.
개념적으로는 다음 흐름이다.
select requests
-> prepare input tokens
-> allocate KV slots
-> model forward
-> sample next tokens
-> update request state
처음 구현에서는 prefill과 decode를 완전히 최적화할 필요는 없다. 중요한 것은 둘의 입력 shape와 state update가 다르다는 점을 코드로 분리하는 것이다.
prefill:
prompt chunk를 처리한다.
decode:
새 token 하나를 처리하고 다음 token을 생성한다.
확인
- engine step이 request 전체를 한 번에 끝내지 않는 이유는 무엇인가?
- prefill step과 decode step의 input token 수는 어떻게 다른가?
- model forward 뒤 request state에서 반드시 갱신해야 하는 값은 무엇인가?