dLLM Sampling과 Commit Step
마지막 수정:
dLLM에서 sampling은 일반 autoregressive sampling과 다르다.
일반 LLM에서는 sampler가 다음 token 하나를 고르고, 그 token이 곧바로 output sequence 뒤에 붙는다.
logits -> sample token -> append
dLLM에서는 logits가 canvas positions에 대해 나오고, sampler는 denoising 결과를 어떻게 받아들일지 결정한다.
canvas logits
-> accept / renoise
-> commit 여부 결정
accept와 renoise
denoising 중에는 어떤 position의 token 후보를 받아들이고, 어떤 position은 다시 noisy하게 둘 수 있다.
accept:
이 token 후보를 canvas에 반영한다.
renoise:
아직 확정하지 않고 다시 탐색하게 둔다.
이 과정은 “top-k로 다음 token 하나 뽑기”보다 request state와 더 강하게 연결된다.
commit
commit은 canvas에서 확정된 token들을 실제 output으로 내보내는 단계다.
denoise step:
사용자에게 새 token이 안 나갈 수 있다.
commit step:
하나 이상의 token이 출력될 수 있다.
그래서 dLLM에서는 throughput을 볼 때 committed token만 보면 부족하다. denoising step 수와 canvas position 수도 함께 봐야 한다.
연결
- dllm-token-canvas-denoising: canvas와 commit의 기본 구조
- vllm-diffusion-config-and-scheduler: scheduler가 denoise/commit step을 다루는 방식
확인
- autoregressive sampling과 dLLM sampling의 가장 큰 차이는 무엇인가?
- accept와 renoise는 각각 어떤 역할을 하는가?
- dLLM에서 committed token throughput만 보면 부족한 이유는 무엇인가?