Key Takeaways
- تعدد GPU: يقسّم نموذجًا كبيرًا على 2+ GPU. مثال: نموذج 70B موزّع بالتساوي على 2× RTX 4090 = 48 GB VRAM إجمالًا.
- غرامة السرعة: أبطأ بنسبة ~5-10% من GPU واحدة (عبء الاتصال بين وحدات GPU).
- مثالي لـ: نماذج 70B، الخدمات عالية التزامن (50+ مستخدمًا متزامنًا).
- تلقائي: الأدوات الحديثة (vLLM، Ollama، llama.cpp) تكتشف عدة وحدات GPU تلقائيًا.
- اعتبارًا من أبريل 2026، هذا معيار لعمليات النشر الإنتاجية.
كيف يعمل تقسيم الطبقات والتوازي التنسوري؟
نموذج Transformer بحجم 70B له 80 طبقة. مع تقسيم الطبقات، قد يضع Ollama:
- GPU 1: الطبقات 1–40
- GPU 2: الطبقات 41–80
عند توليد token، يتدفق عبر GPU 1، ثم GPU 2، ويعود للـ token التالي. عبء الاتصال ضئيل.
•💡: نصيحة احترافية: الطبقات خفيفة — ما يهم هو سرعة الاتصال بين وحدات GPU. الطبقات 1–40 على GPU1 والطبقات 41–80 على GPU2 تعني نقلًا بين وحدات GPU لكل token. لهذا NVLink مهم.
الإعداد متعدد GPU بـ vLLM
يدعم vLLM التوازي التنسوري افتراضيًا بأمر واحد. استخدم الراية `--tensor-parallel-size` لتحديد عدد وحدات GPU:
# Run 70B model across 2 GPUs
vllm serve meta-llama/Llama-3.1-70B \
--tensor-parallel-size 2 \
--gpu-memory-utilization 0.95 \
--port 8000
# API is now at http://localhost:8000/v1
# Same API, automatic multi-GPU handling•⚠️: تحذير: يجب أن تكون لكلتا وحدتي GPU نفس VRAM. إذا مزجت RTX 4090 (24 GB) + RTX 4080 (16 GB)، سيُقيَّد vLLM بـ 16 GB لكل GPU. استخدم وحدات GPU من نفس الطراز للأداء الأمثل.
الإعداد متعدد GPU بـ Ollama
يكتشف Ollama عدة وحدات GPU تلقائيًا ويقسّمها تلقائيًا:
1. شغّل Ollama بشكل عادي: `ollama serve`
2. يكتشف Ollama 2+ GPU ويقسّم النماذج تلقائيًا
3. لا حاجة لأي تهيئة — يعمل ببساطة.
تحقق بـ `nvidia-smi` أو `rocm-smi` من تحميل كلتا وحدتي GPU.
•🛠️: ممارسة جيدة: تحقق من عمل الإعداد متعدد GPU بتشغيل `nvidia-smi` وفحص استخدام الذاكرة لكلتا وحدتي GPU. إذا كانت واحدة فقط محمّلة، فقد لا يكون Ollama قد اكتشف الـ GPU الثانية. افحص إصدارات التعريف وحدّث إذا لزم.
الأداء مع 2 GPU
| Setup | Modelo | Velocidad | Coste |
|---|---|---|---|
| 1× RTX 4090 (24GB) | 7B | 150 tok/sec | $1,800 |
| 1× RTX 4090 (24GB) | 70B | لا يتسع | $1,800 |
| 2× RTX 4090 (48GB) | 70B Q4 | 100 tok/sec | $3,600 |
| 2× RTX 4090 (48GB) | 70B Q5 | 90 tok/sec | $3,600 |
| 1× RTX 5090 (32GB) | 70B Q4 | 40–50 tok/sec | $2,000 |
| 2× RTX 5090 (64GB) | 70B Q8 | 120 tok/sec | $4,000 |
| 2× RTX 5090 (64GB) | 405B Q4 | 25–35 tok/sec | $4,000 |
| RTX 6000 Ada + RTX 4090 | 70B FP16 | 110 tok/sec | $6,800 |
•📌: نقطة رئيسية: وحدتا RTX 4090 تقدّمان ~100 tok/sec على نماذج 70B — نحو 90% من سرعة GPU واحدة، بعبء اتصال 5–10%. RTX 5090 (32 GB GDDR7، أُطلقت في يناير 2026) غيّرت المعادلة: وحدة 5090 واحدة تشغّل 70B Q4 بلا تقسيم بسرعة 40–50 tok/sec. الوحدتان 5090 المزدوجتان (64 GB مجمّعة) هما أول تهيئة استهلاكية قادرة على التعامل مع نماذج 405B Q4.
متى تستخدم تعدد GPU؟
تعدد GPU فعّال من حيث التكلفة عندما تحتاج نماذج 70B أو أكبر، أو خدمات عالية التزامن. استخدم عدة وحدات GPU عندما:
- تحتاج تشغيل نماذج 70B أو أكبر.
- تخدم 50+ مستخدمًا متزامنًا (المعالجة الدفعية).
- تريد تشغيل عدة نماذج 13B في آنٍ واحد.
- تدير خدمات إنتاجية (لا تجارب).
•💡: نصيحة احترافية: للتجربة مع نماذج 70B، جرّب أولًا CPU offloading بـ GPU واحدة (8–10 tok/sec على RTX 4090). بعد تأكيد الطلب في الإنتاج، استثمر في RTX 4090 ثانية للإعداد متعدد GPU (100 tok/sec).
أخطاء شائعة مع تعدد GPU
- توقّع تسريع 2× مع وحدتي GPU. تحصل على ~90% من سرعة GPU واحدة (عبء 5-10% للاتصال بين وحدات GPU).
- افتراض أن وحدات GPU يجب أن تكون متطابقة. يمكنك مزج RTX 4090 + RTX 4080، لكن vLLM سيُقيَّد بأبطأ GPU.
- عدم استخدام NVLink للاتصال. بدون NVLink، الاتصال متعدد GPU أبطأ. NVLink نادر في وحدات GPU الاستهلاكية.
- تجاهل عرض نطاق PCIe. يمر الاتصال بين وحدات GPU عبر PCIe، ما يحدّ من عرض النطاق (~16 GB/sec في PCIe 4.0).
- شراء GPU ثانية قبل تجربة خيارات GPU واحدة. قبل استثمار 1,800 دولار أو أكثر في RTX 4090 ثانية، جرّب: (1) تكميم Q4 بدلًا من Q5/Q8 (يقلّص VRAM للنصف)، (2) CPU offloading بـ Ollama (8–10 tok/sec لـ 70B على 4090 واحدة)، (3) RTX 5090 32 GB ببطاقة واحدة (تشغّل 70B Q4 بلا تقسيم مقابل 2,000 دولار). يجب أن يكون تعدد GPU آخر تحسين، لا الأول.
•⚠️: تحذير: استخدام وحدات GPU من نفس الطراز ضروري لأداء متسق. وحدات GPU غير المتطابقة (مثل 4090 + 4080) تخلق عنق زجاجة حيث تملي البطاقة الأبطأ سرعة النظام. في الإنتاج، اقرن دائمًا وحدات GPU متطابقة.
الأسئلة الشائعة
•💬: هل تعلم؟ عرض نطاق NVLink (900 GB/sec) مقابل PCIe (64 GB/sec) هو العامل الخفي في أداء تعدد GPU. وحدات GPU المهنية A100/H100 بـ NVLink يمكنها تحقيق تحجيم شبه خطي (مثل تسريع 2× مع وحدتي GPU). بطاقات RTX الاستهلاكية مقيّدة بـ PCIe، ما يسبب عبئًا بنسبة 5–10%.
متى يجب أن أستخدم عدة وحدات GPU لنماذج LLM المحلية؟
استخدم عدة وحدات GPU عندما لا تملك GPU واحدة VRAM كافية لنموذجك المستهدف. وحدتا RTX 4090 (48 GB مجمّعة) تشغّلان نماذج 70B بتكميم Q5 بسرعة ~100 tokens/sec. GPU واحدة مع offloading تبلغ فقط 8–10 tokens/sec لنفس النموذج. تعدد GPU فعّال من حيث التكلفة لنماذج 70B أو أكبر عندما تملك أو يمكنك الحصول على GPU ثانية.
كيف يعمل التوازي التنسوري في vLLM بين وحدات GPU؟
يقسّم vLLM طبقات النموذج بين وحدات GPU باستخدام التوازي التنسوري (`--tensor-parallel-size 2`). تخزّن كل GPU نصف مصفوفات أوزان النموذج؛ تُجرى الحسابات بالتوازي وتُنقل النتائج عبر NVLink أو PCIe. NVLink (NVLink 4.0: 900 GB/sec ثنائي الاتجاه) أسرع بشكل ملحوظ من PCIe (64 GB/sec) للاتصال بين وحدات GPU.
هل يحدث NVLink فرقًا ملحوظًا لاستدلال LLM؟
يحسّن NVLink الأداء بنسبة 10–30% مقابل PCIe للنماذج الكبيرة التي تتطلب اتصالًا متكررًا بين وحدات GPU. لنماذج 70B المقسّمة بين وحدتي GPU، يخفّض NVLink عبء الاتصال من ~15% إلى ~3–5%. بطاقات RTX الاستهلاكية تستخدم PCIe؛ NVLink متاح في وحدات GPU المهنية A100/H100. للاستخدام المنزلي، PCIe كافٍ.
هل يمكنني مزج طرازات GPU مختلفة (مثل RTX 4090 + RTX 4080) لتقسيم الطبقات؟
نظريًا نعم — يدعم vLLM وllama.cpp التهيئات بوحدات GPU مختلطة. عمليًا، تحدّ الـ GPU الأبطأ من أداء الزوج. زوج 4090+4080 يؤدي أقرب إلى زوج 4080 منه إلى زوج 4090. يُوصى بشدة باستخدام وحدات GPU من نفس الطراز في عمليات النشر الإنتاجية.
كم وحدة GPU أحتاج لنماذج 70B و405B؟
70B بـ Q4: يتسع في 2× RTX 4090 (35 GB مطلوبة، 48 GB متاحة). 70B بـ Q8: يحتاج 4× RTX 4090 (70 GB مطلوبة). 405B بـ Q4: يحتاج 4× RTX 4090 (200 GB مطلوبة — محدود). لـ 405B، وحدات GPU المهنية A100 80GB×4 (320 GB مجمّعة) هي المنصة الموصى بها.
ما غرامة السرعة لتقسيم الطبقات مقابل GPU واحدة؟
يضيف تقسيم الطبقات عبئًا بنسبة 5–10% بسبب الاتصال بين وحدات GPU. وحدتا RTX 4090 تشغّلان نموذج 70B تبلغان ~100 tokens/sec — نحو 90% مما تحققه GPU نظرية واحدة بسعة 48 GB. هذا أفضل بكثير من CPU offloading (8–10 tokens/sec) أو محاولة تشغيل نموذج 70B مستحيل على 4090 واحدة.
هل يمكنني تشغيل 70B على RTX 5090 واحدة بلا تعدد GPU؟
نعم — RTX 5090 (32 GB GDDR7، يناير 2026) تتسع لـ Llama 3.3 70B بـ Q4_K_M (~40 GB مع ذاكرة KV في سياق قصير، محدودة بـ 32 GB مع سياق 4K). الأداء: 40–50 tok/sec. لـ 70B في سياقات أطول (32K+) أو تكميم أعلى (Q5+)، لا تزال هناك حاجة لوحدتي GPU. ألغت 5090 الحاجة لتعدد GPU لـ 70B Q4 في سياق قصير.
هل يستحق PCIe 5.0 العناء لتهيئات LLM متعددة GPU؟
يضاعف PCIe 5.0 عرض النطاق إلى ~128 GB/sec مقابل 64 GB/sec لـ PCIe 4.0. لاستدلال 70B بوحدتي GPU، يخفّض هذا عبء الاتصال من ~10% إلى ~6–7%. التحسّن ملحوظ لكنه غير جذري — NVLink (900 GB/sec) يبقى الطريقة الوحيدة لتحقيق تحجيم شبه خطي. لتهيئات الاستهلاك، يُوصى بلوحات أم PCIe 5.0 عند الشراء الجديد، لكن الترقية من PCIe 4.0 لأجل تعدد GPU فقط ليست فعّالة من حيث التكلفة.
المصادر
- توثيق التوازي التنسوري في vLLM -- التوثيق الرسمي لـ vLLM حول الخدمة الموزّعة والتوازي التنسوري.
- دعم تعدد GPU في Ollama -- توثيق GitHub لـ Ollama لاكتشاف GPU وتقسيم الطبقات.
- التنسورات الموزّعة في PyTorch -- توثيق إطار العمل الأساسي للعمليات التنسورية الموزّعة.