nano-vLLM Prefill/Decode Loop

마지막 수정:

inferencenano-vllmprefilldecode

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에서 반드시 갱신해야 하는 값은 무엇인가?