كيفية تسريع نماذج PyTorch: دليل عملي لـ torch.profiler
نشرت Hugging Face الجزء الأول من دليل شامل حول torch.profiler - الأداة المدمجة في PyTorch لتحليل الأداء. تتبع هذه الأداة كل عملية على وحدات معالجة الرسومات…
معالج بواسطة الذكاء الاصطناعي من Hugging Face Blog؛ بتحرير Hamidun News
تتضمن مكتبة PyTorch أداة مدمجة تُدعى torch.profiler لتحليل أداء النماذج. تتبع هذه الأداة كل عملية على وحدات معالجة الرسومات (GPU) والمعالج المركزي (CPU)، مما يساعد على تحديد الاختناقات في الحسابات وتحسين وقت التدريب.
لماذا يجب تحليل الأداء
بدون تحليل الأداء، يرى المطور فقط الرقم النهائي: "استغرقت الحقبة ساعتين للتدريب". لكن لماذا ساعتان؟ إلى أين ذهب الوقت؟ ربما يكون محمّل البيانات بطيئاً؟ أم أن العملية على وحدة معالجة الرسومات غير فعالة؟ أم أن وحدة معالجة الرسومات في انتظار البيانات من المعالج المركزي؟ محاولة التحسين بشكل عشوائي - هذا مجرد تخمين. تغيّر حجم الدفعة وسرعة التحميل ودقة الحسابات، لكن النتيجة لا تتحسن لأنك تحسّن الاختناق الخاطئ. يتخلص torch.profiler من هذه الخسارة في الوقت: فهو يعرض التوزيع الدقيق للوقت والذاكرة عبر جميع العمليات.
كيف يعمل torch.profiler
تتبع الأداة تنفيذ الكود على مستوى أنوية CUDA وخيوط المعالج المركزي. لكل عملية - على سبيل المثال، الضرب المصفوفي في طبقة Linear أو الالتفاف في Conv2d - تسجل وقت البداية والنهاية والذاكرة المستخدمة. يمكن تصدير النتائج بصيغة متوافقة مع Chrome DevTools وتصورها كمخطط زمني. المقاييس الرئيسية للمحلل:
- الوقت الحصري - الوقت الذي احتلته العملية وحدها (بدون العمليات المتداخلة)
- الوقت الشامل - وقت العملية مع جميع الاستدعاءات المتداخلة
- الذاكرة - ذروة استخدام ذاكرة وحدة معالجة الرسومات أثناء العملية
- وقت المزامنة - الوقت المستغرق في المزامنة بين المعالج المركزي ووحدة معالجة الرسومات (الاختناق الأول)
متى يكشف torch.profiler عن المشاكل
السيناريو النموذجي: يتم تدريب النموذج ببطء، تظن أنك بحاجة إلى وحدة معالجة رسومات أسرع، لكن المحلل يظهر أن 60% من وقت الحقبة ينتظر البيانات من محمّل البيانات. المشكلة ليست في وحدة معالجة الرسومات، بل في تحميل البيانات. الحل: زيادة num_workers في DataLoader أو استخدام pinned memory.
مثال آخر: يتم تدريب النموذج على نظام موزع مع عدة وحدات معالجة رسومات، والمحلل يظهر أن الكثير من الوقت يذهب إلى مزامنة التدرجات بين الأجهزة. هذا يشير إلى الحاجة لتحسين الرسم البياني للاتصال أو إعادة النظر في استراتيجية التوازي.
ملاحظة مهمة: تحليل الأداء نفسه يضيف عبء إضافي. إذا قمت بتشغيل المحلل على دورة التدريب بأكملها، فقد يبطئ الحسابات بنسبة 10-30%. للقياسات الدقيقة، من الأفضل تحليل كتلة الكود المثيرة للاهتمام فقط (على سبيل المثال، مسار التمرير الأمامي والخلفي الواحد).
ماذا يعني هذا
أداة torch.profiler هي الخطوة الأولى قبل أي تحسين. لا تخمّن أين الاختناق: قم بالتحليل، انظر إلى النتائج، وحسّن بالضبط ما يثبط السرعة. سيوفر هذا أسابيع من التجارب وسيوجه الجهود إلى حيث ستحقق حقاً نتائج ملموسة. بالنسبة لمهندسي التعلم الآلي الذين يريدون تسريع تدريب النماذج، هذه أداة أساسية.
هل تريد التوقف عن قراءة الذكاء الاصطناعي والبدء باستخدامه؟
AI News هو موجز منسق لأخبار الذكاء الاصطناعي. تعلمك Hamidun Academy استخدام الذكاء الاصطناعي في عملك.