🖥️

المجلد الخامس — البنية التحتية ومسرعات التعلم الآلي

دليل شامل لفهم الأجهزة — CPU, GPU, TPU, NPU — ومراكز البيانات، والتكلفة، والبرمجيات الوسيطة للتدريب الموزع

٧ فصول • مقارنات • جداول • أكواد عملية
الفصل الأول

CPU vs GPU vs TPU vs NPU — مقارنة معمارية شاملة

عندما تبدأ رحلتك في تدريب نماذج التعلم الآلي، يصادفك أول سؤال: هل أحتاج CPU أم GPU أم شيء آخر؟ الإجابة تعتمد على طبيعة المهمة. لفهم ذلك، يجب أن نتعمق في الفروقات المعمارية بين كل معالج.

المقارنة المعمارية

الخاصيةCPUGPUTPUNPU
عدد النوى4-24 نوى قوية~10K+ نوى صغيرةواحد MXU ضخم~16 نوى عصبية
الغرضعمليات متسلسلةتوازي هائل (SIMT)ضرب المصفوفاتاستدلال منخفض الطاقة
الذاكرة32-256GB DDR524-192GB HBM32-128GB HBMمشتركة مع SoC
Cacheكبير (L1-L3)صغير (L1/L2 فقط)ضئيل جدًاصغير
عرض النطاق~50-100 GB/s~900-3350 GB/s~600-1200 GB/s~50-100 GB/s
الدقة (Precision)FP64, FP32FP64→FP8, INT8BF16, INT8INT8, FP16
الاستهلاك (TDP)~65-350W~250-700W~200-450W~5-15W
التوازيضعيفهائلمصمم للمصفوفاتمتوسط للشبكات
التكلفة التقريبية$500-$5,000$10K-$30K+~$4-8/ساعة (GCP)مضمنة بالجهاز

🧠 CPU (Central Processing Unit)

المعالج المركزي هو العقل المدبر لأي جهاز. صُمم للعمليات المتسلسلة التي تتطلب زمن استجابة منخفضًا جدًا. يحتوي CPU على عدد قليل من النوى (cores) القوية التي تعمل بترددات عالية (3-5 GHz)، مع ذاكرة كاش ضخمة (L1/L2/L3) لتقليل زمن الوصول إلى الذاكرة. في سياق التعلم الآلي، الـ CPU مسؤول عن التحكم في تدفق البيانات، تحميل البيانات (data loading)، والتنسيق بين الأجهزة الأخرى. لكنه غير مناسب لتدريب النماذج الكبيرة بسبب محدودية التوازي.

🎮 GPU (Graphics Processing Unit)

GPU هو بطل عالم التعلم الآلي. صُمم في الأصل لرسومات الألعاب، لكن اكتُشف أن معمارية SIMT (Single Instruction Multiple Threads) مثالية لضرب المصفوفات وعمليات التعلم العميق. يحتوي GPU على آلاف النوى الصغيرة — في H100 هناك 18,432 CUDA core و576 Tensor Core. كل نوى GPU تعمل معًا على نفس العملية لكن ببيانات مختلفة (SIMD). الميزة الحقيقية هي Tensor Cores — وحدات متخصصة بضرب المصفوفات بدقة منخفضة (FP16, BF16, INT8, FP8) تؤدي عمليات بحجم 4×4 matrix multiply-add في دورة ساعة واحدة.

💡 حقيقة مهمة: GPU ليس دائمًا أسرع! العنقود (bottleneck) الشائع هو نقل البيانات بين CPU ← GPU عبر PCIe. استخدم torch.cuda.stream و DataLoader(pin_memory=True) لتفادي هذه المشكلة.

☁️ TPU (Tensor Processing Unit)

TPU هو ASIC (Application-Specific Integrated Circuit) — شريحة مصممة خصيصًا لمهمة واحدة: ضرب المصفوفات الضخمة. قلب TPU هو MXU (Matrix Multiply Unit)، وهو عبارة عن systolic array بأبعاد 128×128 تقوم بضرب مصفوفتين في دورة ساعة واحدة. MXU يعمل على الـ BF16 بشكل أساسي. الفرق الجوهري: GPU يجب أن يكون متعدد الاستخدامات (ألعاب + ML + render)، بينما TPU مخلص لمهمة واحدة — وهذا يجعله أكثر كفاءة في استهلاك الطاقة لكل عملية FLOP.

📱 NPU (Neural Processing Unit)

NPU هو معالج عصبي مدمج في SoC (System on Chip) للأجهزة المحمولة. أشهرها Apple Neural Engine (منذ iPhone X/A11 Bionic) و Qualcomm Hexagon. NPU مصمم لـ الاستدلال (inference) فقط — تشغيل النماذج المدربة مسبقًا على الجهاز باستهلاك طاقة ضئيل (5-15W). لا يمكن تدريب النماذج على NPU. لكن ميزته: خاص (private) — لا ترسل بيانات المستخدم للسحابة، وزمن استجابة فوري (لأنه محلي). أحدث إصدار من Qualcomm Hexagon (Snapdragon 8 Gen 3) يقدم ~45 TOPS (INT8) — وهو رقم مذهل لشريحة جوال!

الأرقام والمواصفات

1,000+
GFLOPS (FP32) لأقوى GPU
4,000,000+
GFLOPS (FP8) لـ H100
~45
TOPS (INT8) لأحدث NPU في الجوال
3,350
GB/s عرض نطاق H100 HBM3
⚠️ تنبيه مهم: لا تقارن GFLOPS عبر الشركات المصنعة مباشرة. NVIDIA تحسب GFLOPS باستخدام FMA (Fused Multiply-Add) حيث كل عملية تحتوي على multiply+add (عملتان). بعض الشركات تحسب كل عملية multiply بمفردها — الفرق ×2.

المواصفة الأهم: ليست GFLOPS وحدها، بل نسبة GFLOPS إلى عرض النطاق (Ops/Bytes). نموذج Transformer يكون bandwidth-bound للـ inference وcompute-bound للـ training. لهذا تدريب LLM يحتاج GPU/TPU قوي، بينما inference قد يكون أبطأ على GPU فائق بسبب عنق الزجاجة في نقل البيانات!
الفصل الثاني

GPU Architecture — من CUDA إلى Blackwell

GPU الحديثة هي أعجوبة هندسية. لفهمها، يجب أن نبدأ من المعمارية الأساسية لـ NVIDIA CUDA، ثم نتابع التطور عبر الأجيال: Volta → Ampere → Hopper → Blackwell.

CUDA Cores و Tensor Cores و Streaming Multiprocessors

كل GPU من NVIDIA يتكون من مجموعة من Streaming Multiprocessors (SMs). كل SM يحتوي على:

🧬 كيف يعمل Warp؟

GPU ينفذ التعليمات على مجموعات من 32 thread تسمى warp. كل thread في نفس warp ينفذ نفس التعليمات لكن على بيانات مختلفة (SIMT). إذا كانت threads تحتاج مسارًا مختلفًا (if/else)، يحدث warp divergence — حيث ينفذ كلا المسارين بشكل متسلسل، مما يقلل الأداء إلى النصف. تجنب if-else في kernel functions لضمان أقصى أداء.

🔥 Tensor Cores — سلاح NVIDIA السري

Tensor Cores تؤدي عملية D = A × B + C حيث A و B مصفوفات 4×4 (FP16/BF16/INT8) والناتج FP32. في H100 مع FP8 (بفضل Transformer Engine)، الأداء يقفز إلى 4,000 TFLOPS — أي 6 أضعاف FP16 وأسرع 60 مرة من FP32!

الدقةنوع Tensor Coreأداء H100 (TFLOPS)أداء A100 (TFLOPS)B200 (TFLOPS)
FP64349.745
FP326719.590
TF32Tensor Core989312~2,250
FP16/BF16Tensor Core1,979624~4,500
FP8Tensor Core 2nd Gen3,9589,000
INT8Tensor Core3,9581,2489,000

خط GPU: من V100 (Volta) إلى B200 (Blackwell)

📅 V100 (Volta, 2017) — الثورة الأولى

أول GPU مع Tensor Cores. غيرت قواعد اللعبة تمامًا. V100 كانت أول من قدم FP16 Tensor Cores مع 125 TFLOPS. كانت بطاقة $10K أصبحت معيار الصناعة لتدريب النماذج حتى 2020. ذاكرة 32GB HBM2 بسعة 900 GB/s.

📅 A100 (Ampere, 2020) — منصة التدريب

A100 ضاعفت كل شيء: 312 TFLOPS (TF32)، 624 TFLOPS (FP16)، ذاكرة 80GB HBM2e بعرض نطاق 2,039 GB/s. قدمت Multi-Instance GPU (MIG) التي تسمح بتقسيم GPU إلى 7 أجزاء مستقلة — مثالية للسحابة لتأجير نصف GPU. AMD بدأت بالمنافسة مع MI250X لكنها بقيت بعيدة.

📅 H100 (Hopper, 2022) — وحش التدريب

H100 هي طفرة هائلة. قدمت Transformer Engine الذي يختار ديناميكيًا أفضل دقة (FP8/FP16) لكل طبقة، مما يضاعف الأداء. قدمت NVLink 4.0 بـ 900 GB/s بين GPUs. الذاكرة: 80GB HBM3 بعرض نطاق 3,350 GB/s. TDP: 700W. السعر: ~$25K-30K.

📅 B200 (Blackwell, 2024) — مستقبل التدريب

B200 تربط شريحتين (die) في حزمة واحدة عبر NVLink. هذا يعطي 80GB × 2 = 160GB HBM3e. الأداء FP8: ~9,000 TFLOPS. تقدم FP4 لأول مرة — مما يضاعف الأداء النظري أكثر. السعر المتوقع: $30K-50K. متوفرة في NVIDIA DGX B200 كـ 8 GPUs.

جدول مقارنة شامل

المواصفةV100A100H100B200
السنة2017202020222024
معماريةVoltaAmpereHopperBlackwell
عملية التصنيع12nm7nm4nm3nm (TSMC 4NP)
عدد الترانزستور21.1B54.2B80B208B
SMs80108132~168
CUDA Cores5,1206,91218,432>24,000
Tensor Cores640432 (3rd gen)576 (4th gen)>700 (5th gen)
FP32 TFLOPS15.719.56790
FP16/BF16 TFLOPS1256241,979~4,500
FP8 TFLOPS3,9589,000
HBM32GB HBM280GB HBM2e80GB HBM3160GB HBM3e
Bandwidth900 GB/s2,039 GB/s3,350 GB/s~4,000+ GB/s
NVLinkNVLink 2 (300 GB/s)NVLink 3 (600 GB/s)NVLink 4 (900 GB/s)NVLink 5 (1,800 GB/s)
TDP300W400W700W~1,000W
السعر التقريبي$10K$15-20K$25-30K$30-50K

⚔️ المنافسون: AMD MI300X و Intel Gaudi 3

المواصفةNVIDIA H100AMD MI300XIntel Gaudi 3
السنة202220232024
عملية التصنيع4nm5nm + 6nm (chiplet)5nm
الذاكرة80GB HBM3192GB HBM3~128GB HBM2e
Bandwidth3,350 GB/s5,200 GB/s~3,200 GB/s
FP16 TFLOPS1,979~1,307~1,850
FP8 TFLOPS3,958~2,615~3,700
البرمجياتCUDA (ناضجة جدًا)ROCm (قيد التحسين)SynapseAI (محدودة)
التوافق مع PyTorchممتازجيدمتوسط
TDP700W750W~600W
السعر~$30K~$15-20K~$12-15K
النظام البيئيممتاز (CUDA, TensorRT)متحسن (ROCm, MIOpen)مبكر (OneAPI)
⚠️ لماذا NVIDIA مسيطرة؟ ليس لأن أجهزتها أفضل كثيرًا — بل لأن CUDA هو السبب. كل مكتبات التعلم العميق (PyTorch, TensorFlow, JAX) بنيت على CUDA. AMD تحاول اللحاق بـ ROCm، لكن التوافق لا يزال أقل. Intel Gaudi 3 يقدم سعرًا منخفضًا لكن النظام البيئي لا يزال محدودًا. إذا كنت تبدأ مشروعًا جديدًا وليس لديك خبرة سابقة، اختر NVIDIA — ستوفر 80% من وقتك في debugging.
الفصل الثالث

Google TPU — الهندسة المخصصة للمحولات

في 2015، أدركت Google أن نماذج Transformer تتطلب قوة حسابية هائلة، وأن GPUs المتاحة لم تكن مثالية لهذه المهمة. بدلاً من انتظار NVIDIA، قررت Google تصميم شريحتها الخاصة — وهكذا وُلد TPU (Tensor Processing Unit).

لماذا TPU؟ — قصة Transformer

عندما نشرت Google ورقة "Attention is All You Need" في 2017، كانت قد اختبرت بالفعل الجيل الأول من TPU داخليًا لمشاريع أخرى مثل ترجمة Google Translate. أدركت Google أن Transformer — الذي يعتمد بالكامل على ضرب المصفوفات الكبيرة — هو التطبيق المثالي لـ TPU. بينما GPUs تصمم لألعاب الفيديو حيث التنوع هو الأساس، TPU هو آلة ضرب مصفوفات خالصة. النتيجة: كفاءة أعلى بـ 2-3x لكل واط مقارنة بـ GPU لنفس المهمة.

أجيال TPU: من v1 إلى v5p

الجيلالسنةالاستخدامالأداء (TFLOPS)الذاكرةعدد الشرائح
TPU v12015Inference فقط92 TOPS (INT8)8MB ON-chip~1,000
TPU v22017تدريب + Inference180 TFLOPS (BF16)64GB HBM~1,000
TPU v32018تدريب + Inference420 TFLOPS (BF16)128GB HBM~1,000
TPU v42021تدريب فقط~275 TFLOPS/chip (BF16)~96GB HBM4,096 (pod)
TPU v5e2023تدريب + Inference~400 TFLOPS/chip (BF16)~128GB HBMمتغير
TPU v5p2023تدريب فائق~459 TFLOPS/chip (BF16)~192GB HBM8,960 (pod)

🔬 MXU (Matrix Multiply Unit) — قلب TPU

MXU هو systolic array بأبعاد 128×128 في TPU v2/v3 و 128×256 في v4. يعمل كالتالي:

  1. تغذية المصفوفة A من اليسار إلى كل عمود من MXU
  2. تغذية المصفوفة B من الأعلى إلى كل صف من MXU
  3. كل خلية (PE — Processing Element) تحتوي على مضاعف (multiplier) + مُجمّع (accumulator)
  4. النتيجة: ضرب مصفوفة 128×128 في دورة ساعة واحدة

للمقارنة: ضرب مصفوفة 128×128 على GPU يحتاج إلى العديد من التعليمات والعديد من الساعات. على MXU يكتمل في دورة ساعة واحدة لكل خطوة (حتى 128 خطوة للنتيجة الكاملة).

128 × 128
أبعاد MXU (شبكة ضرب المصفوفات)
10¹⁹
FLOPS لحزمة TPU v4 (4096 chip)
8,960
عدد شرائح TPU v5p في pod واحد
30-40%
توفير التكلفة مع TPU vs GPU للتدريب

مقارنة: TPU vs GPU للتدريب

✅ مزايا TPU
  • كفاءة طاقة أعلى بنسبة 30-40%
  • MXU يسرع ضرب المصفوفات بشكل كبير
  • ربط مذهل عبر Interconnect الخاص بـ Google
  • TPU v5p pod يمكنه تدريب نموذج بحجم GPT-4 في أسابيع
  • سعر أقل للساعة (عند الاستخدام المكثف)
❌ عيوب TPU
  • متاح فقط على Google Cloud (GCP)
  • يتطلب JAX أو TensorFlow — لا يدعم PyTorch مباشرة
  • يمكن أن يكون أبطأ 2-3x للـ inference الصغير
  • مرونة أقل: إذا لم يكن النموذج يعتمد على ضرب المصفوفات، الأداء ينهار
  • التصحيح (debugging) أصعب من GPU

من يختار TPU ومن يختار GPU؟

السيناريوالاختيار الأفضلالسبب
تدريب LLaMA 3 (Meta)GPU — 30,000+Meta تمتلك بنية تحتية ضخمة لـ GPU وفريق CUDA متمرس
Gemini (Google)TPUTPU v5p pod مصمم خصيصًا لمثل هذه النماذج
GPT-5 (OpenAI)GPUMicrosoft Azure يوفر H100/H200 — وOpenAI لا تريد تقييد نفسها بـ GCP
شركة ناشئة تبدأ تدريب LLMGPUمرونة PyTorch + مجتمع دعم ضخم + سهولة التصحيح
مشروع بحثي على JAXTPUإذا كنت مرتاحًا لـ JAX، TPU v5e أرخص بـ 30-40%
Inference لمشروع صغيرGPUTPU ليس مثاليًا للـ inference الفردي — GPUs أفضل مع TensorRT
هندسة TPU تتطلب تعديلات في الشيفرة
إذا انتقلت من GPU إلى TPU، يجب تغيير شيفرة PyTorch إلى JAX. TPU يعمل بشكل أفضل مع jax.jit(static_argnums=...) و jax.vmap للتوازي. المقاربة: نموذجك يحتاج إلى إعادة كتابة للاستفادة القصوى من MXU.
# مثال: تدريب على TPU مع JAX
import jax
import jax.numpy as jnp
from jax.sharding import PartitionSpec, NamedSharding

# تقسيم النموذج عبر الأجهزة
mesh = jax.make_mesh((8, 4), ('data', 'model'))
sharding = NamedSharding(mesh, PartitionSpec('data', 'model'))

@jax.jit
def train_step(params, batch):
    def loss_fn(p):
        logits = model_forward(p, batch['x'])
        return jnp.mean(softmax_cross_entropy(logits, batch['y']))
    loss, grads = jax.value_and_grad(loss_fn)(params)
    params = jax.tree_map(lambda p, g: p - lr * g, params, grads)
    return loss, params
الفصل الرابع

مراكز بيانات التعلم الآلي

امتلاك GPU واحد هو شيء. امتلاك 10,000 GPU هو عالم مختلف تمامًا. تدريب نموذج GPT-4 (1.8T parameters) أو LLaMA 3 (405B) يتطلب بنية تحتية على مستوى مراكز البيانات. هنا تظهر التحديات الحقيقية: ربط هذه الأجهزة، تبريدها، تزويدها بالطاقة، والتعامل مع أعطالها.

ربط الأجهزة داخل العقدة وبين العقد

🔗 NVLink و NVSwitch — الربط داخل العقدة (Node)

في خادوم واحد، توضع 8 GPUs. كيف تتحدث مع بعضها؟ الجواب هو NVLink — ناقل عالي السرعة يصل كل GPU بجيرانه. في H100، NVLink 4.0 يوفر 900 GB/s (اتجاهين) لكل GPU. لكن التحدي: في 8 GPUs، ربط كل GPU مع كل GPU يحتاج إلى 56 وصلة! هنا يأتي NVSwitch — وهو عبارة عن محول (switch) يسمح لأي GPU بالتحدث مع أي GPU آخر بأقصى سرعة. في DGX H100، يوجد 4 × NVSwitch تربط 8 GPUs ببعضها بشبكة كاملة (full bisection bandwidth).

🌐 InfiniBand — ربط العقد (Nodes)

عندما يكون لديك 1,000+ GPU عبر مئات الخوادم، لا يمكن الاعتماد على NVLink (يعمل داخل العقدة فقط). هنا يأتي دور InfiniBand — البروتوكول القياسي لربط العقد في HPC والتعلم الآلي. سرعة NDR InfiniBand: 400-800 Gbps لكل منفذ. في كلاستر كبير (~16,000 GPU)، تُستخدم طوبولوجيا Fat Tree أو Dragonfly+ لتقليل زمن الوصول وزيادة عرض النطاق.

🌐 Ethernet: RoCEv2

بديل InfiniBand هو RoCE (RDMA over Converged Ethernet) — بروتوكول يسمح بـ RDMA (Remote Direct Memory Access) على شبكات Ethernet العادية. أرخص من InfiniBand، لكن أداء أقل بنسبة ~10-20%. مناسب للشركات التي تمتلك بنية تحتية Ethernet ولا تريد الاستثمار في InfiniBand.

طريقة الربطالمدىالسرعةزمن الوصولالتكلفة
NVLink (H100)داخل العقدة900 GB/s<1 µsمضمن
InfiniBand NDRبين العقد400-800 Gbps1-2 µsعالية
RoCEv2بين العقد100-400 Gbps2-5 µsمتوسطة
Ethernet العاديبين العقد10-100 Gbps5-50 µsمنخفضة

التبريد والطاقة

🔥 استهلاك الطاقة — الأرقام المرعبة

كل H100 GPU تستهلك 700W. في خادوم DGX H100 ب 8 GPUs: 8 × 700W + CPUs + ذاكرة + fans = ~7kW لكل خادوم. كلاستر بـ 30,000 GPU يستهلك ~30-35MW مستمرة. لنحسب التكلفة السنوية:

📊 تكلفة الطاقة السنوية لكلاستر 30,000 GPU
30,000 GPU × 700W × 24h × 365 يوم × $0.10/kWh = ~$18.4M
فقط للكهرباء! هذا قبل التبريد، الصيانة، رواتب المهندسين، واستهلاك المبنى نفسه.

❄️ التبريد: هواء vs ماء

30-40kW لكل رف (rack) مع 4 خوادم. هذا يعني أن كل رف يولّد حرارة تعادل 30-40 مدفأة كهربائية تعمل بكامل طاقتها! تبريد الهواء التقليدي لا يكفي فوق 20kW/rack. الحل: التبريد السائل (Liquid Cooling).

🌬️ تبريد الهواء
  • أرخص في التركيب
  • صيانة أسهل
  • حد أقصى: ~25kW/rack
  • يحتاج ممرات باردة/ساخنة
  • غبار ومشاكل رطوبة
  • أقل كفاءة طاقة
💧 التبريد السائل (Direct-to-Chip)
  • تبريد مباشر للـ GPU/CPU
  • يدعم حتى 100kW+/rack
  • يقلل استهلاك الطاقة 30-40%
  • ماء × GPU (بدون كهرباء مباشرة)
  • استثمار أولي أعلى
  • خطر تسرب (وإن كان نادرًا)

☠️ فشل الأجهزة — حقيقة مرعبة

في كلاستر بـ 1,000 GPU، تتوقع 1-2 GPU تفشل يوميًا. ليس كل GPU — لكن في كلاستر بـ 10,000 GPU، تتوقع 10-20 فشلًا في الأسبوع. لهذا:

📌 قاعدة ذهبية في مراكز بيانات ML: ليس "إذا" سيفشل جهاز، بل "متى". صمم نظامك ليتحمل الفشل من اليوم الأول. استثمر في monitoring (Prometheus + Grafana) و alerting. الفشل الأول سيكون مفاجئًا — لا تكن غير مستعد.
# مثال: تقرير صحة GPU باستخدام nvidia-smi (تشغيل دوري كل 5 دقائق)
watch -n 300 nvidia-smi --query-gpu=index,name,temperature.gpu,utilization.gpu,power.draw --format=csv

# مثال: مراقبة درجة حرارة GPU والتنبيه
while true; do
  TEMP=$(nvidia-smi --query-gpu=temperature.gpu --format=csv,noheader)
  if [ "$TEMP" -gt 85 ]; then
    echo "ALERT: GPU temperature $TEMP°C exceeds 85°C threshold!"
    # إرسال تنبيه (PagerDuty, Slack, Telegram)
  fi
  sleep 60
done
الفصل الخامس

السحابة vs المحلي — تحليل التكلفة الإجمالية (TCO)

واحد من أكثر القرارات صعوبة في أي مشروع تعلم آلي: هل أستأجر GPU من السحابة أم أشتري الخوادم وأديرها بنفسي؟ الإجابة تعتمد على: حجم التشغيل، مدة التشغيل، نموذج العمل، وفريقك.

أسعار GPU في السحابة

الموفرA100 (80GB)H100H200Spot / متقطعتخزين إضافي
🏆 RunPod$1.19/ساعة$2.69/ساعة-60%$0.10/GB
⚡ Lambda Labs$1.34/ساعة$2.89/ساعة$3.59/ساعة-50%مضمن
🔷 CoreWeave$1.29/ساعة$2.72/ساعة-65%$0.08/GB
🔴 GCP (Google)$3.48/ساعة≈$5.00/ساعة-60%$0.17/GB
🟠 AWS$3.20/ساعة$4.00/ساعة≈$6.00-55%$0.23/GB
🔵 Azure$3.40/ساعة$4.80/ساعة≈$6.31-50%$0.20/GB
🟢 OMC (Oracle)$2.40/ساعة$3.60/ساعة-55%$0.10/GB

لاحظ الفرق الصارخ بين RunPod ($1.19) و AWS ($3.20) لنفس GPU A100! نفس العتاد، نفس RAM، نفس الأداء — لكن السعر يختلف 3x بسبب الخدمات الإضافية (IAM, VPC, ELB, دعم فني, وفواتير معقدة). منصات مثل RunPod و Lambda تقدم GPU بأسعار تنافسية جدًا، لكن بخدمات أقل. CoreWeave تقدم أفضل توازن بين السعر والأداء.

💡 نصيحة ذهبية: إذا كان تدريبك يستمر أكثر من 100 ساعة شهريًا، استخدم Spot/Preemptible instances. الخصم 50-65% مع التحمل — إذا توقفت المثيل، يستأنف checkpoint التالي التدريب من حيث توقف. مع DeepSpeed و ZeRO، يمكنك خسارة 30 دقيقة فقط.

التكلفة المحلية (On-Premise)

💰 تفصيل تكلفة خادوم 8×H100

المكون
السعر التقديري
8 × NVIDIA H100 (80GB)
$200,000 - $240,000
CPU + Motherboard
$15,000 - $20,000
RAM (2TB DDR5)
$8,000 - $12,000
SSD (30TB NVMe)
$5,000 - $8,000
NVSwitch + InfiniBand
$15,000 - $25,000
Power Supply + Chassis
$7,000 - $10,000
المجموع التقريبي
$250,000 - $315,000

📊 مقارنة: سحابة vs محلي — متى تختار ماذا؟

العاملالسحابة (Cloud)محلي (On-Premise)
التكلفة الأولية$0 — تدفع فقط عند الاستخدام$250K-5M+ — شراء الخوادم
التكلفة الشهرية$5K-50K — إيجار مستمر$2K-10K — كهرباء + صيانة
وقت التجهيزدقائق — spin up GPU2-6 أشهر — شراء + تركيب
المرونةغير محدود — آلاف GPUs بنقرةمحدود — ما اشتريته هو ما لديك
صيانةالموفر يتولى كل شيءفريق صيانة داخلي مطلوب
أمان البياناتبياناتك على خادم طرف ثالثتحكم كامل في البيانات
التوسعلامحدود — ادفع ووسعيحتاج شراء + تركيب + وقت
تكلفة الفشليستبدل الموفر الجهازأنت مسؤول عن الإصلاح

📐 معادلة القرار: Cloud vs On-Prem

📋 متى تختار السحابة؟
• أقل من 8,000 محادثة/يوم (inference) — السحابة أرخص
بحث وتطوير — تحتاج مرونة في تجربة نماذج متعددة
مشروع موسمي — تدريب لمدة 1-3 أشهر ثم يتوقف
بداية شركة — ليس لديك رأس مال لشراء أجهزة

📋 متى تختار المحلي؟
• أكثر من 30,000 محادثة/يوم مع نمو سريع — التكلفة الحدية تقل كثيرًا
تدريب مستمر — 24/7/365 — السحابة ستكلف 2-3x أكثر في 3 سنوات
بيانات حساسة — HIPAA, حكومية، عسكرية
فريق بنية تحتية — لديك مهندسين لإدارة الكلاستر

🏢 Hybrid — الأفضل للشركات المتوسطة

الواقع أن معظم الشركات تختار حلًا هجينًا:

⚠️ لا تنسَ التكاليف الخفية للمحلي:
مهندس بنية تحتية ML: الراتب ~$180K-300K/سنويًا (في أمريكا) — هذا راتب موظف واحد يمكنه إدارة كلاستر بـ 50-100 GPU
كهرباء: $15K-25K/شهرًا لكلاستر 100 GPU (700W × 100 × 24h × 30 يوم × $0.10/kWh = ~$50,400 — مع التبريد يصل إلى $70K)
تبريد: %30-40 إضافي على فاتورة الكهرباء
الفصل السادس

البرمجيات الوسيطة للتدريب الموزع

بعد أن حصلت على GPU القوية وأسلاك InfiniBand، تحتاج البرمجيات التي تجعل كل هذه الأجهزة تعمل معًا كفريق واحد. هذه الطبقة من البرمجيات هي ما يسمى Middleware للتدريب الموزع — وهي المسؤولة عن توزيع البيانات، مزامنة التدرجات (gradients)، والتواصل بين GPUs.

مكتبات الاتصال بين GPUs

📡 NCCL — نبض نظام الاتصال

NVIDIA NCCL (NVIDIA Collective Communications Library) هو قلب كل تدريب موزع. هو ليس شيئًا تستخدمه مباشرة — بل كل المكتبات الأخرى (PyTorch DDP, DeepSpeed, Megatron-LM) تبني فوقه. NCCL يوفر عمليات اتصال جماعية (collective operations):

🔬 كيف يعمل AllReduce في التدريب الموزع؟
1. كل GPU يحسب تدرجاته (gradients) على دفعته (batch)
2. NCCL يجمع كل التدرجات عبر كل GPUs باستخدام Ring AllReduce أو Tree AllReduce
3. كل GPU يحصل على متوسط التدرجات من كل العينات
4. كل GPU يحدّث أوزانه (weights) — والنتيجة: جميع GPUs لديها نفس الأوزان

Ring AllReduce: أفضل للكلاساتر الكبيرة. كل GPU يتحدث مع جارين فقط، وتمر البيانات في حلقة (ring). زمن الاتصال مستقل عن عدد GPUs نظريًا!

🚀 DeepSpeed — Microsoft ZeRO, MoE, Flash Attention

DeepSpeed من Microsoft هي أشهر مكتبة للتدريب الموزع على نطاق واسع. أبرز ميزاتها:

# DeepSpeed ZeRO-3 — تدريب نموذج 70B على 8 GPU
import deepspeed

ds_config = {
    "train_batch_size": 256,
    "gradient_accumulation_steps": 4,
    "zero_optimization": {
        "stage": 3,                     # ZeRO-3
        "offload_param": {
            "device": "cpu"             # وزع الأوزان على CPU إذا كانت 80GB غير كافية
        },
        "offload_optimizer": {
            "device": "cpu"
        }
    },
    "fp16": {
        "enabled": True,
        "auto_cast": True
    },
    "flops_profiler": {
        "enabled": True
    }
}

model_engine, optimizer, trainloader, _ = deepspeed.initialize(
    model=model,
    model_parameters=model.parameters(),
    config=ds_config
)

📐 Megatron-LM — 3D Parallelism من NVIDIA

Megatron-LM يوفر ثلاثة أنواع من التوازي:

  1. Tensor Parallelism (TP): يقسم طبقة Transformer الواحدة عبر GPUs
    كل GPU يحسب جزءًا من الانتباه أو MLP. يتطلب اتصالًا سريعًا (NVLink داخل العقدة).
  2. Pipeline Parallelism (PP): يقسم طبقات النموذج عبر GPUs
    GPU 1: layers 1-10, GPU 2: layers 11-20, إلخ. يقلل زمن الانتظار بين GPUs.
  3. Data Parallelism (DP): نسخ النموذج على كل GPU مع بيانات مختلفة
    التقليدي — كل GPU لديه نسخة كاملة من النموذج لكن بيانات مختلفة.

المزيج 3D Parallelism يوزع TP داخل العقدة (NVLink)، PP بين مجموعات (InfiniBand)، وDP بين كل شيء. هذا ما استخدمته NVIDIA لتدريب GPT-3 و Megatron-Turing NLG.

🔄 PyTorch FSDP — سهولة ZeRO

PyTorch FSDP (Fully Sharded Data Parallelism) هو تطبيق ZeRO-3 داخل PyTorch الأصلي. أسهل استخدامًا من DeepSpeed ZeRO لكن بنفس المبدأ:

from torch.distributed.fsdp import (
    FullyShardedDataParallel as FSDP,
    MixedPrecision,
    ShardingStrategy,
)

torch.cuda.set_device(rank)
model = FSDP(
    model,
    sharding_strategy=ShardingStrategy.FULL_SHARD,  # ZeRO-3
    mixed_precision=MixedPrecision(
        param_dtype=torch.bfloat16,
        reduce_dtype=torch.bfloat16,
        buffer_dtype=torch.bfloat16
    ),
    device_id=rank,
)

🌐 Horovod — البديل المفتوح المصدر

طورته Uber في 2017 كبديل مفتوح المصدر لـ NCCL. يستخدم Ring AllReduce بشكل أصل. ورغم أن PyTorch DDP و DeepSpeed أصبحا أكثر شيوعًا، Horovod لا يزال مستخدمًا في بعض الشركات لأنه يعمل مع أي إطار (TensorFlow, PyTorch, MXNet).

إدارة الكلاستر — Kubernetes, Ray, SLURM, والحاويات

الأداةالاستخدامالمميزاتالعيوب
Kubernetes + Kueueإدارة الحاويات وجدولة GPUمرونة عالية، auto-scaling، مجتمع ضخمتعقيد كبير، overhead ~10% على GPU
Rayجدولة مهام ML موزعةسهل، يوفر Ray Train, Ray Serve, RLlibأقل نضجًا من K8s للـ production
SLURMجدولة كلاسيكية لـ HPCبسيط، فعال، مستقر جدًالا يدخل الحاويات، أقل مرونة
Docker + Enrootحاويات بيئة التدريبعزل تام، تكرارية (reproducibility)حجم كبير، يحتاج إدارة صور
Singularityحاويات HPCآمن، بدون root، متوافق مع SLURMأقل شهرة من Docker
# مثال: إرسال مهمة تدريب على SLURM مع 8 GPU
#!/bin/bash
#SBATCH --job-name=train-llama
#SBATCH --nodes=4
#SBATCH --ntasks-per-node=8
#SBATCH --gres=gpu:8
#SBATCH --time=48:00:00
#SBATCH --output=/checkpoint/jobs/%j.log

export MASTER_ADDR=$(scontrol show hostnames $SLURM_JOB_NODELIST | head -n 1)
export MASTER_PORT=29500

srun torchrun \
    --nnodes=$SLURM_NNODES \
    --nproc_per_node=8 \
    --rdzv_id=$SLURM_JOB_ID \
    --rdzv_backend=c10d \
    --rdzv_endpoint=$MASTER_ADDR:$MASTER_PORT \
    train.py --config configs/llama-70b.yaml
🧩 التوصية العملية:
فريق صغير (<5 أشخاص): استخدم Ray + PyTorch FSDP — أقل تعقيدًا
فريق متوسط (5-20): استخدم DeepSpeed ZeRO-3 + SLURM — توازن بين البساطة والقوة
فريق كبير (>20) / إنتاج: استخدم Kubernetes + Kueue + DeepSpeed/Megatron — أقصى مرونة وتحكم
الفصل السابع

الاتجاهات المستقبلية

قانون مور يتباطأ، لكن الطلب على قدرة الحوسبة للتعلم الآلي ينمو بمعدل 4x سنويًا. هذه الفجوة تدفع الابتكار في عدة اتجاهات ثورية.

🔦 الحوسبة الضوئية (Optical Computing / Photonics)

شركات مثل Lightmatter و Lightelligence تطور شرائح تستخدم الضوء بدلاً من الكهرباء لإجراء العمليات الحسابية. الفكرة الأساسية: ضرب المصفوفات يمكن تنفيذه بسرعة الضوء عبر Mach-Zehnder interferometers التي تعمل بتداخل الموجات الضوئية. المزايا المتوقعة:

التحدي: لا تزال هذه التكنولوجيا في مرحلة البحث والتطوير — Lightmatter's Envise متاح حاليًا لكن بكميات محدودة جدًا.

🔮 Analog AI Chips — Mythic, IBM

بدلاً من العمليات الرقمية (0 و 1)، تستخدم Analog AI التيار والجهد لإجراء العمليات الحسابية. المفهوم الأساسي هو Computing-in-Memory (CiM) أو Processing-in-Memory (PIM): بدلاً من نقل البيانات بين الذاكرة والمعالج (Von Neumann bottleneck)، تجري العمليات الحسابية داخل خلايا الذاكرة نفسها عبر RRAM (Resistive RAM).

ميزتها: ضرب مصفوفات كامل داخل مصفوفة الذاكرة دون أي نقل بيانات خارجي. هذا يقلل استهلاك الطاقة 100x مقارنة بـ GPU. تحدياتها: الدقة محدودة (حاليًا INT4-INT8)، والأخطاء التناظرية (noise) تحتاج تعويضًا.

🔳 Cerebras Wafer-Scale Engine (WSE-3)

Cerebras تفعل شيئًا جنونيًا: بدلاً من تقطيع رقاقة السيليكون (wafer) إلى شرائح صغيرة (dies)، تترك الرقاقة كاملة — بحجم طبق بيتزا — وتصنع منها معالجًا واحدًا عملاقًا. WSE-3 يحتوي على:

مساحة الرقاقة
46,225 mm²
مقابل 814 mm² لـ H100
عدد النوى
900,000
مقابل 18,432 CUDA core في H100
ذاكرة SRAM
44 GB
على الشريحة نفسها — لا حاجة لـ HBM
الأداء النظري
125 PFLOPS
(FP16/BF16)

ميزة WSE-3: كل النوى على شريحة واحدة — لا حاجة لـ NVLink أو InfiniBand للتواصل داخل المعالج. عيبه: التبريد صعب جدًا (TDP ~15kW لشريحة واحدة!)، والتكلفة هائلة.

⚡ Groq LPU — Language Processing Unit

Groq (تأسست من مهندسين سابقين في Google TPU team) تبني LPU (Language Processing Unit). فلسفتها: بدلاً من تسريع ضرب المصفوفات (TPU) أو التوازي العام (GPU)، تركز LPU على تقليل زمن الاستجابة (latency) للـ LLM inference.

تستخدم LPU معمارية Temporal Processor — حيث تكون البيانات محلية دائمًا ولا تتنقل بين الذاكرة والمعالج. النتيجة: أسرع LLM inference في العالم — Llama 2 70B يشتغل بسرعة 1,200 tokens/second على LPU (مقابل ~200 tokens/s على H100). لكن: البرمجة عليها تحتاج SDK خاص (لا CUDA ولا PyTorch مباشر).

🏭 عمليات التصنيع: 3nm, 2nm ومستقبل الترانزستورات

TSMC و Samsung يتسابقان نحو عقد أصغر:

العقدةالشركةالحالةالكثافةتوفير الطاقة
3nm (N3/N3E)TSMCقيد الإنتاج — A17 Pro, B200~200M ترانزستور/mm²-35% vs 5nm
2nm (N2)TSMC2025 الإنتاج المتوقع~300M ترانزستور/mm²-25-30% vs 3nm
SF3 (3nm)Samsungقيد الإنتاج~170M ترانزستور/mm²-30% vs 5nm
SF2 (2nm)Samsung2025-2026 متوقع~250M ترانزستور/mm²-25% vs 3nm
Intel 20A (2nm)Intel2025 متوقع~230M ترانزستور/mm²RibbonFET + PowerVia

🧩 ASICs المخصصة — كل شركة تبني شريحتها الخاصة

بعد نجاح Google TPU، كل شركة كبرى تبني شريحتها الخاصة:

الشركةالشريحةالاستخدامالحالة
Amazon (AWS)Trainium v2تدريب النماذج على AWSقيد الإنتاج — تستخدمه Anthropic
MetaMTIA v2Inference للـ recommendationقيد الإنتاج — يحل محل GPU للـ recommendation
MicrosoftMaia 100تدريب + Inference لـ Azure2024 — أول شريحة من MS لوحدها
AppleNeural Engine (ANE)On-device inferenceقيد الإنتاج منذ iPhone X — 35 TOPS في M4
SamsungGauss NPUOn-device AI للجوالGalaxy S24 — يستخدم في Galaxy AI
OpenAIمشروع سري (؟)غير معلنإشاعات — Altman يبحث عن مستثمرين لـ $7T في AI chips

🪐 Quantum ML — البدايات فقط

الحوسبة الكمومية للتعلم الآلي ما زالت في مراحلها المبكرة جدًا. الشركات مثل IBM و Google (Sycamore/Willow) تحاول استخدام الكيوبتات (qubits) لتحسين بعض خوارزميات ML مثل SVM و K-Means. لكن التحديات هائلة:

🎯 التوقعات الواقعية (2024):
• الحوسبة الضوئية و Analog AI: 3-5 سنوات قبل أن تصبح تجارية
• Cerebras/Groq: تستخدم الآن لكن في أسواق محددة (latency-sensitive inference)
• ASICs المخصصة: كل شركة كبرى سيكون لديها شريحة AI خاصة بحلول 2026-2027
• الحوسبة الكمومية للـ ML: 10-15 سنة على الأقل قبل أي تأثير عملي

الآن: GPU لا يزال الملك. لكن 5 سنوات من الآن، سيكون لدينا خليط من GPU + TPU + ASICs + Optical.
📚 نهاية المجلد الخامس

لقد غطينا البنية التحتية للتعلم الآلي من الأجهزة الصغيرة إلى مراكز البيانات العملاقة.
تذكر دائمًا: العتاد الجيد يسرعك، لكن الفهم العميق هو ما يبقيك متقدمًا.

المجلد التالي: سلسلة التعلم الآلي (MLOps) والنشر في الإنتاج