Ce face Chunked prefill (--enable-chunked-prefill)
Chunked prefill procesează prompturile lungi în bucăți și le pune în același batch cu cererile aflate în decode. Echilibrează operațiile limitate de calcul (prefill) cu cele limitate de memorie (decode) și îmbunătățește throughput-ul și latența.
În V1 este activ implicit ori de câte ori este posibil. Scheduler-ul prioritizează decode-ul: pune întâi toate cererile în decode, apoi prefill-uri cât permite bugetul max_num_batched_tokens; un prefill care nu încape este împărțit automat.
Reglajul se face din --max-num-batched-tokens: valori mici (de exemplu 2048) dau ITL mai bun, valori mari dau TTFT mai bun; pentru throughput maxim documentația recomandă peste 8192, mai ales pentru modele mici pe GPU-uri mari. Cu chunked prefill dezactivat, max_num_batched_tokens trebuie să fie mai mare decât max_model_len.
Sintaxă și opțiuni
| Opțiune / Parametru | Descriere |
|---|---|
--enable-chunked-prefill / --no-enable-chunked-prefill |
Activează sau dezactivează împărțirea prefill-ului. Opțiune booleană, fără valoare. |
--max-num-batched-tokens |
Bugetul de tokeni pe iterație. |
--long-prefill-token-threshold |
Pragul peste care un prompt este „lung”; 0 (implicit) dezactivează limita. |
--disable-chunked-mm-input |
Nu împarte un element multimodal între pași. |
Exemple practice
Exemplul 1: Buget mai mic pentru ITL mai bun
vllm serve meta-llama/Llama-3.1-8B-Instruct --max-num-batched-tokens 2048
Exemplul 2: Dezactivare explicită
vllm serve MODEL --no-enable-chunked-prefill --max-num-batched-tokens 32768 --max-model-len 16384
Greșeli frecvente și bune practici
- Scrii
--enable-chunked-prefill true. Opțiunea este booleană:--enable-chunked-prefillsau--no-enable-chunked-prefill. - Dezactivezi chunked prefill cu
--max-num-batched-tokensmai mic decât--max-model-len; serverul poate eșua la pornire. - Confunzi chunked prefill cu disaggregated prefill. Primul rulează în aceeași instanță; al doilea separă prefill-ul și decode-ul în instanțe diferite.