v08 Sampling Params

마지막 수정:

inferencenano-vllmsampling

ModelRunner의 출력은 token id가 아니라 logits에 가깝다.

그래서 engine에는 logits를 token으로 바꾸는 sampling layer가 필요하다.

읽을 코드:

labs/nano-vllm/versions/v08_sampling_params/run.py

이번 단계에서 SamplingParams를 추가한다.

max_tokens
temperature
top_k
seed

temperature=0이면 greedy decoding이고, temperature가 양수이면 softmax 분포에서 sample한다.

이 단계의 목적은 고급 sampling을 모두 구현하는 것이 아니다. request마다 sampling 정책이 다르고, 그 정책이 Sequence 상태와 함께 engine 안을 이동한다는 점을 드러내는 것이다.

확인

  • sampling params는 scheduler의 관심사인가, model runner의 관심사인가?
  • 같은 prompt라도 seed와 temperature가 다르면 어떤 값이 달라져야 하는가?
  • production serving에서 sampling이 kernel optimization 후보가 되는 이유는 무엇인가?