Tensor Parallelism
O paralelismo de tensores divide as matrizes de pesos de uma camada entre GPUs, de modo que cada dispositivo calcule uma parte de cada operação. Abrange métodos relacionados, usos e PyTorch.
O paralelismo de tensores é uma técnica avançada de treinamento distribuído usada em aprendizado de máquina para dividir estruturas matemáticas individuais de grande porte, ou tensores, entre vários aceleradores de hardware, como GPUs ou TPUs. Ao treinar modelos enormes de aprendizado profundo, a quantidade de parâmetros pode facilmente exceder a capacidade de memória de um único dispositivo. Em vez de colocar uma camada inteira de uma rede neural em uma GPU, o paralelismo de tensores divide as matrizes de pesos e distribui as operações matemáticas (como multiplicações de matrizes) entre vários dispositivos de um cluster. Isso permite que o modelo aproveite a memória e o poder computacional combinados de todo o hardware, executando cálculos paralelos no paradigma programa único, múltiplos dados (SPMD) e sincronizando os resultados por meio de interconexões de alta velocidade, como o NVIDIA NVLink.
Como funciona o paralelismo de tensores#
No centro de uma rede neuronal estão as multiplicações de matrizes. O paralelismo de tensores distribui estas operações dividindo as matrizes por linhas ou por colunas. Por exemplo, numa camada totalmente ligada ou num transformer com um mecanismo de atenção, uma GPU pode calcular a metade esquerda da matriz enquanto outra calcula a metade direita. Após a conclusão dos cálculos paralelos, os dispositivos comunicam — muitas vezes através de rápidas operações coletivas All-Reduce — para agregar os resultados parciais antes de enviar o tensor completo à camada seguinte. Os avanços académicos recentes de 2025 estão a otimizar ainda mais este processo, introduzindo ativações parcialmente sincronizadas para reduzir a sobrecarga de comunicação que costuma limitar grandes clusters computacionais.
Como distinguir técnicas de paralelismo relacionadas#
Para entender como o paralelismo de tensores se encaixa no cenário mais amplo da computação distribuída, é preciso diferenciá-lo de outras estratégias comuns:
- Paralelismo de tensores vs. paralelismo de modelos: o paralelismo de tensores é uma subcategoria bastante específica do paralelismo de modelos. Enquanto o paralelismo de modelos em geral se refere à divisão de um modelo entre dispositivos de qualquer forma, o paralelismo de tensores se refere estritamente à divisão dos tensores individuais dentro de uma única camada.
- Paralelismo de tensores vs. paralelismo de pipeline: O paralelismo de pipeline é outra forma de paralelismo de modelos que divide a rede em profundidade — colocando as primeiras camadas na GPU 0, as seguintes na GPU 1 e assim sucessivamente. Isto cria dependências sequenciais conhecidas como bolhas de pipeline. O paralelismo de tensores divide as próprias camadas, executando-as simultaneamente sem atrasos sequenciais, mas exige muito mais largura de banda de rede.
- Paralelismo de tensores vs. paralelismo de dados: no paralelismo de dados, o modelo inteiro é totalmente replicado em cada GPU, e apenas o conjunto de dados de treinamento é dividido entre os dispositivos. Para arquiteturas altamente otimizadas, como o Ultralytics YOLO26, que cabe facilmente em GPUs modernas, o paralelismo de dados por meio do
DistributedDataParalleldo PyTorch é o método padrão. O paralelismo de tensores geralmente só é necessário quando os parâmetros de uma única camada excedem a VRAM do hardware e causam erros de falta de memória (OOM).
Aplicações no mundo real#
O paralelismo de tensores é indispensável nas infraestruturas modernas de IA, principalmente para arquiteturas de última geração que exigem enorme capacidade computacional:
- Treino de modelos de linguagem de grande dimensão (LLMs): Modelos de base enormes como o Llama 3 da Meta dependem do paralelismo de tensores, muitas vezes implementado com estruturas como o NVIDIA Megatron-LM, embora o DeepSeek V3 tenha sido notavelmente treinado sem essa técnica, recorrendo ao paralelismo de pipeline e ao paralelismo de especialistas. Como as dimensões ocultas e as cabeças de atenção destes modelos são tão grandes, é obrigatório dividi-los por um nó com 8 GPUs para os treinar eficientemente e manter uma latência baixa durante a inferência em tempo real.
- Modelos de visão de grande dimensão (LVMs) e geração 3D: À medida que a visão computacional evolui para sistemas de raciocínio multimodal enormes, os investigadores usam paralelismo de tensores combinado com paralelismo de pipeline em serviços como o AWS SageMaker para treinar transformers de visão gigantes (ViTs). Esta técnica permite processar imagens de alta resolução e gerar vídeos, tarefas que exigem enormes blocos de memória contígua.
Implementando o paralelismo de tensores no PyTorch#
Historicamente, os engenheiros precisavam escrever lógicas distribuídas personalizadas e complexas para dividir tensores. Recentemente, o PyTorch introduziu DTensor (Distributed Tensor), simplificando esse fluxo de trabalho de forma nativa. A seguir, veja um exemplo de criação de um tensor dividido por linhas usando a API oficial de tensores distribuídos do PyTorch:
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 tarefas de visão otimizadas para dispositivos de ponta e a rápida implementação de modelos, os programadores recorrem normalmente à Ultralytics Platform para gerir automaticamente a utilização ideal do hardware. Embora os modelos de base com milhares de milhões de parâmetros exijam configurações manuais de paralelismo de tensores, podes escalar eficientemente o treino de modelos como o YOLO26 usando comandos CLI simples, sem configurações adicionais. Isto garante o débito máximo, utilizando sem interrupções técnicas nativas de paralelismo de dados e dicas robustas para o treino de modelos.










