Tensor Parallelism
تعلم كيف تقوم موازاة الموتر (tensor parallelism) بتجزئة مصفوفات الأوزان عبر وحدات معالجة الرسوميات (GPUs) لتدريب نماذج ضخمة. استكشف اختلافها عن موازاة البيانات مع Ultralytics.
توازي الموترات هو تقنية متقدمة في التدريب الموزع تُستخدم في تعلم الآلة لتقسيم الهياكل الرياضية الفردية الضخمة، أو الموترات، عبر معجلات أجهزة متعددة مثل GPUs أو TPUs. عند تدريب نماذج تعلم عميق هائلة، يمكن أن يتجاوز عدد المعلمات بسهولة سعة الذاكرة لجهاز واحد. بدلاً من وضع طبقة شبكة عصبية كاملة على GPU واحد، يقوم توازي الموترات بتجزئة مصفوفات الأوزان وتقسيم العمليات الرياضية (مثل ضرب المصفوفات) عبر أجهزة متعددة في عنقود. يتيح هذا للنموذج الاستفادة من الذاكرة وقوة الحوسبة المجتمعة لإعداد الأجهزة بالكامل، وتنفيذ عمليات حسابية متوازية في نموذج برنامج واحد بيانات متعددة (SPMD) مع مزامنة النتائج عبر وصلات بينية عالية السرعة مثل NVIDIA NVLink.
Link to this sectionكيف يعمل توازي الموترات#
في جوهر أي شبكة عصبية توجد عمليات ضرب المصفوفات. يوزع توازي الموترات هذه العمليات عن طريق تقسيم المصفوفات صفياً أو عمودياً. على سبيل المثال، في طبقة متصلة بالكامل أو آلية انتباه Transformer، قد يقوم GPU بحساب النصف الأيسر من المصفوفة بينما يحسب آخر النصف الأيمن. بعد انتهاء العمليات الحسابية المتوازية، تتواصل الأجهزة -غالباً باستخدام عمليات التجميع All-Reduce- لتجميع النتائج الجزئية قبل تمرير الموتر الكامل إلى الطبقة التالية. تعمل التطورات الأكاديمية الأخيرة في عام 2025 على تحسين هذه العملية بشكل أكبر من خلال تقديم تنشيطات متزامنة جزئياً لتقليل عبء الاتصال الذي يمثل عادةً عنق زجاجة في عناقيد الحوسبة الكبيرة.
Link to this sectionالتمييز بين تقنيات التوازي ذات الصلة#
يتطلب فهم كيفية ملاءمة توازي الموترات ضمن المشهد الأوسع للحوسبة الموزعة التمييز بينه وبين الاستراتيجيات الشائعة الأخرى:
- توازي الموترات مقابل توازي النموذج: يعد توازي الموترات فئة فرعية محددة للغاية من توازي النموذج. بينما يشير توازي النموذج العام إلى تقسيم نموذج عبر الأجهزة بأي طريقة، يشير توازي الموترات بدقة إلى تجزئة الموترات الفردية داخل طبقة واحدة.
- توازي الموترات مقابل توازي خط الأنابيب: يعد توازي خط الأنابيب شكلاً آخر من أشكال توازي النموذج الذي يقسم الشبكة حسب العمق، حيث يضع الطبقات القليلة الأولى على GPU 0، والتالية على GPU 1، وهكذا. هذا يخلق تبعيات تسلسلية تُعرف بفقاعات خط الأنابيب. أما توازي الموترات فيقسم الطبقات نفسها، وينفذها في وقت واحد دون تأخير تسلسلي، لكنه يتطلب عرض نطاق ترددي أكبر بكثير للشبكة.
- توازي الموترات مقابل توازي البيانات: في توازي البيانات، يتم نسخ النموذج بالكامل على كل GPU، ويتم تقسيم مجموعة بيانات التدريب فقط عبر الأجهزة. بالنسبة للهياكل المحسنة للغاية مثل Ultralytics YOLO26، والتي تتناسب بسهولة مع وحدات GPU الحديثة، يعد توازي البيانات عبر
DistributedDataParallelفي PyTorch هو الطريقة الافتراضية. عادةً ما يكون توازي الموترات ضرورياً فقط عندما تتجاوز معلمات طبقة واحدة ذاكرة VRAM الخاصة بالجهاز، مما يسبب أخطاء نفاد الذاكرة (OOM).
Link to this sectionتطبيقات العالم الحقيقي#
يعد توازي الموترات لا غنى عنه في بنيات الذكاء الاصطناعي الحديثة، لا سيما للهياكل المتطورة التي تتطلب نطاقاً حسابياً هائلاً:
- تدريب نماذج اللغات الكبيرة (LLMs): نماذج الأساس الضخمة مثل Llama 3 من Meta و DeepSeek V3 تستخدم أطر عمل مثل NVIDIA Megatron-LM لتنفيذ توازي الموترات. نظراً لأن الأبعاد المخفية ورؤوس الانتباه في هذه النماذج كبيرة جداً، فإن تقسيمها عبر عقدة مكونة من 8 وحدات GPU يعد أمراً إلزامياً للتدريب بكفاءة والحفاظ على زمن انتقال منخفض أثناء الاستنتاج في الوقت الفعلي.
- نماذج الرؤية الكبيرة (LVMs) وتوليد الأبعاد الثلاثية: مع توسع رؤية الحاسوب نحو أنظمة التفكير متعددة الوسائط الضخمة، يستخدم الباحثون توازي الموترات جنباً إلى جنب مع توازي خط الأنابيب على خدمات مثل AWS SageMaker لتدريب محولات الرؤية العملاقة (ViTs). تتيح هذه التقنية معالجة الصور عالية الدقة وتوليد الفيديو التي تتطلب كتل ذاكرة متجاورة هائلة.
Link to this sectionتنفيذ توازي الموترات في PyTorch#
تاريخياً، كان على المهندسين كتابة منطق توزيع مخصص ومعقد لتجزئة الموترات. مؤخراً، قدمت PyTorch ميزة DTensor (الموتر الموزع)، مما يبسط سير العمل هذا أصلياً. أدناه مثال على إنشاء موتر مجزأ صفياً باستخدام واجهة برمجة تطبيقات الموتر الموزع الرسمية لـ 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}")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.






