vLLM Speculative Decoding 순환

vLLM Speculative Decoding 순환 A sequence diagram generated by Archify. scheduled_spec_decode_tokens allocate_slots()에 num_lookahead_tokens 여유를 더해 예약 target logits + draft_probs 수락 토큰 (거부분 절단) propose(): 다음 draft draft_token_ids sampled_token_ids update_from_output()이 num_rejected만큼 num_computed_tokens 롤백 update_draft_token_ids() request.spec_token_ids에 저장 다음 스텝의 검증 대상으로 재스케줄 지난 스텝 draft 검증 다음 draft 제안 스텝 경계 반영 다음 스텝 Scheduler · 스텝 경계 · Sequence participant Scheduler 스텝 경계 GPUModelRunner · target 모델 · Sequence participant GPUModelRunner target 모델 RejectionSampler · 검증·수락 · Sequence participant RejectionSampler 검증·수락 Drafter · 제안기 · Sequence participant Drafter 제안기 Legend 주요 단계 반환 스텝 경계

한 스텝에 두 가지 일

  • • 이번 스텝은 지난 draft를 검증하면서 동시에 다음 draft를 만듦
  • • draft는 request.spec_token_ids에 실려 다음 schedule()에서 입력에 붙음

거부되면 되감음

  • • num_rejected = num_draft_tokens − num_accepted 만큼 num_computed_tokens 롤백
  • • 프리필 청크 중인 요청의 draft는 버림

제안기는 여러 종류, 순환은 하나

  • • ngram · eagle · mtp · dflash 등 제안기가 달라도 이 순환은 동일
  • • V2 모델 러너에서는 Proposer 대신 Speculator가 같은 자리를 맡음