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.
Tensor Parallelism è una tecnica avanzata di distributed training utilizzata nel machine learning per suddividere grandi strutture matematiche, o tensori, tra più acceleratori hardware come GPUs o TPU. Durante l'addestramento di modelli massicci di deep learning, il numero di parametri può facilmente superare la capacità di memoria di un singolo dispositivo. Invece di inserire un intero strato di neural network su una sola GPU, il tensor parallelism suddivide le matrici di pesi e spacchetta le operazioni matematiche (come le moltiplicazioni tra matrici) tra più dispositivi in un cluster. Questo permette al modello di sfruttare la memoria e la potenza di calcolo combinate dell'intero setup hardware, eseguendo calcoli in parallelo secondo il paradigma Single-Program Multiple-Data (SPMD) mentre sincronizza i risultati tramite interconnessioni ad alta velocità come NVIDIA NVLink.
Link to this sectionCome funziona il Tensor Parallelism#
Al centro di una rete neurale ci sono le moltiplicazioni tra matrici. Il tensor parallelism distribuisce queste operazioni dividendo le matrici per righe o per colonne. Ad esempio, in uno strato 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. Dopo il completamento dei calcoli paralleli, i dispositivi comunicano—spesso utilizzando veloci All-Reduce collective operations—per aggregare i risultati parziali prima di passare il tensore completo allo strato successivo. Recenti progressi accademici del 2025 stanno ulteriormente ottimizzando questo processo introducendo attivazioni parzialmente sincronizzate per ridurre l'overhead di comunicazione che solitamente rallenta i grandi cluster di calcolo.
Link to this sectionDistinguere 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 è completamente replicato su ogni GPU e solo il dataset di addestramento viene diviso 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 tensor parallelism è solitamente necessario solo quando i parametri di un singolo strato superano la VRAM dell'hardware, causando errori di memoria esaurita (OOM).
Link to this sectionApplicazioni nel mondo reale#
Il tensor parallelism è indispensabile nelle moderne infrastrutture di IA, in particolare per architetture all'avanguardia che richiedono una scala computazionale massiccia:
- Addestramento di Large Language Models (LLMs): Modelli di base massicci come Llama 3 di Meta e DeepSeek V3 utilizzano framework come NVIDIA Megatron-LM per implementare il tensor parallelism. Poiché le dimensioni nascoste e le teste di attenzione di questi modelli sono così grandi, dividerli su un nodo a 8 GPU è obbligatorio per addestrarli in modo efficiente e mantenere una bassa latenza durante l'real-time inference.
- Large Vision Models (LVMs) e Generazione 3D: Mentre la computer vision scala verso sistemi di ragionamento multimodale massicci, i ricercatori utilizzano il tensor parallelism combinato con il pipeline parallelism su servizi come AWS SageMaker per addestrare giganti vision transformers (ViTs). Questa tecnica consente l'elaborazione di immagini ad alta risoluzione e la generazione di video che richiedono enormi blocchi di memoria contigui.
Link to this sectionImplementare il Tensor Parallelism in PyTorch#
Storicamente, gli ingegneri dovevano scrivere una complessa logica distribuita personalizzata per suddividere i tensori. Recentemente, PyTorch ha introdotto DTensor (Distributed Tensor), semplificando nativamente questo flusso di lavoro. Di seguito un esempio di creazione di un tensore suddiviso per righe 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}")For edge-optimized vision tasks and rapid model deployment, developers typically rely on the Ultralytics Platform to automatically handle optimal hardware utilization. While multi-billion parameter foundation models require manual tensor parallelism configurations, you can efficiently scale training for models like YOLO26 using simple CLI commands out-of-the-box. This ensures maximum throughput by seamlessly utilizing native data parallelism techniques alongside robust model training tips.






