Il parallelismo tensoriale suddivide l’inferenza locale dell’IA dividendo i grandi tensori dei pesi all’interno di ogni livello del trasformatore tra più GPU e combinando i risultati parziali.
È diverso dall’assegnare a ogni GPU una richiesta separata o dall’assegnare livelli diversi a dispositivi diversi. Ogni GPU che partecipa al parallelismo tensoriale contribuisce allo stesso livello, spesso a ogni token generato. Questo approccio può consentire a un modello di distribuirsi su più GPU domestiche, ma trasforma la comunicazione tra GPU in parte del percorso critico dell’inferenza.
Il parallelismo tensoriale suddivide un livello invece di copiare l’intero modello
Il parallelismo dei dati assegna a ogni GPU una copia del modello e suddivide le richieste o i batch. Il parallelismo tensoriale fa l’opposto per un singolo modello: divide i grandi tensori dei parametri all’interno dei singoli livelli tra i dispositivi.
NVIDIA NeMo definisce il TP come la distribuzione del tensore dei parametri di un singolo livello tra le GPU. Ogni GPU conserva solo una porzione della matrice interessata.
È utile quando un modello, o persino un singolo livello di grandi dimensioni, non entra comodamente in una sola GPU domestica.
Le porzioni per colonne e per righe suddividono il lavoro della moltiplicazione tra matrici
I livelli dei trasformatori contengono grandi proiezioni lineari. Una suddivisione parallela per colonne assegna colonne di output diverse a GPU diverse, mentre una suddivisione parallela per righe assegna righe di input o intervalli di caratteristiche diversi.
Il tutorial sul parallelismo tensoriale di PyTorch applica stili di parallelismo per righe e per colonne ai livelli dei trasformatori. Ogni rank calcola un prodotto tra matrici parziale usando la propria porzione dei pesi.
Il modello rappresenta comunque un unico livello logico. La suddivisione modifica il punto in cui vengono eseguite le parti dei calcoli e il modo in cui vengono combinati i risultati parziali.
La comunicazione collettiva ricostruisce l’output logico del livello
Poiché ogni GPU vede solo una parte del tensore, alcune operazioni richiedono all-reduce, all-gather, reduce-scatter o collettive equivalenti prima che il calcolo successivo disponga della rappresentazione necessaria.
Open MPI definisce AllReduce come la combinazione dei valori tra i processi e la distribuzione del risultato a tutti i partecipanti. I runtime con parallelismo tensoriale utilizzano questo tipo di collettiva, insieme ad all-gather e reduce-scatter, per ricostruire o ridistribuire i risultati dei livelli suddivisi.
Su una workstation domestica, la qualità del collegamento tra GPU può determinare se la suddivisione consente di risparmiare tempo o aumenta soltanto la capacità.
Le interconnessioni veloci sono importanti perché la comunicazione avviene a ogni livello
Il parallelismo tensoriale può richiedere più operazioni collettive per ogni blocco del trasformatore e per ogni token generato. I sistemi basati solo su PCIe offrono una larghezza di banda tra peer molto inferiore rispetto ai fabric per acceleratori di fascia alta progettati per grandi carichi distribuiti.
AMD RCCL documenta il trasporto peer-to-peer per le GPU collegate tramite PCIe. La libreria per le operazioni collettive varia a seconda della piattaforma, ma lo stesso vincolo topologico rimane valido.
Due GPU con una quantità complessiva di VRAM sufficiente possono eseguire correttamente un modello più grande, offrendo però una velocità di generazione dei token inferiore alle attese perché ogni livello attende la sincronizzazione.
Le GPU non omogenee possono fare sì che sia la porzione più lenta a determinare il ritmo
Un livello con parallelismo tensoriale procede solo dopo l’arrivo dei risultati parziali richiesti. Se una GPU ha una velocità di calcolo inferiore, una larghezza di banda della memoria minore o un collegamento più lento, il rank più veloce può trascorrere del tempo in attesa.
La funzionalità di inferenza con parallelismo tensoriale automatico di DeepSpeed è progettata per suddividere il modello all’interno di un gruppo di processi per l’inferenza. L’efficienza pratica presuppone che i dispositivi partecipanti possano svolgere una quantità di lavoro equilibrata.
Una raccolta di GPU domestiche miste può comunque essere utile per far entrare il modello, ma dimensioni uguali delle porzioni non sono automaticamente ottimali quando l’hardware presenta differenze sostanziali.
Scegli il parallelismo tensoriale per i livelli ampi e quando la memoria di una singola GPU è insufficiente
Il caso più indicato è quello di un modello le cui grandi dimensioni nascoste e i tensori dei livelli devono essere suddivisi tra più GPU, soprattutto quando i dispositivi dispongono di un’interconnessione locale veloce. Non è automaticamente il modo migliore per gestire diverse richieste indipendenti di piccole dimensioni.
L’articolo di ZimaSpace sulla pianificazione della memoria per gli acceleratori di IA locali fornisce il riferimento di capacità; il parallelismo tensoriale modifica questo riferimento distribuendo i livelli di un singolo modello tra i dispositivi.
Quando possibile, esegui il benchmark su una GPU, poi su due o più GPU usando lo stesso modello, prompt, contesto e batch. Registra la memoria per GPU, i token al secondo, la latenza, il tempo delle operazioni collettive e l’utilizzo del collegamento.
L’articolo di ZimaSpace sulla pressione dell’IA locale multiutente offre il confronto dal punto di vista del servizio: il TP estende un modello su più dispositivi, mentre la concorrenza delle richieste determina quanti contesti indipendenti competono per quel modello distribuito.
Hub Tecnologico e AI
Altro da leggere

Why Plex May Re-Analyze Media After a Server Upgrade
Plex may re-analyze media after an upgrade. Separate finite maintenance work from repeated scans, path issues, or database faults.

What Actually Sets the Plex Performance Ceiling?
A dependency model for Plex performance that helps you identify the first saturated stage instead of upgrading every component at once.

Plex Networking Explained: Discovery, DNS, Routing, and Remote Reachability
A layer-by-layer model of Plex reachability that separates local discovery from IP routing and remote NAT or port-forwarding problems.

