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






