نقطة تفتيش التدرج
تعد نقاط فحص التدرج (وتسمى أيضًا نقاط تفتيش التنشيط) بمثابة خدعة لتوفير الذاكرة تعمل على التخلص من معظم عمليات التنشيط الوسيطة أثناء التمرير الأمامي وإعادة حسابها بسرعة أثناء الانتشار العكسي.
نظرة عامة
It lets you train deeper, larger networks by trading extra compute for much lower memory use.
الغوص العميق
تقوم الشبكات العصبية التدريبية عادةً بتخزين عمليات تنشيط كل طبقة أثناء التمرير الأمامي لأن الانتشار العكسي يحتاج إليها لحساب التدرجات. بالنسبة للنماذج العميقة، تهيمن هذه التنشيطات على الذاكرة. بدلاً من ذلك، تقوم نقاط التفتيش المتدرجة بحفظ عمليات التنشيط فقط في مجموعة متفرقة من طبقات "نقاط التفتيش" وتتجاهل الباقي. عندما يصل الدعم الخلفي إلى منطقة تم إسقاط عمليات التنشيط فيها، فإنه يعيد تشغيل الحساب الأمامي لهذا الجزء فقط لتجديد ما يحتاج إليه، ثم يتابع. مع وضع نقاط التفتيش تقريبًا في كل طبقات الجذر التربيعي لـ N، تنخفض ذاكرة التنشيط من الترتيب N إلى ترتيب الجذر التربيعي لـ N، بينما ترتفع الحوسبة بحوالي تمريرة أمامية إضافية واحدة فقط (أبطأ بنسبة 20-30٪ تقريبًا). وهذا يجعل من الممكن ملاءمة أحجام الدفعات الأكبر أو المحولات الأعمق على نفس وحدة معالجة الرسومات.
البصيرة الفنية
تستغل هذه التقنية مقايضة الوقت مقابل الذاكرة. يتم تخزين كافة عمليات التنشيط بشكل سريع ولكنه يستهلك الكثير من الذاكرة؛ إن إعادة حسابها أمر رخيص في المسرعات الحديثة مقارنة بتكلفة نفاد الذاكرة. تعمل أطر العمل مثل PyTorch (torch.utils.checkpoint) على تغليف الوحدة بحيث يتم حفظ مخرجاتها الأمامية ولكن تتم إعادة حساب الأجزاء الداخلية الخاصة بها أثناء الرجوع إلى الخلف. يعد اختيار موضع نقطة التفتيش أمرًا مهمًا: يؤدي التباعد المتساوي لمقاطع sqrt(N) تقريبًا إلى تقليل إجمالي الذاكرة مع إضافة تمرير أمامي إضافي واحد فقط للحساب بشكل عام.
التأثير الاستراتيجي
التكلفة والميزانية
تؤدي قرارات الهندسة المعمارية إلى زيادة الأداء وتكلفة التشغيل لسنوات.
قرارات أوضح
يساعد التعليم الفني الفرق على اختيار المجموعة المناسبة، وليس فقط المجموعة الأحدث.
مراقبة الجودة
تعمل الخيارات الهندسية الأفضل على تقليل حوادث الموثوقية في الإنتاج.
مستقبل نقاط التفتيش التدرج
أصبحت نقاط التفتيش المتدرجة الآن معيارًا قياسيًا في التدريب على النماذج الكبيرة ويتم تشغيلها بشكل آلي بشكل متزايد، حيث تقوم المكتبات باختيار مواقع نقاط التفتيش المثالية لك. إنه يقترن بشكل طبيعي مع FSDP، والدقة المختلطة، والتفريغ لدفع أحجام النماذج إلى أعلى. توقع نقاط فحص "انتقائية" تعيد حساب العمليات الرخيصة فقط مع الاحتفاظ بالعمليات الباهظة الثمن (مثل مصفوفات الانتباه) في ذاكرة التخزين المؤقت، بالإضافة إلى الأساليب التي تعتمد على المترجم في أدوات مثل torch.compile الخاص بـ PyTorch والتي تقرر تلقائيًا ما يجب حفظه مقابل إعادة الحساب للحصول على أفضل توازن بين سرعة الذاكرة.
التنفيذ في العالم الحقيقي
تدريب محول عميق بحجم دفعة أكبر على وحدة معالجة رسومات واحدة عن طريق التخلص من عمليات تنشيط الطبقة وإعادة حسابها.
ضبط نماذج الرؤية بدقة على صور عالية الدقة حيث قد تتجاوز خرائط التنشيط ذاكرة وحدة معالجة الرسومات.
تعانق محولات الوجه التي تمكن gradient_checkpointing=True لتناسب النماذج ذات المليار معلمة أثناء الضبط الدقيق.
الجمع بين نقاط التفتيش وFSDP بحيث يتم الاحتفاظ بكل من المعلمات وعمليات التنشيط صغيرة، مما يتيح تدريب نماذج لغوية كبيرة جدًا.
المخاطر والدرابزين
يمكن أن يؤدي تحسين معيار واحد إلى إخفاء نقاط ضعف النظام الأوسع.
غالبًا ما يتم التقليل من تكاليف البنية التحتية والصيانة.
يمكن أن تنمو الفجوات الأمنية وقابلية المراقبة عندما تصبح الأنظمة أكثر تعقيدًا.
خارطة طريق التنفيذ
تحديد الكمون والجودة وأهداف التكلفة قبل التنفيذ.
المعيار في ظل ظروف التحميل والبيانات الواقعية.
مراقبة الأدوات للأخطاء والانجراف وتأثير المستخدم.
قم بإعداد مسارات التراجع والاستجابة للحوادث قبل القياس.
استمر في الاستكشاف
Free newsletter
Get the daily AI briefing
Three verified AI stories every weekday morning, written in plain English. Free forever, no ads.
One email each weekday. Unsubscribe in one click. We never sell or share your address.
Test yourself
Take the Gradient Checkpointing quiz
Instant feedback on every answer, and a shareable certificate with a verifiable ID once you pass a course.
Support free AI education. AI Understanding is a 501(c)(3) nonprofit — no ads, no paywall, ever. Make a donation
الدليل التالي
تراكم التدرج
الأسئلة المتداولة
What is Gradient Checkpointing?
تعد نقاط فحص التدرج (وتسمى أيضًا نقاط تفتيش التنشيط) بمثابة خدعة لتوفير الذاكرة تعمل على التخلص من معظم عمليات التنشيط الوسيطة أثناء التمرير الأمامي وإعادة حسابها بسرعة أثناء الانتشار العكسي. فهو يتيح لك تدريب شبكات أعمق وأكبر من خلال استبدال الحوسبة الإضافية باستخدام ذاكرة أقل بكثير.
ما الذي يتم تداوله في نقاط التفتيش المتدرجة في المقام الأول من أجل حفظ الذاكرة؟
تعمل نقطة التفتيش المتدرجة على إعادة حساب عمليات التنشيط المهملة أثناء التمرير للخلف، مما يؤدي إلى إنفاق حساب إضافي مقابل تقليل الذاكرة بشكل كبير.
لماذا يتم تخزين عمليات التنشيط عادةً أثناء التمرير الأمامي؟
يحسب Backprop التدرجات باستخدام التنشيطات الوسيطة من التمرير الأمامي، لذلك يجب أن تكون متاحة ما لم تتم إعادة حسابها.
تقريبًا كيف يتم قياس ذاكرة التنشيط إذا تم وضع نقاط التفتيش في كل طبقات sqrt (N) في شبكة N-layer؟
يؤدي تباعد نقاط التفتيش حول كل طبقات الجذر التربيعي لـ N إلى تقليل ذاكرة التنشيط المخزنة من الترتيب N إلى الترتيب sqrt(N).
ما مقدار الحوسبة الإضافية تقريبًا التي تضيفها عادةً نقاط التفتيش المتدرجة في وضع جيد؟
مع وضع نقطة تفتيش جيدة، يكون الحمل عبارة عن تمريرة أمامية إضافية واحدة تقريبًا، وغالبًا ما يكون هناك تباطؤ بنسبة 20-30٪.
في PyTorch، ما الأداة المساعدة التي يتم استخدامها بشكل شائع لتطبيق فحص التدرج على الوحدة النمطية؟
يقوم torch.utils.checkpoint بتغليف الوحدة بحيث تتم إعادة حساب عمليات التنشيط الداخلية الخاصة بها أثناء الرجوع إلى الخلف بدلاً من تخزينها.