Tensor Parallelism
Tensör paralelliğinin, devasa modelleri eğitmek için ağırlık matrislerini GPU'lar arasında nasıl parçaladığını öğren. Ultralytics ile veri paralelliğinden farkını keşfet.
Tensor Paralelliği, GPU veya TPU gibi birden fazla donanım hızlandırıcı üzerinde büyük bireysel matematiksel yapıları, yani tensörleri bölmek için makine öğreniminde kullanılan gelişmiş bir dağıtık eğitim tekniğidir. Devasa derin öğrenme modellerini eğitirken, parametre sayısı kolaylıkla tek bir cihazın belle kapasitesini aşabilir. Tüm bir sinir ağı katmanını tek bir GPU'ya yerleştirmek yerine, tensör paralelliği ağırlık matrislerini parçalar ve matematiksel işlemleri (matris çarpımları gibi) bir kümedeki birden fazla cihaza böler. Bu, modelin tüm donanım kurulumunun birleşik bellek ve işlem gücünden yararlanmasını sağlayarak, sonuçları NVIDIA NVLink gibi yüksek hızlı ara bağlantılar aracılığıyla senkronize ederken bir Tek Program Çoklu Veri (SPMD) paradigmasında paralel hesaplamalar yürütmesine olanak tanır.
Tensor Paralelliği Nasıl Çalışır#
Bir sinir ağının merkezinde matris çarpımları yer alır. Tensor paralelliği, bu işlemleri matrisleri satır bazında veya sütun bazında bölerek dağıtır. Örneğin, tamamen bağlı bir katmanda veya bir transformer dikkat mekanizmasında, bir GPU matrisin sol yarısını hesaplarken diğeri sağ yarısını hesaplayabilir. Paralel hesaplamalar bittikten sonra cihazlar —genellikle hızlı All-Reduce toplu işlemlerini kullanarak— eksiksiz tensörü bir sonraki katmana iletmeden önce kısmi sonuçları toplamak için iletişim kurar. 2025 yılındaki son akademik gelişmeler, büyük işlem kümelerinde tipik olarak darboğaz yaratan iletişim ek yükünü azaltmak için kısmen senkronize edilmiş aktivasyonlar sunarak bu süreci daha da optimize etmektedir.
İlgili Paralellik Tekniklerinin Ayırt Edilmesi#
Tensor paralelliğinin dağıtık bilişimin genel yapısına nasıl uyduğunu anlamak için onu diğer yaygın stratejilerden ayırt etmek gerekir:
- Tensor Paralelliği ile Model Paralelliği: Tensor paralelliği, model paralelliğinin oldukça spesifik bir alt kategorisidir. Genel model paralelliği bir modeli cihazlar arasında herhangi bir şekilde bölmeyi ifade ederken, tensor paralelliği kesin olarak tek bir katman içindeki bireysel tensörlerin parçalanmasını ifade eder.
- Tensor Paralelliği ile Boru Hattı (Pipeline) Paralelliği: Boru hattı paralelliği, ağı derinliğe göre bölerek ilk birkaç katmanı GPU 0'a, sonrakileri GPU 1'e yerleştiren başka bir model paralelliği biçimidir. Bu, boru hattı baloncukları olarak bilinen sıralı bağımlılıklar yaratır. Tensor paralelliği ise katmanların kendisini böler, bunları sıralı bir gecikme olmadan eşzamanlı olarak çalıştırır ancak çok daha yüksek ağ bant genişliği gerektirir.
- Tensor Paralelliği ve Veri Paralelliği: Veri paralelliğinde, modelin tamamı her GPU üzerinde tamamen kopyalanır ve cihazlar arasında yalnızca eğitim veri seti bölünür. Modern GPU'lara kolayca sigecek şekilde yüksek düzeyde optimize edilmiş Ultralytics YOLO26 gibi mimariler için PyTorch'un
DistributedDataParallelaracılığıyla veri paralelliği varsayılan yöntemdir. Tensor paralelliği genellikle yalnızca tek bir katmanın parametreleri donanımın VRAM'ini aştığında ve bellek yetersizliği (OOM) hatalarına neden olduğunda gereklidir.
Gerçek Dünya Uygulamaları#
Tensor paralelliği, özellikle muazzam hesaplama ölçeği gerektiren en son teknoloji mimariler için modern AI altyapılarında vazgeçilmezdir:
- Büyük Dil Modellerini Eğitme (LLM'ler): Meta'nın Llama 3 ve DeepSeek V3 gibi devasa temel modeller, tensor paralelliğini uygulamak için NVIDIA Megatron-LM gibi çerçevelerden yararlanır. Bu modellerin gizli boyutları ve dikkat başlıkları çok büyük olduğundan, verimli bir şekilde eğitmek ve gerçek zamanlı çıkarım sırasında düşük gecikmeyi korumak için bunları 8 GPU'lu bir düğüm üzerinden bölmek zorunludur.
- Büyük Görüş Modelleri (LVM'ler) ve 3D Üretim: Bilgisayarlı görü devasa çok modlu akıl yürütme sistemlerine doğru ölçeklendikçe, araştırmacılar devasa vizyon transformer'larını (ViT'ler) eğitmek için AWS SageMaker gibi hizmetlerde boru hattı paralelliği ile birleştirilmiş tensor paralelliğini kullanır. Bu teknik, devasa bitişik bellek blokları gerektiren yüksek çözünürlüklü görüntü ve video üretiminin işlenmesine olanak tanır.
PyTorch İçinde Tensor Paralelliği Uygulamak#
Geçmişte mühendislerin tensörleri parçalamak için karmaşık özel dağıtık mantık yazması gerekiyordu. Son zamanlarda PyTorch, bu iş akışını yerel olarak basitleştiren DTensor (Dağıtık Tensör) özelliğini tanıttı. Aşağıda, resmi PyTorch Dağıtık Tensör API'sini kullanarak satır bazında parçalanmış bir tensör oluşturma örneği verilmiştir:
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}")Kenar (edge) optimize edilmiş görüş görevleri ve hızlı model dağıtımı için geliştiriciler genellikle optimum donanım kullanımını otomatik olarak yönetmek üzere Ultralytics Platform bileşenine güvenir. Milyarlarca parametreli temel modeller manuel tensor paralelliği yapılandırmaları gerektirirken, basit CLI komutları kullanarak YOLO26 gibi modeller için eğitimi doğrudan kutudan çıktığı gibi verimli bir şekilde ölçeklendirebilirsiniz. Bu, sağlam model eğitimi ipuçlarıyla birlikte yerel veri paralelliği tekniklerini sorunsuz bir şekilde kullanarak maksimum verim sağlar.






