Ce face Continuous batching (programarea cererilor)
Documentația vLLM listează continuous batching printre funcțiile de bază, alături de chunked prefill și prefix caching. Cererile noi intră în execuție pe măsură ce se eliberează loc, nu doar după ce s-a terminat tot batch-ul.
În V1, cu chunked prefill activ, scheduler-ul pune întâi în batch toate cererile aflate în decode, apoi adaugă prefill-uri cât încap în bugetul max_num_batched_tokens; un prefill prea mare este împărțit automat. Numărul de secvențe dintr-o iterație este limitat de max_num_seqs.
Când KV cache-ul nu ajunge pentru toate cererile, vLLM preemptează cereri și le recalculează mai târziu (în V1 modul implicit este RECOMPUTE). Jurnalul afișează atunci un avertisment de forma Sequence group 0 is preempted by PreemptionMode.RECOMPUTE mode because there is not enough KV cache space. Documentația recomandă: mai mult gpu_memory_utilization, max_num_seqs sau max_num_batched_tokens mai mici, ori mai mult tensor sau pipeline parallelism.
Sintaxă și opțiuni
| Opțiune / Parametru | Descriere |
|---|---|
--max-num-seqs |
Numărul maxim de secvențe procesate într-o iterație. |
--max-num-batched-tokens |
Bugetul de tokeni pe iterație. |
--scheduling-policy |
fcfs (implicit, ordinea sosirii) sau priority. |
--async-scheduling / --no-async-scheduling |
Programare asincronă, care evită golurile în folosirea GPU-ului. |
--max-num-queued-reqs |
Limita cererilor în curs; peste ea, HTTP 503. |
--stream-interval |
Câți tokeni se adună înainte de trimiterea în stream (implicit 1). |
Exemple practice
Exemplul 1: Bugetul de tokeni pe iterație (Python)
Exemplul din Optimization and Tuning.
from vllm import LLM
# Set max_num_batched_tokens to tune performance
llm = LLM(model="meta-llama/Llama-3.1-8B-Instruct", max_num_batched_tokens=16384)
Exemplul 2: Același buget la server
vllm serve meta-llama/Llama-3.1-8B-Instruct --max-num-batched-tokens 16384
Greșeli frecvente și bune practici
- Ignori avertismentele de preemptare. Cererile preemptate se recalculează și cresc latența.
- Setezi
--max-num-seqsfoarte mare pe un GPU cu puțină memorie; KV cache-ul nu ajunge și apar preemptări.
Întrebări & Exemple practice:
Continuous batching (programarea cererilor)Ai o întrebare despre Continuous batching (programarea cererilor) sau ai descoperit un truc, prompt sau fragment de cod util? Distribuie-l cu ceilalți membri ai comunității!
Fii primul care pune o întrebare sau distribuie un fragment de cod / prompt!
Nu au fost adăugate încă întrebări sau resurse pentru această pagină. Dacă ai testat un prompt sau ai un snippet util, adaugă-l mai jos pentru comunitate.