Tensor Parallelism
Scopri come il parallelismo dei tensori suddivide le matrici dei pesi tra le GPU per addestrare modelli massicci. Esplora come differisce dal parallelismo dei dati con Ultralytics.
Il Tensor Parallelism è una tecnica avanzata di distributed training utilizzata nel machine learning per suddividere grandi strutture matematiche individuali, o tensori, su più acceleratori hardware come GPUs o TPU. Durante l'addestramento di massicci modelli di deep learning, il conteggio dei parametri può facilmente superare la capacità di memoria di un singolo dispositivo. Invece di posizionare un intero livello di neural network su una singola GPU, il parallelismo dei tensori suddivide le matrici dei pesi e divide le operazioni matematiche (come le moltiplicazioni di matrici) su più dispositivi in un cluster. Questo consente al modello di sfruttare la memoria combinata e la potenza di calcolo dell'intera configurazione hardware, eseguendo calcoli paralleli in un paradigma Single-Program Multiple-Data (SPMD) sincronizzando al contempo i risultati tramite interconnessioni ad alta velocità come NVIDIA NVLink.
Come funziona il Tensor Parallelism#
Al centro di una rete neurale vi sono le moltiplicazioni di matrici. Il parallelismo dei tensori distribuisce queste operazioni suddividendo le matrici per riga o per colonna. Ad esempio, in un livello completamente connesso o in un meccanismo di attenzione transformer, una GPU potrebbe calcolare la metà sinistra della matrice mentre un'altra calcola la metà destra. Al termine dei calcoli paralleli, i dispositivi comunicano, spesso utilizzando veloci All-Reduce collective operations, per aggregare i risultati parziali prima di passare il tensore completo al livello successivo. Recenti progressi accademici del 2025 stanno ottimizzando ulteriormente questo processo introducendo attivazioni parzialmente sincronizzate per ridurre l'overhead di comunicazione che tipicamente costituisce un collo di bottiglia per i grandi cluster di calcolo.
Distinguere tecniche di parallelismo correlate#
Comprendere come il tensor parallelism si inserisce nel panorama più ampio del calcolo distribuito richiede di differenziarlo da altre strategie comuni:
- Tensor Parallelism vs. Model Parallelism: Il tensor parallelism è una sottocategoria molto specifica del model parallelism. Mentre il model parallelism generico si riferisce alla suddivisione di un modello tra dispositivi in qualsiasi modo, il tensor parallelism si riferisce rigorosamente alla suddivisione dei singoli tensori all'interno di un singolo strato.
- Tensor Parallelism vs. Pipeline Parallelism: Il pipeline parallelism è un'altra forma di model parallelism che suddivide la rete per profondità, posizionando i primi strati sulla GPU 0, i successivi sulla GPU 1 e così via. Questo crea dipendenze sequenziali note come pipeline bubbles. Il tensor parallelism divide gli strati stessi, eseguendoli simultaneamente senza ritardi sequenziali, ma richiede una larghezza di banda di rete molto più elevata.
- Tensor Parallelism vs. Data Parallelism: Nel data parallelism, l'intero modello viene completamente replicato su ogni GPU e solo il dataset di addestramento viene suddiviso tra i dispositivi. Per architetture altamente ottimizzate come Ultralytics YOLO26, che si adattano facilmente alle moderne GPU, il data parallelism tramite
DistributedDataParalleldi PyTorch è il metodo predefinito. Il parallelismo dei tensori è solitamente necessario solo quando i parametri di un singolo livello superano la VRAM dell'hardware, causando errori di out-of-memory (OOM).
Applicazioni nel mondo reale#
Il tensor parallelism è indispensabile nelle moderne infrastrutture di IA, in particolare per architetture all'avanguardia che richiedono una scala computazionale massiccia:
- Training Large Language Models (LLMs): Massive foundation models like Meta's Llama 3 e DeepSeek V3 utilizzano framework come NVIDIA Megatron-LM per implementare il parallelismo dei tensori. Poiché le dimensioni nascoste e le teste di attenzione di questi modelli sono così grandi, dividerle su un nodo a 8 GPU è obbligatorio per addestrare in modo efficiente e mantenere una bassa latenza durante real-time inference.
- Large Vision Models (LVMs) and 3D Generation: As computer vision si evolve verso massicci sistemi di ragionamento multimodale, i ricercatori utilizzano il parallelismo dei tensori combinato con il parallelismo di pipeline su servizi come AWS SageMaker per addestrare giganteschi vision transformers (ViTs). Questa tecnica consente di elaborare immagini ad alta risoluzione e la generazione di video che richiedono enormi blocchi di memoria contigui.
Implementare il Tensor Parallelism in PyTorch#
Storicamente, gli ingegneri dovevano scrivere complesse logiche distribuite personalizzate per frammentare i tensori. Recentemente, PyTorch ha introdotto DTensor (Distributed Tensor), semplificando nativamente questo flusso di lavoro. Di seguito è riportato un esempio di creazione di un tensore frammentato per riga utilizzando l'official PyTorch Distributed Tensor API:
import torch
from torch.distributed.device_mesh import init_device_mesh
from torch.distributed.tensor import Shard, distribute_tensor
# Initialize a 1D device mesh across 2 GPUs
mesh = init_device_mesh("cuda", (2,))
# Create a standard PyTorch tensor (e.g., representing a layer's weights)
local_tensor = torch.randn(1024, 1024)
# Distribute the tensor across the GPUs by sharding along the first dimension (row-wise)
# Each GPU now holds a (512, 1024) chunk of the original tensor
distributed_tensor = distribute_tensor(local_tensor, mesh, [Shard(0)])
print(f"Global shape: {distributed_tensor.shape}, Local shape: {distributed_tensor.to_local().shape}")Per attività di visione ottimizzate per l'edge e un rapido model deployment, gli sviluppatori si affidano tipicamente alla Ultralytics Platform per gestire automaticamente l'utilizzo ottimale dell'hardware. Mentre i modelli di fondazione con molti miliardi di parametri richiedono configurazioni manuali di parallelismo dei tensori, puoi scalare in modo efficiente l'addestramento per modelli come YOLO26 utilizzando semplici CLI commands pronti all'uso. Ciò garantisce la massima velocità di trasmissione utilizzando senza interruzioni tecniche native di data parallelism insieme a robusti model training tips.






