Ce face Pipeline parallelism (--pipeline-parallel-size, -pp)
Pipeline parallelism distribuie straturile modelului pe mai multe GPU-uri; fiecare GPU procesează altă parte a modelului, în ordine. Documentația îl recomandă când tensor parallelism nu mai ajunge sau trebuie să treci pe mai multe noduri, și pentru modele adânci și înguste.
Pe mai multe noduri, practica obișnuită: tensor parallel size = GPU-uri per nod, pipeline parallel size = numărul de noduri (de exemplu 8 și 2 pentru două noduri cu câte 8 GPU-uri). Pipeline parallelism suportă și împărțiri neuniforme; pe un nod cu GPU-uri fără NVLink (de exemplu L40S) documentația îl recomandă în locul TP.
Runtime-ul pe mai multe noduri poate fi Ray (--distributed-executor-backend ray) sau multiprocessing, cu --nnodes, --node-rank și --master-addr. vllm preload nu acceptă pipeline parallelism.
Sintaxă și opțiuni
| Opțiune / Parametru | Descriere |
|---|---|
--pipeline-parallel-size, -pp |
Numărul de grupuri pipeline parallel. Implicit 1. |
--nnodes, -n / --node-rank, -r |
Numărul de noduri și rangul nodului curent (backend mp). |
--master-addr / --master-port |
Adresa și portul nodului principal (implicit 127.0.0.1 și 29501). |
--headless |
Pe nodurile secundare: fără server API. |
--distributed-executor-backend |
mp sau ray. |
Exemple practice
Exemplul 1: 8 GPU-uri pe un nod: TP 4 × PP 2
# Eight GPUs total
vllm serve gpt2 \
--tensor-parallel-size 4 \
--pipeline-parallel-size 2
Exemplul 2: Două noduri cu Ray
vllm serve /path/to/the/model/in/the/container \
--tensor-parallel-size 8 \
--pipeline-parallel-size 2 \
--distributed-executor-backend ray
Exemplul 3: Două noduri cu multiprocessing
Prima comandă pe nodul principal, a doua pe celălalt nod.
vllm serve /path/to/the/model/in/the/container \
--tensor-parallel-size 8 --pipeline-parallel-size 2 \
--nnodes 2 --node-rank 0 \
--master-addr <HEAD_NODE_IP>
vllm serve /path/to/the/model/in/the/container \
--tensor-parallel-size 8 --pipeline-parallel-size 2 \
--nnodes 2 --node-rank 1 \
--master-addr <HEAD_NODE_IP> --headless
Greșeli frecvente și bune practici
- Rulezi noduri cu medii diferite. Documentația cere același mediu pe toate nodurile (calea modelului, pachetele Python); imaginile de container ajută.
- Lași traficul dintre noduri pe o rețea publică. Datele nu sunt criptate și pot fi exploatate; setează
VLLM_HOST_IPpe o rețea privată.