Continuous batching (programarea cererilor) în vLLM & Infrastructură LLM

Scheduler-ul vLLM adaugă cereri noi în batch-ul activ la fiecare pas, în limita unui buget de tokeni, în loc să aștepte terminarea batch-ului.

Sintaxă & invocare
Activ automat; limite: --max-num-seqs, --max-num-batched-tokens, politică: --scheduling-policy

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-seqs foarte mare pe un GPU cu puțină memorie; KV cache-ul nu ajunge și apar preemptări.

Comenzi înrudite

Învață AI • Comunitate & Q&A

Î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.

Comunitate AI Adaugă o întrebare sau distribuie un cod / prompt

Moderare & Siguranță:

Pentru a menține calitatea și securitatea informațiilor, fiecare întrebare sau fragment de cod/prompt este analizat (manual sau prin moderare asistată de AI) înainte de publicare.