Tensor Parallelism
Aprende cómo el paralelismo de tensores divide las matrices de pesos entre GPU para entrenar modelos masivos. Explora cómo difiere del paralelismo de datos con Ultralytics.
El paralelismo de tensores es una técnica avanzada de entrenamiento distribuido que se utiliza en el aprendizaje automático para dividir grandes estructuras matemáticas individuales, o tensores, entre múltiples aceleradores de hardware como GPUs o TPUs. Al entrenar masivos modelos de deep learning, el recuento de parámetros puede superar fácilmente la capacidad de memoria de un solo dispositivo. En lugar de colocar toda una capa de red neuronal en una sola GPU, el paralelismo de tensores fragmenta las matrices de pesos y divide las operaciones matemáticas (como las multiplicaciones de matrices) entre múltiples dispositivos en un clúster. Esto permite que el modelo aproveche la memoria combinada y la potencia de cálculo de toda la configuración de hardware, ejecutando cálculos en paralelo en un paradigma de Programa Único, Datos Múltiples (SPMD) mientras sincroniza los resultados a través de interconexiones de alta velocidad como NVIDIA NVLink.
Cómo funciona el paralelismo de tensores#
En el núcleo de una red neuronal se encuentran las multiplicaciones de matrices. El paralelismo de tensores distribuye estas operaciones dividiendo las matrices por filas o por columnas. Por ejemplo, en una capa totalmente conectada o en un mecanismo de atención de Transformer, una GPU puede calcular la mitad izquierda de la matriz mientras otra calcula la mitad derecha. Una vez que finalizan los cálculos paralelos, los dispositivos se comunican —a menudo utilizando rápidas operaciones colectivas All-Reduce— para agregar los resultados parciales antes de pasar el tensor completo a la siguiente capa. Los recientes avances académicos en 2025 están optimizando aún más este proceso al introducir activaciones parcialmente sincronizadas para reducir la sobrecarga de comunicación que normalmente satura los grandes clústeres de cálculo.
Diferenciación de técnicas de paralelismo relacionadas#
Comprender cómo encaja el paralelismo de tensores en el panorama más amplio de la computación distribuida requiere diferenciarlo de otras estrategias comunes:
- Paralelismo de tensores frente a paralelismo de modelos: El paralelismo de tensores es una subcategoría muy específica del paralelismo de modelos. Mientras que el paralelismo de modelos general se refiere a dividir un modelo entre dispositivos de cualquier forma, el paralelismo de tensores se refiere estrictamente a fragmentar los tensores individuales dentro de una sola capa.
- Paralelismo de tensores frente a paralelismo de pipeline: El paralelismo de pipeline es otra forma de paralelismo de modelos que particiona la red por profundidad, colocando las primeras capas en la GPU 0, las siguientes en la GPU 1, y así sucesivamente. Esto crea dependencias secuenciales conocidas como "burbujas de pipeline". El paralelismo de tensores divide las capas en sí, ejecutándolas simultáneamente sin retardo secuencial, pero requiere un ancho de banda de red mucho mayor.
- Paralelismo de tensores frente a paralelismo de datos: En el paralelismo de datos, el modelo completo se replica por completo en cada GPU y solo el conjunto de datos de entrenamiento se divide entre los dispositivos. Para arquitecturas altamente optimizadas como Ultralytics YOLO26, que caben fácilmente en las GPUs modernas, el paralelismo de datos a través de
DistributedDataParallelde PyTorch es el método predeterminado. El paralelismo de tensores normalmente solo es necesario cuando los parámetros de una sola capa superan la VRAM del hardware, lo que provoca errores de falta de memoria (OOM).
Aplicaciones en el mundo real#
El paralelismo de tensores es indispensable en las infraestructuras de IA modernas, particularmente para arquitecturas de vanguardia que requieren una escala computacional masiva:
- Entrenamiento de modelos de lenguaje grandes (LLMs): los modelos fundacionales masivos como Llama 3 de Meta y DeepSeek V3 utilizan marcos como NVIDIA Megatron-LM para implementar el paralelismo de tensores. Debido a que las dimensiones ocultas y los cabezales de atención de estos modelos son tan grandes, dividirlos en un nodo de 8 GPUs es obligatorio para entrenar de manera eficiente y mantener una baja latencia durante la inferencia en tiempo real.
- Modelos de visión grandes (LVMs) y generación 3D: a medida que la visión artificial escala hacia sistemas masivos de razonamiento multimodal, los investigadores utilizan el paralelismo de tensores combinado con el paralelismo de canalización en servicios como AWS SageMaker para entrenar vision transformers (ViTs) gigantescos. Esta técnica permite procesar imágenes de alta resolución y generación de video que requieren enormes bloques de memoria contigua.
Implementación del paralelismo de tensores en PyTorch#
Históricamente, los ingenieros tenían que escribir una lógica distribuida personalizada y compleja para fragmentar tensores. Recientemente, PyTorch introdujo DTensor (Distributed Tensor), simplificando de forma nativa este flujo de trabajo. A continuación, se muestra un ejemplo de cómo crear un tensor fragmentado por filas utilizando la API oficial de PyTorch Distributed Tensor:
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}")Para tareas de visión optimizadas para el borde y el despliegue de modelos rápido, los desarrolladores suelen confiar en la Ultralytics Platform para gestionar automáticamente el uso óptimo del hardware. Si bien los modelos fundacionales de miles de millones de parámetros requieren configuraciones manuales de paralelismo de tensores, puedes escalar de manera eficiente el entrenamiento para modelos como YOLO26 utilizando sencillos comandos de la CLI de serie. Esto garantiza el máximo rendimiento al utilizar sin problemas técnicas de paralelismo de datos nativas junto con sólidos consejos para el entrenamiento de modelos.






