Tensor parallelism (–tensor-parallel-size, -tp) în vLLM & Infrastructură LLM

Scalare GPU, Hardware și Cuantizare vLLM 0.32.0 (octombrie 2026)

Împarte parametrii fiecărui strat al modelului pe N GPU-uri, ca un model prea mare pentru un singur GPU să încapă pe un nod.

Sintaxă & invocare
--tensor-parallel-size N | -tp N

Ce face Tensor parallelism (--tensor-parallel-size, -tp)

Tensor parallelism împarte parametrii modelului în interiorul fiecărui strat, pe mai multe GPU-uri. Documentația îl descrie ca strategia cea mai folosită pe un singur nod: când modelul nu încape pe un GPU sau când vrei mai multă memorie liberă pentru KV cache. Valoarea implicită este 1.

Ghidul Parallelism and Scaling: dacă modelul nu încape pe un GPU dar încape pe un nod, setezi --tensor-parallel-size la numărul de GPU-uri din nod. Pe mai multe noduri, tensor parallel size este numărul de GPU-uri per nod, iar pipeline parallel size numărul de noduri. Dacă numărul de GPU-uri nu împarte uniform modelul sau GPU-urile nu au NVLink (de exemplu L40S), documentația recomandă pipeline parallelism.

Pe un nod, runtime-ul implicit este multiprocessing Python; pe mai multe noduri, Ray (alegerea se schimbă cu --distributed-executor-backend). Cu TP, fiecare proces citește tot modelul de pe disc; un checkpoint pre-împărțit (--load-format sharded_state) reduce timpul de încărcare.

Sintaxă și opțiuni

Opțiune / Parametru Descriere
--tensor-parallel-size, -tp Numărul de grupuri tensor parallel. Implicit 1.
--distributed-executor-backend mp, ray, uni sau external_launcher.
--enable-expert-parallel, -ep La modelele MoE, expert parallelism în locul TP pentru straturile de experți, cu același grad.
--disable-custom-all-reduce Folosește NCCL în locul kernel-ului all-reduce propriu.
CUDA_VISIBLE_DEVICES / --device-ids Alegerea GPU-urilor folosite.

Exemple practice

Exemplul 1: Server pe 4 GPU-uri

vllm serve facebook/opt-13b \
     --tensor-parallel-size 4

Exemplul 2: Același lucru în Python

from vllm import LLM
llm = LLM("facebook/opt-13b", tensor_parallel_size=4)
output = llm.generate("San Francisco is a")

Exemplul 3: Forma scurtă

Din ghidul Draft Models.

vllm serve Qwen/Qwen3-4B-Thinking-2507 -tp 1

Greșeli frecvente și bune practici

  • Apelezi funcții CUDA (de exemplu torch.accelerator.set_device_index) înainte de inițializarea vLLM și primești RuntimeError: Cannot re-initialize CUDA in forked subprocess. Alege GPU-urile cu CUDA_VISIBLE_DEVICES.
  • Rulezi TP în Docker fără --ipc=host sau --shm-size; PyTorch are nevoie de memorie partajată între procese.
  • Folosești TP între noduri fără rețea rapidă. Documentația recomandă InfiniBand pentru comunicarea între noduri.

Comenzi înrudite