كيفية استخدام وحدات معالجة الرسومات من إنفيديا لتدريب الذكاء الاصطناعي

كيفية استخدام وحدات معالجة الرسومات من NVIDIA لتدريب الذكاء الاصطناعي [فيديو واختبار]

باختصار: استخدم وحدات معالجة الرسومات من NVIDIA لتدريب الذكاء الاصطناعي، وذلك بالتأكد أولاً من ظهور برنامج التشغيل ووحدة معالجة الرسومات باستخدام nvidia-smi، ثم تثبيت إطار عمل/حزمة CUDA متوافقة، وتشغيل اختبار بسيط "نموذج + دفعة على CUDA". في حال نفاد الذاكرة، قلل حجم الدفعة واستخدم دقة مختلطة، مع مراقبة الاستخدام والذاكرة ودرجات الحرارة.

أهم النقاط المستفادة:

الفحوصات الأساسية: ابدأ بـ nvidia-smi؛ قم بإصلاح رؤية برنامج التشغيل قبل تثبيت الأطر.

توافق المكدس: حافظ على توافق إصدارات برنامج التشغيل ووقت تشغيل CUDA والإطار لمنع الأعطال وعمليات التثبيت الهشة.

نجاح صغير: تأكد من أن عملية تمرير واحدة للأمام تعمل على CUDA قبل توسيع نطاق التجارب.

تخصص VRAM: الاعتماد على الدقة المختلطة، وتراكم التدرج، ونقاط التفتيش لتناسب النماذج الأكبر حجماً.

عادة المراقبة: تتبع الاستخدام وأنماط الذاكرة والطاقة ودرجات الحرارة حتى تتمكن من اكتشاف الاختناقات مبكراً.

مقالات قد ترغب في قراءتها بعد هذه المقالة:

🔗 كيفية بناء وكيل ذكاء اصطناعي
صمم سير عمل وكيلك، وأدواته، وذاكرته، وإجراءات السلامة الخاصة به.

🔗 كيفية نشر نماذج الذكاء الاصطناعي
قم بإعداد البيئات، وتغليف النماذج، وإرسالها إلى الإنتاج بشكل موثوق.

🔗 كيفية قياس أداء الذكاء الاصطناعي
اختر المقاييس، وقم بإجراء التقييمات، وتتبع الأداء بمرور الوقت.

🔗 كيفية أتمتة المهام باستخدام الذكاء الاصطناعي
أتمتة العمل المتكرر باستخدام المطالبات وسير العمل والتكاملات.


1) الصورة الكبيرة - ما الذي تفعله عندما "تتدرب على وحدة معالجة الرسومات" 🧠⚡

عند تدريب نماذج الذكاء الاصطناعي، فإنك في الغالب تُجري عمليات حسابية معقدة للغاية على المصفوفات. صُممت وحدات معالجة الرسومات (GPUs) خصيصًا لهذا النوع من العمل المتوازي، لذا يمكن لأطر عمل مثل PyTorch وTensorFlow وJAX أن تُسند المهام الثقيلة إلى وحدة معالجة الرسومات. (وثائق PyTorch CUDA، تثبيت TensorFlow (pip)، دليل البدء السريع لـ JAX)

من الناحية العملية، فإن عبارة "استخدام وحدات معالجة الرسومات من NVIDIA للتدريب" تعني عادةً ما يلي:

  • توجد معلمات النموذج (غالباً) في ذاكرة الوصول العشوائي للفيديو لوحدة معالجة الرسومات (GPU VRAM)

  • يتم نقل دفعاتك من ذاكرة الوصول العشوائي (RAM) إلى ذاكرة الوصول العشوائي للفيديو (VRAM) في كل خطوة

  • تشغيل عملية التمرير الأمامي والانتشار العكسي على نواة CUDA (دليل برمجة CUDA)

  • تتم تحديثات مُحسِّن الأداء على وحدة معالجة الرسومات (GPU) (في الوضع الأمثل)

  • تقوم بمراقبة درجات الحرارة والذاكرة والاستخدام حتى لا يحدث أي خلل 🔥 (وثائق NVIDIA nvidia-smi)

إذا بدا ذلك كثيراً، فلا تقلق. إنها في الغالب قائمة مهام وبعض العادات التي تبنيها بمرور الوقت.


2) ما الذي يجعل إعداد تدريب الذكاء الاصطناعي باستخدام وحدة معالجة الرسومات من NVIDIA جيدًا؟ 🤌

هذا قسم "لا تبني بيتًا على الهلام". الإعداد الأمثل لاستخدام وحدات معالجة الرسومات من NVIDIA لتدريب الذكاء الاصطناعي هو الإعداد الذي يتميز بالبساطة والاستقرار. البساطة تعني الاستقرار، والاستقرار يعني السرعة، والسرعة تعني... حسنًا، السرعة 😄

عادةً ما تتضمن تجهيزات التدريب الجيدة ما يلي:

  • ذاكرة فيديو كافية لحجم الدفعة + النموذج + حالات المُحسِّن

    • ذاكرة الوصول العشوائي للفيديو (VRAM) تشبه مساحة الحقيبة. يمكنك أن تحزمها بشكل أفضل، لكن لا يمكنك حزم ما لا نهاية.

  • مجموعة برامج متطابقة (برنامج التشغيل + وقت تشغيل CUDA + توافق الإطار) (PyTorch Get Started (محدد CUDA)، TensorFlow install (pip))

  • تخزين سريع (تساعد تقنية NVMe بشكل كبير في التعامل مع مجموعات البيانات الكبيرة)

  • معالج مركزي وذاكرة وصول عشوائي جيدة حتى لا يؤدي تحميل البيانات إلى استنزاف موارد وحدة معالجة الرسومات (دليل ضبط أداء PyTorch)

  • قدرة التبريد والطاقة (يتم التقليل من شأنها حتى تصبح مهمة 😬)

  • بيئة قابلة للتكرار (venv/conda أو الحاويات) حتى لا تتحول الترقيات إلى فوضى (نظرة عامة على NVIDIA Container Toolkit)

وهناك أمر آخر يتجاهله الناس:

  • عادة مراقبة الأداء - تتحقق من ذاكرة وحدة معالجة الرسومات واستخدامها كما تتحقق من المرايا أثناء القيادة. (وثائق NVIDIA nvidia-smi)


3) جدول مقارنة - الطرق الشائعة للتدريب باستخدام وحدات معالجة الرسومات من NVIDIA (مع بعض الملاحظات) 📊

فيما يلي دليل سريع لتحديد الخيار الأنسب. الأسعار تقريبية (لأن الواقع يختلف)، ونعم، إحدى هذه الخانات مطولة بعض الشيء، عن قصد.

الأداة / النهج الأفضل لـ سعر لماذا ينجح (في الغالب)
بايتورش (الأساسي) بايتورش معظم الناس، معظم المشاريع حر نظام بيئي مرن وضخم، وسهولة في تصحيح الأخطاء - بالإضافة إلى أن لكل شخص رأيه
وثائق PyTorch Lightning الفرق، التدريب المنظم حر يقلل من التعليمات البرمجية المتكررة، ويُحسّن من سلاسة العمليات؛ يبدو الأمر أحيانًا وكأنه "سحر"، إلى أن يتلاشى
محولات الوجه المعانق + وثائق المدرب معالجة اللغة الطبيعية + ضبط دقيق لشهادة الماجستير في القانون حر تدريب متضمن، إعدادات افتراضية رائعة، مكاسب سريعة 👍
تسريع المستندات دعم متعدد وحدات معالجة الرسومات بدون مشاكل حر يجعل DDP أقل إزعاجًا، وهو أمر جيد للتوسع دون إعادة كتابة كل شيء
وثائق DeepSpeed ​​Zero نماذج كبيرة، حيل الذاكرة حر قد يكون استخدام ZeroRO، وتفريغ العمليات، والتوسع أمرًا معقدًا، ولكنه مُرضٍ عندما يُفهم
تثبيت TensorFlow + Keras TF خطوط أنابيب إنتاجية تقريبًا حر أدوات قوية، وقصة نشر جيدة؛ بعض الناس يحبونها، والبعض الآخر لا يعجبهم ذلك
JAX + Flax دليل البدء السريع لـ JAX / وثائق Flax مهووسو البحث والسرعة حر قد تكون عملية تجميع XLA سريعة للغاية، لكن عملية تصحيح الأخطاء قد تبدو... مجردة
نظرة عامة على NVIDIA NeMo الكلام + سير عمل ماجستير القانون حر مجموعة برامج مُحسّنة لبطاقات NVIDIA، وصفات رائعة - تشعر وكأنك تطبخ في فرن فاخر 🍳
نظرة عامة على مجموعة أدوات Docker + NVIDIA Container Toolkit بيئات قابلة للتكرار حر عبارة "يعمل على جهازي" تصبح "يعمل على أجهزتنا" (في الغالب، مرة أخرى)

4) الخطوة الأولى - تأكد من أن وحدة معالجة الرسومات (GPU) الخاصة بك مُعرَفة بشكل صحيح 🕵️♂️

قبل تثبيت عشرات الأشياء، تحقق من الأساسيات.

أشياء تريد أن تكون حقيقية:

  • ترى الآلة وحدة معالجة الرسومات

  • تم تثبيت برنامج تشغيل NVIDIA بشكل صحيح

  • وحدة معالجة الرسومات ليست عالقة في القيام بشيء آخر

  • يمكنك الاستعلام عنه بشكل موثوق

الفحص الكلاسيكي هو:

ما تبحث عنه:

  • اسم وحدة معالجة الرسومات (على سبيل المثال، RTX، سلسلة A، إلخ)

  • إصدار برنامج التشغيل

  • استخدام الذاكرة

  • العمليات الجارية (وثائق NVIDIA nvidia-smi)

إذا عملية nvidia-smi ، فتوقف فورًا. لا تقم بتثبيت الأطر البرمجية بعد. الأمر أشبه بمحاولة خبز الخبز والفرن غير موصول بالكهرباء. (واجهة إدارة نظام NVIDIA (NVSMI))

ملاحظة بسيطة: أحيانًا nvidia-smi لكن التدريب يفشل لأن بيئة تشغيل CUDA التي يستخدمها إطار العمل لا تتوافق مع متطلبات برنامج التشغيل. هذا ليس خطأك، بل هو الوضع الطبيعي 😭 (PyTorch Get Started (CUDA selector), TensorFlow install (pip))


5) بناء حزمة البرامج - برامج التشغيل، وCUDA، وcuDNN، و"عملية التوافق" 💃

هنا يضيع الناس ساعات من وقتهم. السر يكمن في: اختيار مسار والالتزام به.

الخيار أ: CUDA المدمجة في إطار العمل (غالباً ما تكون الأسهل)

تأتي العديد من إصدارات PyTorch مزودةً ببيئة تشغيل CUDA الخاصة بها، مما يعني أنك لست بحاجة إلى تثبيت مجموعة أدوات CUDA كاملة على مستوى النظام. كل ما تحتاجه في الغالب هو برنامج تشغيل NVIDIA متوافق. (PyTorch Get Started (CUDA selector)، إصدارات PyTorch السابقة (CUDA wheels))

الإيجابيات:

  • أجزاء متحركة أقل

  • تركيب أسهل

  • أكثر قابلية للتكرار لكل بيئة

السلبيات:

  • إذا خلطت بين البيئات بشكل عشوائي، فقد تشعر بالارتباك

الخيار ب: مجموعة أدوات CUDA للنظام (مزيد من التحكم)

تقوم بتثبيت مجموعة أدوات CUDA على النظام وضبط كل شيء وفقًا لها. (وثائق مجموعة أدوات CUDA)

الإيجابيات:

  • مزيد من التحكم في التصميمات المخصصة، وبعض الأدوات الخاصة

  • مفيد لتجميع عمليات معينة

السلبيات:

  • المزيد من الطرق لدمج النسخ المختلفة والبكاء بصمت

cuDNN و NCCL، من الناحية البشرية

  • تقنية cuDNN على تسريع العمليات الأساسية للتعلم العميق (الالتفافات، وأجزاء RNN، وما إلى ذلك) (وثائق NVIDIA cuDNN)

  • NCCL هي مكتبة "الاتصال السريع بين وحدات معالجة الرسومات" لتدريب وحدات معالجة الرسومات المتعددة (نظرة عامة على NCCL)

إذا كنت تتدرب على استخدام وحدات معالجة رسومية متعددة، فإن NCCL هو أفضل صديق لك - وأحيانًا، رفيقك المتقلب المزاج. (نظرة عامة على NCCL)


٦) أول تجربة تدريب لك على وحدة معالجة الرسومات (على غرار مثال PyTorch) ✅🔥

لفهم كيفية استخدام وحدات معالجة الرسومات من NVIDIA لتدريب الذكاء الاصطناعي، لا تحتاج إلى مشروع ضخم أولاً، بل تحتاج إلى نجاح صغير.

الأفكار الأساسية:

  • جهاز الكشف

  • نقل النموذج إلى وحدة معالجة الرسومات

  • نقل الموترات إلى وحدة معالجة الرسومات

  • تأكد من أن عملية التمرير الأمامي تعمل هناك (وثائق PyTorch CUDA)

الأمور التي أتحقق منها دائماً في وقت مبكر:

أخطاء شائعة عند سؤال "لماذا هو بطيء؟"

  • برنامج تحميل البيانات لديك بطيء للغاية (وحدة معالجة الرسومات تنتظر في وضع الخمول) (دليل ضبط أداء PyTorch)

  • لقد نسيت نقل البيانات إلى وحدة معالجة الرسومات (عفواً)

  • حجم الدفعة صغير جدًا (الاستخدام غير الكافي لوحدة معالجة الرسومات)

  • أنت تقوم بمعالجة مسبقة مكثفة لوحدة المعالجة المركزية في خطوة التدريب

نعم، قد يبدو معالج الرسوميات لديك "غير مشغول" إذا كان عنق الزجاجة هو البيانات. الأمر أشبه بتوظيف سائق سيارة سباق ثم إجباره على انتظار الوقود في كل لفة.


7) لعبة ذاكرة الوصول العشوائي للفيديو - حجم الدفعة، والدقة المختلطة، وعدم الانفجار 💥🧳

تتلخص معظم مشاكل التدريب العملي في الذاكرة. إذا كنت ستتعلم مهارة واحدة، فتعلم إدارة ذاكرة الوصول العشوائي للفيديو (VRAM).

طرق سريعة لتقليل استخدام الذاكرة

  • الدقة المختلطة (FP16/BF16)

  • تراكم التدرج

  • طول تسلسل أصغر / حجم اقتطاع أصغر

    • وحشية لكنها فعالة

  • نقطة تفتيش التنشيط

    • استبدال القدرة الحسابية بالذاكرة (إعادة حساب التنشيطات أثناء التراجع) (torch.utils.checkpoint)

  • استخدم مُحسِّنًا أخف وزنًا

    • تقوم بعض برامج تحسين الأداء بتخزين حالات إضافية تستهلك ذاكرة الوصول العشوائي للفيديو (VRAM)

لحظة "لماذا لا تزال ذاكرة الوصول العشوائي للفيديو ممتلئة بعد أن أتوقف؟"

غالباً ما تستخدم الأطر البرمجية التخزين المؤقت للذاكرة لتحسين الأداء. هذا أمر طبيعي. قد يبدو الأمر مخيفاً، لكنه ليس بالضرورة تسريباً للذاكرة. ستتعلم قراءة الأنماط. (دلالات PyTorch CUDA: مُخصِّص الذاكرة المؤقت)

عادة عملية:


٨) اجعل وحدة معالجة الرسومات تعمل بكفاءة - ضبط الأداء الذي يستحق وقتك 🏎️

إنّ تشغيل "تدريب وحدة معالجة الرسومات" هو الخطوة الأولى. أما إنجازه بسرعة فهو الخطوة الثانية.

تحسينات ذات تأثير كبير

  • قم بزيادة حجم الدفعة (حتى يصبح الأمر مؤلماً، ثم خففه قليلاً)

  • استخدم الذاكرة المثبتة في مُحمّلات البيانات (نسخ أسرع من المضيف إلى الجهاز) (دليل ضبط أداء PyTorch، برنامج تعليمي حول pin_memory/non_blocking في PyTorch)

  • زيادة عدد عمال تحميل البيانات (احذر، فالإفراط في ذلك قد يؤدي إلى نتائج عكسية) (دليل ضبط أداء PyTorch)

  • يقوم النظام بجلب البيانات مسبقًا حتى لا تبقى وحدة معالجة الرسومات في وضع الخمول

  • استخدم عمليات مدمجة / نواة محسّنة عند توفرها

  • استخدم الدقة المختلطة (مرة أخرى، إنها جيدة جدًا) (وثائق PyTorch AMP)

أكثر نقاط الاختناق التي يتم تجاهلها

خط أنابيب التخزين والمعالجة المسبقة. إذا كانت مجموعة البيانات ضخمة ومخزنة على قرص بطيء، فإن وحدة معالجة الرسومات (GPU) ستتحول إلى مصدر طاقة باهظ الثمن. مصدر طاقة متطور للغاية ولامع للغاية.

أيضًا، اعتراف صغير: لقد "حسّنت" نموذجًا لمدة ساعة كاملة لأكتشف أن عملية تسجيل البيانات هي السبب الرئيسي للبطء. طباعة الكثير من البيانات قد تبطئ عملية التدريب. نعم، هذا صحيح.


9) التدريب على وحدات معالجة الرسومات المتعددة - DDP وNCCL والتوسع بدون فوضى 🧩🤝

عندما ترغب في سرعة أكبر أو نماذج أكبر، ستلجأ إلى استخدام وحدات معالجة رسومية متعددة. وهنا تبدأ الأمور بالتعقيد.

الأساليب الشائعة

  • معالجة البيانات المتوازية (DDP)

    • تقسيم الدُفعات عبر وحدات معالجة الرسومات، ومزامنة التدرجات

    • عادةً ما يكون الخيار الافتراضي "جيد" (وثائق PyTorch DDP)

  • التوازي النموذجي / التوازي الموتري

    • قم بتقسيم النموذج على وحدات معالجة الرسومات (للنماذج الكبيرة جدًا)

  • خط الأنابيب الموازي

    • قسّم طبقات النموذج إلى مراحل (مثل خط التجميع، ولكن بالنسبة للموترات)

إذا كنت مبتدئًا، فإن التدريب بأسلوب DDP هو الخيار الأمثل. (دليل PyTorch DDP)

نصائح عملية حول استخدام وحدات معالجة الرسومات المتعددة

  • تأكد من أن وحدات معالجة الرسومات (GPUs) تتمتع بقدرات مماثلة (قد يؤدي المزج بينها إلى حدوث اختناق)

  • مراقبة الربط البيني: أهمية NVLink مقابل PCIe لأحمال العمل التي تتطلب مزامنة مكثفة (نظرة عامة على NVIDIA NVLink، وثائق NVIDIA NVLink)

  • حافظ على توازن أحجام الدفعات لكل وحدة معالجة رسومية

  • لا تتجاهل وحدة المعالجة المركزية والتخزين - فاستخدام وحدات معالجة رسومية متعددة قد يزيد من اختناقات البيانات

نعم، قد تبدو أخطاء المجلس الوطني لشهادات التمريض (NCCL) لغزًا محيرًا، يكتنفه الغموض، ويطرح تساؤلات من قبيل "لماذا الآن؟". لستَ ملعونًا. على الأرجح. (نظرة عامة على المجلس الوطني لشهادات التمريض)


10) المراقبة والتحليل - الأمور غير الجذابة التي توفر لك ساعات 📈🧯

لا تحتاج إلى لوحات تحكم متطورة للبدء. ما عليك سوى ملاحظة وجود خلل ما.

إشارات رئيسية يجب مراقبتها

  • استخدام وحدة معالجة الرسومات: هل هو مرتفع باستمرار أم متذبذب؟

  • استخدام الذاكرة: مستقر، أم متزايد، أم غريب؟

  • استهلاك الطاقة: قد يعني انخفاضه بشكل غير معتاد عدم الاستخدام الأمثل

  • درجات الحرارة: يمكن أن تؤدي درجات الحرارة المرتفعة المستمرة إلى تقليل الأداء

  • استخدام وحدة المعالجة المركزية: تظهر مشاكل خط أنابيب البيانات هنا (دليل ضبط أداء PyTorch)

تحليل العقلية (نسخة مبسطة)

  • إذا كان استخدام وحدة معالجة الرسومات منخفضًا، فهذا يشير إلى وجود اختناق في البيانات أو وحدة المعالجة المركزية

  • إذا كان أداء وحدة معالجة الرسومات مرتفعًا ولكنه بطيء - فقد يكون ذلك بسبب عدم كفاءة النواة أو دقتها أو بنية النموذج

  • إذا انخفضت سرعة التدريب بشكل عشوائي - فقد يكون السبب هو التقييد الحراري، أو العمليات الخلفية، أو مشاكل الإدخال/الإخراج

أعلم أن المراقبة تبدو غير ممتعة. لكنها مثل تنظيف الأسنان بالخيط. مزعجة، ثم فجأة تتحسن حياتك.


11) استكشاف الأخطاء وإصلاحها - الأسباب الشائعة (والأسباب الأقل شيوعًا) 🧰😵💫

هذا القسم باختصار: "نفس القضايا الخمس، إلى الأبد"

المشكلة: نفاد ذاكرة CUDA

الإصلاحات:

المشكلة: يتم تشغيل التدريب على وحدة المعالجة المركزية عن طريق الخطأ

الإصلاحات:

  • تأكد من نقل النموذج إلى CUDA

  • تأكد من نقل الموترات إلى CUDA

  • تحقق من إعدادات الجهاز الخاصة بالإطار (وثائق PyTorch CUDA)

المشكلة: أعطال غريبة أو وصول غير مصرح به إلى الذاكرة

الإصلاحات:

  • تأكيد توافق برنامج التشغيل ووقت التشغيل (PyTorch Get Started (CUDA selector)، TensorFlow install (pip))

  • جرب بيئة نظيفة

  • تقليل العمليات المخصصة

  • أعد تشغيلها بإعدادات شبه حتمية لإعادة إنتاجها

المشكلة: أبطأ من المتوقع

الإصلاحات:

المشكلة: توقف النظام عند استخدام عدة وحدات معالجة رسومية

الإصلاحات:

  • تأكد من صحة إعدادات الواجهة الخلفية (وثائق PyTorch الموزعة)

  • تحقق من إعدادات بيئة NCCL (بحذر) (نظرة عامة على NCCL)

  • اختبر وحدة معالجة الرسومات الفردية أولاً

  • تأكد من سلامة الشبكة / الربط البيني

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


12) التكلفة والجدوى - اختيار وحدة معالجة الرسومات NVIDIA المناسبة والإعداد الأمثل دون التفكير الزائد في التكلفة 💸🧠

لا يحتاج كل مشروع إلى أكبر وحدة معالجة رسومية. أحيانًا تحتاج إلى كافية .

إذا كنت تقوم بضبط النماذج المتوسطة بدقة

إذا كنت تقوم بتدريب نماذج أكبر من الصفر

إذا كنت تجري تجارب

  • تريد تكرارًا سريعًا

  • لا تنفق كل أموالك على وحدة معالجة الرسومات (GPU) ثم تهمل مساحة التخزين وذاكرة الوصول العشوائي (RAM)

  • النظام المتوازن يتفوق على النظام غير المتوازن (في معظم الأيام)

والحقيقة أنك قد تُهدر أسابيع في البحث عن خيارات مثالية للأجهزة. ابنِ شيئًا عمليًا، وقِسْه، ثم عدّله. العدو الحقيقي هو غياب آلية التغذية الراجعة.


ملاحظات ختامية - كيفية استخدام وحدات معالجة الرسومات من NVIDIA لتدريب الذكاء الاصطناعي دون أن تفقد صوابك 😌✅

إذا لم تستفد من هذا الدليل حول كيفية استخدام وحدات معالجة الرسومات من NVIDIA لتدريب الذكاء الاصطناعي، فليكن هذا:

التدريب على وحدات معالجة الرسومات من NVIDIA هو أحد تلك المهارات التي تبدو مخيفة في البداية، ثم فجأة تصبح طبيعية تمامًا. تمامًا مثل تعلم القيادة. في البداية، يكون كل شيء صاخبًا ومربكًا، وتضغط على عجلة القيادة بقوة. ثم في يوم من الأيام، تجد نفسك تقود بسلاسة، تحتسي قهوتك، وتصحح مشكلة في حجم الدفعة وكأن الأمر لا يمثل أي مشكلة.

مثال واقعي: تدريب مصنف صور صغير على وحدة معالجة رسومية واحدة من NVIDIA 🧪🖼️

سيناريو

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

إنهم لا يقومون بتدريب نموذج ضخم من الصفر، بل يقومون بضبط نموذج رؤية مدرب مسبقًا على وحدة معالجة رسومية واحدة من NVIDIA، حتى يتمكن الفريق من اختبار ما إذا كانت الفكرة تستحق التوسع بسرعة.

الهدف بسيط: إثبات أن إعداد وحدة معالجة الرسومات يعمل، وتجنب فوضى CUDA، وبناء حلقة تدريب قابلة للتكرار قبل إنفاق الأموال على أجهزة أكبر أو عمليات تشغيل سحابية.

ما يحتاجه الإعداد

لهذا النوع من الاختبارات، ستحتاج إلى:

جهاز مزود بوحدة معالجة رسومات NVIDIA واحدة وذاكرة وصول عشوائي كافية لحجم الدفعة

تم التأكد من وجود برنامج تشغيل NVIDIA يعمل بشكل صحيح باستخدام nvidia-smi

بيئة بايثون نظيفة لـ PyTorch أو TensorFlow أو JAX

مجموعة بيانات صور صغيرة مصنفة، ويفضل تقسيمها إلى مجلدات للتدريب والتحقق والاختبار

تشغيل أساسي لتوقيت وحدة المعالجة المركزية للمقارنة

جدول تسجيل بسيط يتضمن وقت الخطوة، وذاكرة وحدة معالجة الرسومات، واستخدام وحدة معالجة الرسومات، ودرجة الحرارة، ودقة التحقق

قبل التدريب بشكل صحيح، يجب على الفريق إجراء اختبار CUDA بسيط: تحميل دفعة واحدة، ونقل النموذج والدفعة إلى CUDA، وتشغيل تمريرة أمامية واحدة، والتأكد من زيادة ذاكرة وحدة معالجة الرسومات في nvidia-smi.

مثال على التعليمات

قد تبدو تعليمات المشروع العملي على النحو التالي:

قم بتدريب مصنف صور منتجات صغير باستخدام نموذج ResNet مُدرَّب مسبقًا. تأكد أولًا من قدرة nvidia-smi على التعرف على وحدة معالجة الرسومات (GPU). ثم شغِّل اختبار CUDA أحادي الدفعة قبل التدريب الكامل. استخدم الدقة المختلطة إن كانت مدعومة. ابدأ بحجم دفعة 32، وقم بزيادته فقط إذا ظلّت ذاكرة وحدة معالجة الرسومات مستقرة، وسجّل وقت الخطوة، واستخدام ذاكرة وحدة معالجة الرسومات، واستخدام وحدة معالجة الرسومات، ودرجة الحرارة، ودقة التحقق بعد كل تشغيل. إذا ظهرت رسالة "نفاد ذاكرة CUDA"، فقلل حجم الدفعة قبل تغيير النموذج.

كيفية اختباره

ستكون خطة الاختبار المعقولة كالتالي:

  1. قم بتشغيل nvidia-smi وسجل اسم وحدة معالجة الرسومات، وإصدار برنامج التشغيل، واستخدام الذاكرة في وضع الخمول، ودرجة الحرارة.

  2. قم بتشغيل اختبار وحدة المعالجة المركزية دفعة واحدة للتأكد من عمل مجموعة البيانات ورمز النموذج.

  3. قم بتشغيل نفس اختبار الدفعة الواحدة على CUDA.

  4. تدرب على 200 خطوة بحجم دفعة 32.

  5. كرر العملية بدقة مختلطة.

  6. جرب حجم الدفعة 64 فقط إذا كانت عملية التشغيل الأولى تترك مساحة كافية لذاكرة الوصول العشوائي للفيديو (VRAM).

  7. قارن دقة التحقق، ومتوسط ​​وقت الخطوة، وذروة ذاكرة الوصول العشوائي للفيديو، ودرجة حرارة وحدة معالجة الرسومات.

النتيجة الجيدة لا تقتصر على مجرد "تم التدريب". بل هي "تم التدريب على وحدة معالجة الرسومات، وتحسنت السرعة، وظلت الذاكرة مستقرة، ويمكن تكرار التشغيل غدًا دون الحاجة إلى إعادة تثبيت كل شيء".

نتيجة

نتيجة توضيحية، بناءً على قياس توقيت ثلاث عمليات اختبار صغيرة مكونة من 200 خطوة قبل وبعد نقل التدريب من وحدة المعالجة المركزية إلى وحدة معالجة الرسومات NVIDIA واحدة:

خط الأساس لوحدة المعالجة المركزية فقط: 3.4 ثانية لكل خطوة تدريب

وحدة معالجة الرسومات مع FP32: 0.42 ثانية لكل خطوة تدريب

وحدة معالجة الرسومات بدقة مختلطة: 0.28 ثانية لكل خطوة تدريب

أقصى سعة لذاكرة وحدة معالجة الرسومات مع حجم دفعة 32: 5.8 جيجابايت

أقصى سعة لذاكرة وحدة معالجة الرسومات مع حجم دفعة 64: 10.9 جيجابايت

حجم الدفعة 96: فشل بسبب نفاد ذاكرة CUDA

نسبة استخدام وحدة معالجة الرسومات أثناء التشغيل المستقر: من 76% إلى 91%

درجة الحرارة أثناء التشغيل المستقر: من 67 درجة مئوية إلى 73 درجة مئوية

دقة التحقق بعد الاختبار القصير: 82% باستخدام FP32، و82.4% باستخدام الدقة المختلطة

في هذا المثال التقديري، قللت الدقة المختلطة زمن الخطوة بنحو 33% مقارنةً بتشغيل وحدة معالجة الرسومات FP32، مع الحفاظ على دقة التحقق كما هي تقريبًا. تمكن الفريق من التحقق من هذه الأرقام عن طريق قياس زمن كل خطوة تدريب، وفحص nvidia-smi أثناء التشغيل، وحفظ دقة التحقق بعد كل اختبار.

ما الذي يمكن أن يحدث خطأً؟

الخطأ الأكثر شيوعًا هو التوسع المبكر جدًا. إذا فشل اختبار CUDA ذو الدفعة الواحدة، فلن يُصلح تشغيل التدريب الكامل المشكلة تلقائيًا.

فخاخ أخرى سهلة:

تثبيت إصدارات متعددة من CUDA وعدم معرفة أي منها يستخدمه إطار العمل

نقل النموذج إلى CUDA مع الإبقاء على الدُفعات على وحدة المعالجة المركزية

اختيار حجم دفعة مناسب لمرة واحدة ولكنه يتعطل بعد عدة خطوات

تجاهل العمليات الأخرى التي تستخدم ذاكرة الوصول العشوائي للفيديو (VRAM)

إلقاء اللوم على وحدة معالجة الرسومات عندما يكون مُحمِّل البيانات بطيئًا للغاية

مقارنة عمليات التشغيل باستخدام وحدة المعالجة المركزية ووحدة معالجة الرسومات دون استخدام نفس مجموعة البيانات وحجم الدفعة والنموذج

ينبغي على شخص مراجعة التوقعات القليلة الأولى أيضاً. التدريب السريع لا يُجدي نفعاً إذا كانت التصنيفات غير دقيقة، أو كانت الفئات غير متوازنة، أو كان النموذج يتعلم اختصارات مثل لون الخلفية بدلاً من نوع المنتج.

الخلاصة العملية

تبدأ عملية تدريب وحدة معالجة الرسومات NVIDIA الموثوقة بخطوات صغيرة: التأكد من عمل برنامج التشغيل، والتأكد من عمل CUDA، والتأكد من عمل دفعة واحدة، ثم زيادة حجم الدفعة ومدة التدريب تدريجيًا. ليس الإعداد الأسرع هو الذي يمتلك وحدة معالجة رسومات فائقة الأداء نظريًا، بل هو الذي يوفر لك عمليات تشغيل مستقرة وقابلة للقياس دون إضاعة ساعات في مشاكل يمكن تجنبها تتعلق بالإصدار، وذاكرة الوصول العشوائي للفيديو، وبرنامج تحميل البيانات.

التعليمات

ما معنى تدريب نموذج الذكاء الاصطناعي على وحدة معالجة الرسومات من إنفيديا

يعني التدريب على وحدة معالجة رسومية من NVIDIA أن معلمات النموذج ومجموعات التدريب تُخزَّن في ذاكرة الوصول العشوائي للرسومات (VRAM) الخاصة بوحدة المعالجة الرسومية، بينما تُنفَّذ العمليات الحسابية المعقدة (التمرير الأمامي، والانتشار العكسي، وخطوات المُحسِّن) عبر نواة CUDA. عمليًا، غالبًا ما يتطلب ذلك ضمان وجود النموذج والموترات على CUDA، ثم مراقبة الذاكرة، والاستخدام، ودرجات الحرارة لضمان ثبات الإنتاجية.

كيفية التأكد من أن وحدة معالجة الرسومات من NVIDIA تعمل قبل تثبيت أي شيء آخر

ابدأ بـ nvidia-smi. من المفترض أن يُظهر اسم وحدة معالجة الرسومات، وإصدار برنامج التشغيل، واستخدام الذاكرة الحالي، وأي عمليات قيد التشغيل. إذا nvidia-smi ، فتأجل استخدام PyTorch/TensorFlow/JAX - أصلح مشكلة ظهور برنامج التشغيل أولًا. هذا هو الفحص الأساسي للتأكد من جاهزية وحدة معالجة الرسومات للتدريب.

الاختيار بين CUDA النظامي وCUDA المدمج مع PyTorch

يُعدّ استخدام CUDA المدمجة في إطار العمل (مثل العديد من حزم PyTorch) نهجًا شائعًا لأنه يُقلّل من عدد المكونات المُعقّدة - إذ يكفي وجود برنامج تشغيل NVIDIA متوافق. يوفر تثبيت مجموعة أدوات CUDA الكاملة للنظام مزيدًا من التحكم (بناء مخصص، عمليات تجميع)، ولكنه يُزيد أيضًا من احتمالية حدوث عدم توافق في الإصدارات وأخطاء تشغيل مُربكة.

لماذا قد يظل التدريب بطيئًا حتى مع وحدة معالجة الرسومات من إنفيديا

في كثير من الأحيان، يُعاني معالج الرسوميات (GPU) من نقص الموارد بسبب تدفق البيانات. فبطء مُحمّلات البيانات، وكثافة معالجة وحدة المعالجة المركزية (CPU) المسبقة خلال مرحلة التدريب، وصغر حجم الدُفعات، وبطء التخزين، كلها عوامل قد تجعل معالج الرسوميات القوي يتصرف كجهاز تسخين خامل. ومن الخطوات الشائعة قبل إلقاء اللوم على النموذج: زيادة عدد مُحمّلات البيانات العاملة، وتفعيل الذاكرة المُثبّتة، ​​وإضافة جلب البيانات المُسبق، وتقليل حجم السجلات.

كيفية تجنب أخطاء "نفاد ذاكرة CUDA" أثناء تدريب وحدة معالجة الرسومات NVIDIA

تعتمد معظم الحلول على تقنيات إدارة ذاكرة الوصول العشوائي للفيديو (VRAM): تقليل حجم الدفعة، وتفعيل الدقة المختلطة (FP16/BF16)، واستخدام تراكم التدرج، وتقصير طول التسلسل/حجم الاقتصاص، أو استخدام نقاط التحقق من التنشيط. تحقق أيضًا من وجود عمليات أخرى لوحدة معالجة الرسومات (GPU) تستهلك الذاكرة. بعض التجربة والخطأ أمر طبيعي - تصبح إدارة ذاكرة الوصول العشوائي للفيديو عادةً أساسية في التدريب العملي على وحدة معالجة الرسومات.

لماذا قد تبدو ذاكرة الوصول العشوائي للفيديو (VRAM) ممتلئة بعد انتهاء نص التدريب؟

غالبًا ما تُخزّن الأطر البرمجية ذاكرة وحدة معالجة الرسومات مؤقتًا لتحسين السرعة، لذا قد تبقى الذاكرة المحجوزة مرتفعة حتى عند انخفاض الذاكرة المخصصة. قد يبدو هذا وكأنه تسريب، ولكنه في الغالب ناتج عن آلية عمل مُخصِّص الذاكرة المؤقتة. من الأفضل تتبع هذا النمط بمرور الوقت ومقارنة "الذاكرة المخصصة مقابل الذاكرة المحجوزة" بدلًا من التركيز على لقطة واحدة مثيرة للقلق.

كيفية التأكد من أن النموذج لا يتم تدريبه سراً على وحدة المعالجة المركزية

تحقق من سلامة البيانات مبكرًا: تأكد من أن الدالة `torch.cuda.is_available()` تُرجع القيمة `True`، وتحقق من أن `next(model.parameters()).device` تُظهر CUDA، ثم قم بتشغيل عملية تمرير أمامي واحدة دون أخطاء. إذا شعرت ببطء ملحوظ في الأداء، فتأكد أيضًا من نقل دفعات البيانات إلى وحدة معالجة الرسومات (GPU). من الشائع نقل النموذج وترك البيانات في مكانها عن طريق الخطأ.

أسهل طريق للتدريب على استخدام وحدات معالجة الرسومات المتعددة

غالبًا ما تكون المعالجة المتوازية للبيانات (تدريب بنمط DDP) هي الخطوة الأولى الأمثل: تقسيم الدُفعات على وحدات معالجة الرسومات (GPUs) ومزامنة التدرجات. يمكن لأدوات مثل Accelerate أن تجعل استخدام وحدات معالجة الرسومات المتعددة أقل تعقيدًا دون الحاجة إلى إعادة كتابة كاملة. توقع وجود متغيرات إضافية - مثل اتصال NCCL، واختلافات في الربط البيني (NVLink مقابل PCIe)، واختناقات بيانات مُضخّمة - لذا فإن التوسع التدريجي بعد تشغيل ناجح على وحدة معالجة رسومات واحدة يُفضّل أن يكون أكثر فعالية.

ما يجب مراقبته أثناء تدريب وحدة معالجة الرسومات من NVIDIA لاكتشاف المشاكل مبكراً

راقب استخدام وحدة معالجة الرسومات، واستخدام الذاكرة (مستقر أم متزايد)، واستهلاك الطاقة، ودرجات الحرارة - فقد يؤدي خفض التردد إلى استنزاف السرعة دون أن تشعر. راقب أيضًا استخدام وحدة المعالجة المركزية، حيث غالبًا ما تظهر مشاكل خط أنابيب البيانات هناك أولًا. إذا كان الاستخدام متذبذبًا أو منخفضًا، فاشتبه في عمليات الإدخال/الإخراج أو مُحمِّلات البيانات؛ إذا كان الاستخدام مرتفعًا ولكن وقت الخطوة لا يزال بطيئًا، فقم بتحليل أداء النوى، ووضع الدقة، وتفاصيل وقت الخطوة.

مراجع

  1. إنفيديا - وثائق إنفيديا nvidia-smi - docs.nvidia.com

  2. إنفيديا - واجهة إدارة نظام إنفيديا (NVSMI) - developer.nvidia.com

  3. إنفيديا - نظرة عامة على تقنية إنفيديا إن في لينك - nvidia.com

  4. PyTorch - دليل البدء السريع مع PyTorch (محدد CUDA) - pytorch.org

  5. PyTorch - وثائق PyTorch CUDA - docs.pytorch.org

  6. TensorFlow - تثبيت TensorFlow (pip) - tensorflow.org

  7. JAX - دليل البدء السريع لـ JAX - docs.jax.dev

  8. Hugging Face - وثائق المدرب - huggingface.co

  9. الذكاء الاصطناعي في Lightning - وثائق Lightning - lightning.ai

  10. ديب سبيد - وثائق بدون رسوم - deepspeed.readthedocs.io

  11. أبحاث مايكروسوفت - أبحاث مايكروسوفت: زيرو/ديب سبيد - microsoft.com

  12. منتديات PyTorch - منتدى PyTorch: التحقق من النموذج على CUDA - discuss.pytorch.org

اكتشف أحدث تقنيات الذكاء الاصطناعي في متجر مساعدي الذكاء الاصطناعي الرسمي

معلومات عنا

اختبار تدريب الذكاء الاصطناعي لوحدة معالجة الرسومات من إنفيديا
1. ما هو الأمر الذي يُستخدم كفحص أساسي للتحقق من ظهور وحدة معالجة الرسومات (GPU) قبل تثبيت الأطر؟

2. ما هي الميزة الأساسية لاستخدام تكوينات CUDA المضمنة في إطار العمل بدلاً من تثبيت مجموعة أدوات على مستوى النظام؟

3. إذا واجه تشغيل تدريب نموذج الذكاء الاصطناعي خطأ "نفاد ذاكرة CUDA"، فأي تعديل يجب تجربته أولاً؟

4. ما هو السبب الأكثر ترجيحًا إذا أظهرت وحدة معالجة الرسومات NVIDIA المتطورة مقاييس استخدام منخفضة أو متقطعة أو ضعيفة أثناء التدريب؟

5. لماذا قد تظل مقاييس VRAM مشغولة بشكل كبير حتى بعد اكتمال دورة تدريب المديرين التنفيذيين؟


العودة إلى المدونة

أسئلة وأجوبة إضافية

  • كيف يمكنني التأكد من أن وحدة معالجة الرسومات NVIDIA الخاصة بي مرئية لتدريب الذكاء الاصطناعي؟

    يمكنك التحقق من ظهور وحدة معالجة الرسومات NVIDIA الخاصة بك باستخدام الأمر 'nvidia-smi' في سطر الأوامر. سيعرض لك هذا الأمر تفاصيل مثل اسم وحدة معالجة الرسومات، وإصدار برنامج التشغيل، واستخدام الذاكرة، وأي عمليات قيد التشغيل. في حال فشل الأمر، ستحتاج إلى استكشاف أخطاء تثبيت برنامج التشغيل وإصلاحها قبل المتابعة في تدريب الذكاء الاصطناعي.

  • ما أهمية توافق برامج التشغيل والأطر البرمجية للتدريب على وحدات معالجة الرسومات من NVIDIA؟

    من الضروري الحفاظ على توافق إصدارات برنامج تشغيل NVIDIA وبيئة تشغيل CUDA والإطار البرمجي لتجنب الأعطال وضمان استقرار التثبيت. قد تؤدي الإصدارات غير المتوافقة إلى أخطاء غير متوقعة أثناء التدريب.

  • ما هي الخطوات التي يجب عليّ اتخاذها لإدارة ذاكرة الوصول العشوائي للفيديو (VRAM) بشكل فعال أثناء التدريب؟

    لإدارة ذاكرة الوصول العشوائي للفيديو (VRAM) بكفاءة، يمكنك استخدام تقنيات مثل الدقة المختلطة (FP16/BF16)، وتجميع التدرجات، وأحجام الدُفعات الأصغر، ونقاط التحقق من التنشيط. تساعد هذه الاستراتيجيات على تقليل استخدام الذاكرة وتناسب النماذج الأكبر حجمًا ضمن ذاكرة الوصول العشوائي للفيديو المتاحة.

  • ما هي المتطلبات الأساسية التي يجب عليّ مراعاتها قبل إجراء تدريب متعدد وحدات معالجة الرسومات؟

    قبل التدريب باستخدام وحدات معالجة رسومية متعددة، تأكد من أن وحدات المعالجة الرسومية لديك ذات قدرات متقاربة لتجنب الاختناقات. كما يجب عليك مراقبة سرعة الاتصال البيني (NVLink مقابل PCIe) والحفاظ على أحجام دفعات متوازنة لكل وحدة معالجة رسومية لتحسين الأداء.

  • كيف يمكنني استكشاف أخطاء CUDA الشائعة وإصلاحها أثناء التدريب؟

    لحل أخطاء CUDA الشائعة، مثل "نفاد الذاكرة"، قلل حجم الدفعة، أو استخدم الدقة المختلطة، أو تحقق من وجود عمليات أخرى تستهلك ذاكرة وحدة معالجة الرسومات. ولمعالجة مشكلة تشغيل التدريب عن طريق الخطأ على وحدة المعالجة المركزية، تأكد من نقل كل من النموذج والموترات إلى وحدة معالجة الرسومات.

  • ما هي ممارسات المراقبة الموصى بها أثناء التدريب على وحدات معالجة الرسومات من NVIDIA؟

    من المهم مراقبة استخدام وحدة معالجة الرسومات، واستخدام الذاكرة، واستهلاك الطاقة، ودرجات الحرارة. تساعد مراقبة هذه المقاييس في تحديد الاختناقات المحتملة مبكرًا، مما يضمن استمرار كفاءة عملية التدريب.

  • كيف يمكنني تجنب بطء سرعة التدريب عند استخدام وحدات معالجة الرسومات من NVIDIA؟

    لتجنب بطء التدريب، تحقق من مسار البيانات بحثًا عن مُحمّلات البيانات المتأخرة، وتأكد من عدم إجراء معالجة مسبقة مكثفة أثناء التدريب. ضع في اعتبارك زيادة عدد مُحمّلات البيانات العاملة، واستخدام الذاكرة المُثبّتة، ​​وتحسين أحجام الدفعات.