Prefill Disaggregation în vLLM (Optimizare TTFT) în vLLM & Infrastructură LLM

Separarea fizică a etapei de prefill (procesarea promptului) de etapa de decode (generarea tokenilor) pe noduri GPU distincte pentru minimizarea latenței.

Sintaxă & invocare
Arhitectură Distribuită Chunked Prefill & Decode Separation

În inferența LLM tradițională, fiecare instanță GPU execută două faze complet diferite: Prefill (fază bound de calcul masiv, care procesează promptul de intrare în paralel) și Decode (fază bound de lățimea de bandă a memoriei, care generează câte un token la fiecare pas pas-cu-pas). Când un utilizator trimite un prompt masiv de 50.000 de tokeni pe o instanță care deservește deja generarea altor clienți, generarea acestora suferă o întârziere majoră (spike de latență).

Prefill Disaggregation (disocierea etapelor) reprezintă arhitectura de ultimă generație din vLLM: clusterul este împărțit în noduri specializate de Prefill (optimizate pentru throughput maxim și procesare rapidă a prompturilor lungi) și noduri specializate de Decode (optimizate pentru latență inter-token minimă).

Starea KV Cache calculată pe nodul de Prefill este transferată instantaneu către nodul de Decode prin rețele de mare viteză (RDMA / RoCE), permițând ca primul token (Time-to-First-Token – TTFT) să fie returnat utilizatorului în timp record, fără a degrada experiența celorlalți utilizatori activi.

Sintaxă, opțiuni și concepte cheie

Opțiune / Concept Descriere practică
Time-to-First-Token (TTFT) Timpul scurs de la trimiterea promptului până la recepția primului token generat.
Inter-Token Latency (ITL) Timpul necesar pentru generarea fiecărui token consecutiv în faza de decode.
Chunked Prefill Spargerea prompturilor mari în bucăți mai mici intercalate cu pași de decode.
KV Cache Transfer (RDMA) Protocolul de memorie directă prin rețea ce mută memoria cache a atenției între GPU-uri fără trecere prin CPU.
vllm serve --enable-chunked-prefill Flagul de lansare ce activează procesarea intercalată la nivel de server unificat.

Exemple practice și comenzi

Exemplul 1: Pornirea serverului vLLM cu Chunked Prefill activat pentru latență redusă

Comanda optimă de lansare pentru API-uri cu trafic mixt (prompturi lungi și scurte concurente).

# Lansare vLLM cu suport pentru chunked prefill și optimizare PagedAttention:
$ python3 -m vllm.entrypoints.openai.api_server \
    --model meta-llama/Llama-3.3-70B-Instruct \
    --tensor-parallel-size 4 \
    --enable-chunked-prefill \
    --max-num-batched-tokens 2048 \
    --gpu-memory-utilization 0.92 \
    --port 8000

Rezultat & Impact

Scădere de până la 4x a latenței TTFT în scenarii cu prompturi lungi de RAG.

Greșeli frecvente și bune practici

  • Setarea unui `–max-num-batched-tokens` prea mic, ceea ce sub-utilizează nucleele Tensor ale GPU-ului în faza de prefill.
  • Implementarea dezagregării complete Prefill/Decode pe clustere fără conexiuni RDMA/InfiniBand, unde transferul de KV Cache prin rețea standard 1Gbps/10Gbps devine un blocaj mai grav decât rularea unificată.

Ghiduri și noțiuni înrudite