ليست المشكلة في حجم الـ GPU... بل في إعداداتك!

BBetter Stack
컴퓨터/소프트웨어자격증/평생교육AI/미래기술

Transcript

00:00:00هذا هو DeepSpeed، مكتبة مايكروسوفت مفتوحة المصدر التي تتصل مباشرة بـ PyTorch وتحل المشكلة الحقيقية المتعلقة بالذاكرة
00:00:07فهي تتيح لك تشغيل نماذج عادةً ما تنهار فوراً، وكل ذلك على وحدة معالجة رسومية (GPU) واحدة دون إثقال كاهلها؛ فالنماذج الكبيرة لا تفشل بسبب بطئها
00:00:14بل تفشل لأن حالات المحسّن (optimizer states) والتدرجات والمعاملات ينتهي بها الأمر بملء ذاكرة الرسوم (VRAM). سر DeepSpeed يكمن في تقنية ZeRO التي تقوم بتجزئة حالات التدريب
00:00:23بحيث لا تضطر لتخزين نفس البيانات في كل مكان. نحن ننشر فيديوهات باستمرار، لذا احرص على الاشتراك
00:00:30الآن دعونا نبدأ مباشرة بتشغيل هذا. سأقوم بتنفيذ كل شيء على Google Colab بما أنني أستخدم جهاز Mac بمعالج M4 Pro
00:00:40لذا لا أملك وحدات معالجة رسومية من Nvidia مما يجعل الأمر أكثر صعوبة، لكن يمكنني القيام بذلك على Colab بدلاً من ذلك. أولاً
00:00:46سأجري فحصاً سريعاً لوحدات المعالجة الرسومية لدي، ثم يمكننا تثبيت جميع الحزم المطلوبة عبر pip
00:00:51سأقوم بتثبيت حزم مثل PyTorch وHugging Face وDeepSpeed، ثم تشغيل DS_report للتأكد من سلامة إعدادات CUDA والمترجم
00:00:59بعض عمليات التثبيت الإضافية للتأكد من أن كل شيء يعمل بسلاسة
00:01:02بعد ذلك، سنقوم بإنشاء ملف إعدادات JSON لتهيئة DeepSpeed؛ هذا الملف هو مفتاح الحل بأكمله
00:01:09سنبدأ بالمرحلة الثانية من ZeRO (Stage 2) والتي تجزئ حالات المحسّن والتدرجات عبر
00:01:14وحدات المعالجة الرسومية لتقليل استهلاك الذاكرة بشكل كبير، بينما تظل معاملات النموذج مكررة. لا تبالغ في التفكير في هذا الأمر لأنه كان سيصيبني بالجنون
00:01:22فقط ابدأ من الوثائق الرسمية، غيّر شيئاً واحداً في كل مرة، وقاوم الرغبة في إضافة إعدادات عشوائية
00:01:28يمكنك العثور على الإعدادات في وثائق كل من Hugging Face وDeepSpeed
00:01:34وقد حصلت على معظم كود Python الخاص بي من هذه الوثائق أيضاً
00:01:37لكنني أجريت بعض التعديلات لتناسب نظامي وتتعامل معه بشكل أفضل، خاصة مع نظام Mac
00:01:42إذا فشلت هذه الخطوة، توقف هنا، لأن معظم مشاكل DeepSpeed هي عدم توافق في CUDA وليست مشكلة في نموذجك نفسه
00:01:48سنقوم بتشغيل كل هذا الآن ونراقب كيف يعمل
00:01:51سأستخدم مجموعة بيانات صغيرة مستوردة لهذا المثال فقط لتسريع عملية التشغيل
00:01:58وها نحن ذا، بعد بضع دقائق يمكننا رؤية الخطوات التي اتخذها البرنامج وأيضاً ذروة استهلاك ذاكرة الرسوم
00:02:03نعم، خسارة التدريب (training loss) في هذه المرة لم تتغير أو تنخفض كثيراً
00:02:08ولكن يمكننا تحسين ذلك أو استخدام مجموعة بيانات أكبر للحصول على نتائج أفضل. الآن
00:02:13إليك ما يعتقد الناس أنهم سيحصلون عليه، ثم يواجهون رغم ذلك مشكلة نفاد الذاكرة
00:02:16تأتي تقنية ZeRO في مراحل، وكل مرحلة تجيب على سؤال واحد: ما الذي يمكنني التوقف عن تخزينه على وحدة معالجة رسومية واحدة؟
00:02:24المرحلة الأولى تجزئ حالات المحسّن، والمرحلة الثانية تفعل الشيء نفسه بالإضافة إلى التدرجات
00:02:30أنت الآن توفر مساحات أكبر من تلك البيانات التي تستهلك ذاكرتك بصمت. ثم لدينا المرحلة الثالثة من ZeRO
00:02:36وهي الأهم؛ فهي تجزئ حالات المحسّن والتدرجات والمعاملات معاً
00:02:40هذا هو أكبر توفير ممكن للذاكرة، ولكن حتى هذا قد لا يكون كافياً أحياناً
00:02:45إذا كنت لا تزال غير قادر على تشغيل النموذج، فإن ZeRO-Infinity يمكنها نقل البيانات إلى المعالج المركزي (CPU) أو حتى أقراص NVMe
00:02:50نعم، أنت تضحي بالسرعة مقابل القدرة على التوسع، ولكن أحياناً يكون الفوز الحقيقي هو مجرد القدرة على تشغيل النموذج في المقام الأول
00:02:56الآن إذا كنت تفكر: “جميل، لكن الذاكرة ليست مشكلتي الوحيدة”، فأنت محق؛ فـ DeepSpeed يدعم التوازي ثلاثي الأبعاد (3D Parallelism)
00:03:04في البيانات، وخط المعالجة، والموترات، كما يحتوي على دعم مدمج لنماذج “خليط الخبراء” (Mixture of Experts)
00:03:09حتى لا تستهلك النماذج المتفرقة (sparse models) كل قدراتك الحسابية
00:03:12لذا أصبح لدينا الآن خيارات حقيقية؛ فـ DeepSpeed يتكامل بشكل رائع مع Hugging Face وAccelerate
00:03:19لذا لست بحاجة لبناء كل شيء من الصفر
00:03:21أنت تأخذ ما تحتاجه فقط وتتجاهل الباقي. الآن، معايير الأداء تعتمد بشدة على إعداداتك
00:03:27لذا لا تثق دائماً بالأرقام الكبيرة. لقد حاولت تشغيل هذا عدة مرات
00:03:30ولكن مجدداً، بما أنني أستخدم جهاز M4 Pro، لم أتمكن من تحسين الأداء أكثر من ذلك بهذا النموذج الأساسي
00:03:36لذا من الصعب الجزم، لكن مشاريع أخرى استخدمت DeepSpeed أظهرت قفزات هائلة في سرعة المعالجة
00:03:41خاصة عندما كانت الذاكرة هي العائق. إذا كنت تستخدم ويندوز أو لينكس، فقد تحقق مكاسب ضخمة
00:03:46لذا أفضل خطوة بصراحة هي التجربة؛ ابدأ بالإعدادات الرسمية
00:03:51هذا ما فعلته هنا تقريباً؛ عدلتها قليلاً لتناسب الماك ثم أصلحت مشاكل CUDA
00:03:56ثم راقب ذاكرة المعالج المركزي إذا فعلت خاصية النقل (offload)، وإذا قررت لاحقاً استخدام عدة وحدات GPU
00:04:01فإن مكتبة Accelerate ستساعدك في ذلك. DeepSpeed هو ببساطة زر “أرفض أن تنفد الذاكرة اليوم”
00:04:07بمجرد فهمك لـ ZeRO وكيفية عمل النقل (offloading)، سيصبح تدريب النماذج الضخمة ممكناً عملياً حتى بموارد محدودة
00:04:14لكن عملية الإعداد يمكن أن تكون مربكة في البداية بلا شك
00:04:17اشترك إذا كان هذا قد وفر عليك وقت المعالجة الرسومية أو إذا كنت تحب هذا النوع من أدوات التطوير. نراكم في فيديو آخر

Key Takeaway

تعد مكتبة DeepSpeed الحل الأمثل لتجاوز قيود ذاكرة الرسوم عند تدريب النماذج الضخمة من خلال تقنيات التجزئة المبتكرة وإدارة الموارد بذكاء.

Highlights

مكتبة DeepSpeed هي أداة مفتوحة المصدر من مايكروسوفت تتكامل مع PyTorch لحل مشاكل ذاكرة الرسوم (VRAM).

تقنية ZeRO (Zero Redundancy Optimizer) هي السر الكامن وراء كفاءة DeepSpeed في تجزئة حالات التدريب.

تسمح مراحل ZeRO المختلفة بتوفير مساحات شاسعة من الذاكرة عبر تجزئة حالات المحسّن والتدرجات والمعاملات.

خاصية ZeRO-Infinity تمكن المستخدمين من تدريب نماذج ضخمة عبر نقل البيانات إلى المعالج المركزي (CPU) أو أقراص NVMe.

يدعم DeepSpeed تقنيات متقدمة مثل التوازي ثلاثي الأبعاد (3D Parallelism) ونماذج خليط الخبراء (Mixture of Experts).

التوافق مع مكتبات Hugging Face وAccelerate يجعل من السهل دمج DeepSpeed في مشاريع الذكاء الاصطناعي الحالية.

Timeline

مقدمة عن DeepSpeed وحل مشكلة الذاكرة

يقدم المتحدث مكتبة DeepSpeed كأداة ثورية من مايكروسوفت مصممة للعمل مباشرة مع PyTorch لمعالجة أزمات الذاكرة في وحدات GPU. يشرح الفيديو أن النماذج الكبيرة لا تفشل عادةً بسبب بطء المعالجة، بل بسبب امتلاء ذاكرة الرسوم بحالات المحسّن والتدرجات. يتم تسليط الضوء على تقنية ZeRO التي تمنع تكرار البيانات غير الضروري في الذاكرة. تعد هذه المقدمة أساسية لفهم أن المشكلة تكمن في الإعدادات وليس فقط في حجم الأجهزة. يختتم هذا القسم بدعوة المشاهدين للاشتراك لمتابعة المزيد من الأدوات التقنية.

الإعداد العملي وتجهيز البيئة على Google Colab

ينتقل المتحدث إلى الجانب التطبيقي باستخدام منصة Google Colab لتجاوز قيود العمل على أجهزة Mac ذات معالجات M4 Pro التي تفتقر لوحدات Nvidia. تبدأ العملية بفحص وحدات GPU المتوفرة في البيئة السحابية ثم تثبيت الحزم الضرورية مثل PyTorch وHugging Face. يتم استخدام أداة DS_report للتأكد من أن تعريفات CUDA والمترجمات تعمل بشكل صحيح دون تعارضات. يشدد المتحدث على أن سلامة الإعدادات البرمجية هي الخطوة الأولى لضمان نجاح عملية التدريب. يظهر هذا الجزء الخطوات الأولية الدقيقة التي تسبق تشغيل أي نموذج ضخم.

تهيئة ملف الإعدادات واستخدام المرحلة الثانية من ZeRO

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

مراحل ZeRO المتقدمة وتقنيات نقل البيانات (Offloading)

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

التوازي الثلاثي والتكامل مع Hugging Face

يناقش القسم الأخير قدرات DeepSpeed الإضافية مثل التوازي في البيانات وخطوط المعالجة والموترات، بالإضافة لدعم نماذج خليط الخبراء. يؤكد المتحدث على سهولة التكامل مع مكتبات شهيرة مثل Accelerate وHugging Face، مما يوفر عناء بناء الأنظمة من الصفر. يتم استعراض معايير الأداء والتحذير من الانخداع بالأرقام دون تجربة فعلية على الأجهزة المتاحة. يختتم الفيديو بوصف DeepSpeed بأنه الزر الذي يرفض رسائل 'نفاد الذاكرة' المزعجة (Out of Memory). يشجع المتحدث في النهاية على التجربة العملية ومراقبة استهلاك موارد النظام للوصول لأفضل أداء ممكن.

Community Posts

No posts yet. Be the first to write about this video!

Write about this video