أفضل ممارسات التعلم الآلي ونصائح لتدريب النماذج
مقدمة
إحدى أهم الخطوات عند العمل على مشروع رؤية حاسوبية هي تدريب النموذج. قبل الوصول إلى هذه الخطوة، تحتاج إلى تحديد أهدافك وجمع بياناتك وتعليقها. بعد المعالجة المسبقة للبيانات للتأكد من نظافتها واتساقها، يمكنك الانتقال إلى تدريب نموذجك.
شاهد: نصائح لتدريب النماذج | كيفية التعامل مع مجموعات البيانات الكبيرة | حجم الدُفعات GPU الاستخدام و الدقة المختلطة
إذن، ما هو تدريب النموذج؟ التدريب على النموذج هو عملية تعليم النموذج الخاص بك للتعرف على الأنماط المرئية وإجراء تنبؤات بناءً على بياناتك. وهو يؤثر بشكل مباشر على أداء ودقة تطبيقك. في هذا الدليل، سنغطي أفضل الممارسات وتقنيات التحسين ونصائح استكشاف الأخطاء وإصلاحها لمساعدتك في تدريب نماذج الرؤية الحاسوبية الخاصة بك بشكل فعال.
كيفية تدريب نموذج التعلم الآلي
يتم تدريب نموذج الرؤية الحاسوبية من خلال تعديل معلماته الداخلية لتقليل الأخطاء. في البداية، يتم تغذية النموذج بمجموعة كبيرة من الصور المصنفة. يقوم النموذج بعمل تنبؤات حول ما هو موجود في هذه الصور، وتتم مقارنة التنبؤات بالتسميات أو المحتويات الفعلية لحساب الأخطاء. تُظهر هذه الأخطاء مدى بُعد تنبؤات النموذج عن القيم الحقيقية.
أثناء التدريب، يقوم النموذج بشكل متكرر بإجراء تنبؤات وحساب الأخطاء وتحديث معلماته من خلال عملية تسمى التكاثر العكسي. في هذه العملية، يقوم النموذج بتعديل معلماته الداخلية (weights and biases) لتقليل الأخطاء. بتكرار هذه الدورة عدة مرات، يحسّن النموذج دقته تدريجيًا. وبمرور الوقت، يتعلم النموذج التعرف على الأنماط المعقدة مثل الأشكال والألوان والأنسجة.
تتيح عملية التعلم هذه إمكانية قيام نموذج الرؤية الحاسوبية بمهام مختلفة، بما في ذلك اكتشاف الأجسام وتجزئة النماذج وتصنيف الصور. والهدف النهائي هو إنشاء نموذج يمكنه تعميم تعلمه على صور جديدة غير مرئية بحيث يمكنه فهم البيانات المرئية بدقة في تطبيقات العالم الحقيقي.
الآن بعد أن عرفنا ما يحدث خلف الكواليس عندما نقوم بتدريب نموذج، دعنا نلقي نظرة على النقاط التي يجب مراعاتها عند تدريب نموذج.
التدريب على مجموعات بيانات كبيرة
هناك بعض الجوانب المختلفة التي يجب التفكير فيها عندما تخطط لاستخدام مجموعة بيانات كبيرة لتدريب نموذج. على سبيل المثال، يمكنك ضبط حجم الدفعة، والتحكم في استخدام GPU ، واختيار استخدام التدريب متعدد النطاقات، وما إلى ذلك. لنستعرض كل خيار من هذه الخيارات بالتفصيل.
حجم الدفعة والاستخدام GPU
عند تدريب النماذج على مجموعات بيانات كبيرة، فإن استخدام GPU بكفاءة هو المفتاح. يعد حجم الدفعة عاملاً مهمًا. إنه عدد عينات البيانات التي يعالجها نموذج التعلم الآلي في تكرار تدريب واحد. باستخدام الحد الأقصى لحجم الدفعة الذي يدعمه GPU الخاص بك، يمكنك الاستفادة الكاملة من قدراته وتقليل الوقت الذي يستغرقه تدريب النموذج. ومع ذلك، فأنت تريد تجنب نفاد ذاكرة GPU . إذا واجهت أخطاء في الذاكرة، قلل حجم الدفعة تدريجيًا حتى يتدرب النموذج بسلاسة.
فيما يتعلق ب YOLO11 ، يمكنك ضبط batch_size
في متغير تكوين التدريب لتتناسب مع سعتك GPU . كما أن إعداد batch=-1
في البرنامج النصي التدريبي الخاص بك سيحدد تلقائيًا حجم الدُفعة التي يمكن معالجتها بكفاءة بناءً على قدرات جهازك. من خلال ضبط حجم الدُفعات بشكل دقيق، يمكنك تحقيق أقصى استفادة من مواردك GPU وتحسين عملية التدريب بشكل عام.
تدريب المجموعة الفرعية
التدريب الفرعي هو استراتيجية ذكية تتضمن تدريب نموذجك على مجموعة أصغر من البيانات التي تمثل مجموعة البيانات الأكبر. يمكن أن يوفر الوقت والموارد، خاصةً أثناء التطوير الأولي للنموذج واختباره. إذا لم يكن لديك وقت كافٍ أو كنت تقوم بتجربة تكوينات مختلفة للنموذج، فإن التدريب على مجموعة فرعية هو خيار جيد.
عندما يتعلق الأمر ب YOLO11 ، يمكنك بسهولة تنفيذ تدريب المجموعة الفرعية باستخدام fraction
معلمة. تتيح لك هذه المعلمة تحديد الجزء الذي ستستخدمه من مجموعة البيانات للتدريب. على سبيل المثال، تعيين fraction=0.1
سيدرب نموذجك على 10% من البيانات. يمكنك استخدام هذه التقنية للتكرار السريع وضبط نموذجك قبل الالتزام بتدريب نموذج باستخدام مجموعة بيانات كاملة. يساعدك تدريب المجموعة الفرعية على إحراز تقدم سريع وتحديد المشكلات المحتملة في وقت مبكر.
التدريب متعدد النطاقات
التدريب متعدد المقاييس هو تقنية تعمل على تحسين قدرة نموذجك على التعميم من خلال تدريبه على صور بأحجام مختلفة. يمكن أن يتعلم نموذجك اكتشاف الأجسام بمقاييس ومسافات مختلفة ويصبح أكثر قوة.
على سبيل المثال، عندما تقوم بالتدريب YOLO11 ، يمكنك تمكين التدريب متعدد النطاقات عن طريق تعيين scale
معلمة. تعمل هذه المعلمة على ضبط حجم صور التدريب بمعامل محدد، لمحاكاة الأجسام على مسافات مختلفة. على سبيل المثال، ضبط scale=0.5
سيقلل حجم الصورة إلى النصف، بينما scale=2.0
سيضاعفها. يسمح تكوين هذه المعلمة للنموذج الخاص بك بتجربة مجموعة متنوعة من مقاييس الصور وتحسين قدرات الكشف عبر أحجام وسيناريوهات مختلفة للأجسام.
التخزين المؤقت
يعد التخزين المؤقت تقنية مهمة لتحسين كفاءة تدريب نماذج التعلم الآلي. من خلال تخزين الصور التي تمت معالجتها مسبقًا في الذاكرة، يقلل التخزين المؤقت من الوقت الذي يقضيه GPU في انتظار تحميل البيانات من القرص. يمكن للنموذج أن يتلقى البيانات باستمرار دون تأخير ناجم عن عمليات الإدخال/الإخراج من القرص.
يمكن التحكم في التخزين المؤقت عند التدريب YOLO11 باستخدام cache
المعلمة:
cache=True
: تخزين صور مجموعة البيانات في ذاكرة الوصول العشوائي، مما يوفر أسرع سرعة وصول ولكن على حساب زيادة استخدام الذاكرة.cache='disk'
: تخزين الصور على القرص، أبطأ من ذاكرة الوصول العشوائي ولكن أسرع من تحميل بيانات جديدة في كل مرة.cache=False
: تعطيل التخزين المؤقت، والاعتماد كليًا على الإدخال/الإخراج من القرص، وهو الخيار الأبطأ.
التدريب الدقيق المختلط
يستخدم التدريب على الدقة المختلطة كلاً من أنواع الفاصلة العائمة 16 بت (FP16) و32 بت (FP32). يتم الاستفادة من نقاط القوة في كل من FP16 و FP32 باستخدام FP16 لحساب أسرع و FP32 للحفاظ على الدقة عند الحاجة. يتم إجراء معظم عمليات الشبكة العصبية في FP16 للاستفادة من الحساب الأسرع واستخدام أقل للذاكرة. ومع ذلك، يتم الاحتفاظ بنسخة رئيسية من أوزان النموذج في FP32 لضمان الدقة أثناء خطوات تحديث الوزن. يمكنك التعامل مع نماذج أكبر أو أحجام دفعات أكبر ضمن نفس قيود الأجهزة.
لتنفيذ تدريب مختلط الدقة، ستحتاج إلى تعديل البرامج النصية للتدريب والتأكد من أن أجهزتك (مثل وحدات معالجة الرسومات) تدعم ذلك. العديد من أطر التعلم العميق الحديثة، مثل Tensorflowتوفر دعمًا مدمجًا للدقة المختلطة.
يعد التدريب المختلط الدقة مباشرًا عند العمل مع YOLO11. يمكنك استخدام amp
في تكوين التدريب الخاص بك. الإعداد amp=True
يتيح تدريب الدقة المختلطة التلقائية المختلطة (AMP). يعد التدريب متعدد الدقة طريقة بسيطة وفعالة في الوقت نفسه لتحسين عملية تدريب النموذج الخاص بك.
الأوزان المدربة مسبقاً
يعد استخدام الأوزان المدربة مسبقًا طريقة ذكية لتسريع عملية تدريب نموذجك. تأتي الأوزان المدربة مسبقًا من نماذج تم تدريبها بالفعل على مجموعات بيانات كبيرة، مما يمنح نموذجك بدايةً قوية. يعمل التعلّم المنقول على تكييف النماذج المدربة مسبقًا مع المهام الجديدة ذات الصلة. يتضمن الضبط الدقيق للنموذج المدرب مسبقًا البدء بهذه الأوزان ثم مواصلة التدريب على مجموعة البيانات الخاصة بك. تؤدي هذه الطريقة في التدريب إلى أوقات تدريب أسرع وأداء أفضل في كثير من الأحيان لأن النموذج يبدأ بفهم قوي للميزات الأساسية.
إن pretrained
معلمة تجعل تعلم النقل سهلاً مع YOLO11. الإعداد pretrained=True
سيستخدم أوزانًا افتراضية مُدرَّبة مسبقًا، أو يمكنك تحديد مسار إلى نموذج مخصص مُدرَّب مسبقًا. إن استخدام الأوزان المُدرَّبة مسبقًا والتعلُّم المنقول يعزز قدرات نموذجك بشكل فعّال ويقلل من تكاليف التدريب.
تقنيات أخرى يجب مراعاتها عند التعامل مع مجموعة بيانات كبيرة
هناك بعض التقنيات الأخرى التي يجب مراعاتها عند التعامل مع مجموعة بيانات كبيرة:
- جداول معدل التعلم: يؤدي تنفيذ برامج جدولة معدل التعلم إلى ضبط معدل التعلم ديناميكيًا أثناء التدريب. يمكن لمعدل التعلم المضبوط جيدًا أن يمنع النموذج من تجاوز الحدود الدنيا ويحسن الاستقرار. عند التدريب YOLO11 ، فإن
lrf
تساعد المعلمة في إدارة جدولة معدل التعلم من خلال تعيين معدل التعلم النهائي كجزء من المعدل الأولي. - التدريب الموزع: للتعامل مع مجموعات البيانات الكبيرة، يمكن أن يغير التدريب الموزع قواعد اللعبة. يمكنك تقليل وقت التدريب عن طريق توزيع عبء عمل التدريب على عدة وحدات معالجة رسومات أو أجهزة متعددة.
عدد الحقب التي يجب التدريب عليها
عند تدريب نموذج ما، تشير الحقبة الزمنية إلى تمريرة واحدة كاملة عبر مجموعة بيانات التدريب بأكملها. أثناء الحقبة، يقوم النموذج بمعالجة كل مثال في مجموعة التدريب مرة واحدة ويقوم بتحديث معلماته بناءً على خوارزمية التعلم. عادةً ما تكون هناك حاجة إلى عدة دورات تدريبية للسماح للنموذج بالتعلّم وتحسين معلماته بمرور الوقت.
السؤال الشائع الذي يطرح نفسه هو كيفية تحديد عدد الحقب الزمنية لتدريب النموذج. نقطة البداية الجيدة هي 300 حلقة تدريبية. إذا كان النموذج يلائم النموذج في وقت مبكر، يمكنك تقليل عدد الحقب الزمنية. إذا لم يحدث التجاوز بعد 300 حقبة، يمكنك تمديد التدريب إلى 600 أو 1200 أو أكثر.
ومع ذلك، يمكن أن يختلف العدد المثالي للحقب الزمنية بناءً على حجم مجموعة البيانات وأهداف المشروع. قد تحتاج مجموعات البيانات الأكبر حجمًا إلى عدد أكبر من الحقب الزمنية لكي يتعلم النموذج بفعالية، بينما قد تحتاج مجموعات البيانات الأصغر حجمًا إلى عدد أقل من الحقب الزمنية لتجنب الإفراط في التهيئة. فيما يتعلق ب YOLO11 ، يمكنك تعيين epochs
في النص البرمجي التدريبي الخاص بك.
التوقف المبكر
التوقف المبكر هو أسلوب قيّم لتحسين تدريب النموذج. من خلال مراقبة أداء التحقق، يمكنك إيقاف التدريب بمجرد توقف النموذج عن التحسن. يمكنك توفير الموارد الحاسوبية ومنع الإفراط في التركيب.
تتضمن العملية تعيين معلمة صبر تحدد عدد الحقب الزمنية التي يجب انتظارها حتى يحدث تحسن في مقاييس التحقق من الصحة قبل إيقاف التدريب. إذا لم يتحسن أداء النموذج خلال هذه الحقبات، يتم إيقاف التدريب لتجنب إضاعة الوقت والموارد.
بالنسبة إلى YOLO11 ، يمكنك تمكين التوقف المبكر عن طريق تعيين معلمة الصبر في تكوين التدريب الخاص بك. على سبيل المثال patience=5
يعني أن التدريب سيتوقف إذا لم يكن هناك أي تحسن في مقاييس التحقق من الصحة لمدة 5 حقبات متتالية. يضمن استخدام هذه الطريقة أن تظل عملية التدريب فعالة وتحقق الأداء الأمثل دون الحاجة إلى عمليات حسابية مفرطة.
الاختيار بين التدريب السحابي والتدريب المحلي
هناك خياران لتدريب نموذجك: التدريب السحابي والتدريب المحلي.
يوفر التدريب السحابي قابلية التوسع والأجهزة القوية وهو مثالي للتعامل مع مجموعات البيانات الكبيرة والنماذج المعقدة. توفر منصات مثل Google Cloud و AWS و Azure إمكانية الوصول عند الطلب إلى وحدات معالجة الرسومات ووحدات معالجة الرسوميات ووحدات معالجة الرسوميات TPU عالية الأداء، مما يسرع من أوقات التدريب ويتيح إجراء تجارب على نماذج أكبر. ومع ذلك، يمكن أن يكون التدريب السحابي مكلفًا، خاصةً لفترات طويلة، ويمكن أن يؤدي نقل البيانات إلى زيادة التكاليف ووقت الاستجابة.
يوفر التدريب المحلي تحكماً وتخصيصاً أكبر، مما يتيح لك تخصيص بيئتك وفقاً لاحتياجاتك الخاصة وتجنب التكاليف المستمرة للسحابة. يمكن أن يكون أكثر اقتصاداً للمشاريع طويلة الأجل، وبما أن بياناتك تبقى في أماكن العمل، فهي أكثر أماناً. ومع ذلك، قد يكون للأجهزة المحلية قيود على الموارد وتتطلب الصيانة، مما قد يؤدي إلى إطالة أوقات التدريب للنماذج الكبيرة.
اختيار مُحسِّن
المُحسِّن هو خوارزمية تقوم بضبط أوزان الشبكة العصبية لتقليل دالة الخسارة، والتي تقيس مدى جودة أداء النموذج. بعبارات أبسط، يساعد المُحسِّن النموذج على التعلم من خلال تعديل معلماته لتقليل الأخطاء. يؤثر اختيار المُحسِّن المناسب بشكل مباشر على مدى سرعة ودقة تعلم النموذج.
يمكنك أيضًا ضبط معلمات أداة التحسين لتحسين أداء النموذج. ضبط معدل التعلم يحدد حجم الخطوات عند تحديث المعلمات. من أجل الاستقرار، يمكنك البدء بمعدل تعلم معتدل وتقليله تدريجيًا بمرور الوقت لتحسين التعلم على المدى الطويل. بالإضافة إلى ذلك، يحدد ضبط الزخم مدى تأثير التحديثات السابقة على التحديثات الحالية. القيمة الشائعة للزخم هي حوالي 0.9. وهي توفر توازنًا جيدًا بشكل عام.
المُحسِّنات الشائعة
للمُحسِّنات المختلفة نقاط قوة وضعف مختلفة. دعنا نلقي نظرة على بعض المُحسِّنات الشائعة.
-
SGD (نزول التدرج العشوائي):
- تحديث معلمات النموذج باستخدام تدرج دالة الخسارة فيما يتعلق بالمعلمات.
- بسيطة وفعالة ولكن يمكن أن تكون بطيئة في التقارب وقد تتعثر في الحدود الدنيا المحلية.
-
آدم (تقدير اللحظة التكيفية):
- يجمع بين مزايا كل من SGD مع الزخم و RMSProp.
- يضبط معدل التعلم لكل معلمة بناءً على تقديرات اللحظات الأولى والثانية للتدرجات.
- مناسب تمامًا للبيانات المشوشة والتدرجات المتفرقة.
- فعّال ويتطلب ضبطًا أقل بشكل عام، مما يجعله مُحسِّنًا موصى به لـ YOLO11.
-
RMSProp (الانتشار الجذري للمربع الجذري):
- يضبط معدل التعلم لكل معلمة عن طريق قسمة التدرج على المتوسط الجاري لمقادير التدرجات الأخيرة.
- يساعد في التعامل مع مشكلة التدرج المتلاشي وهو فعال للشبكات العصبية المتكررة.
بالنسبة إلى YOLO11 ، فإن optimizer
تسمح لك المعلمة بالاختيار من بين العديد من المُحسِّنات، بما في ذلك SGD و Adam و AdamW و NAdam و RAdam و RMSProp، أو يمكنك ضبطها على auto
للاختيار التلقائي بناءً على تكوين النموذج.
التواصل مع المجتمع
أن تكون جزءًا من مجتمع من المتحمسين للرؤية الحاسوبية يمكن أن يساعدك في حل المشاكل والتعلم بشكل أسرع. إليك بعض الطرق للتواصل والحصول على المساعدة ومشاركة الأفكار.
موارد المجتمع
- مشكلات GitHub: قم بزيارة مستودعYOLO11 GitHub واستخدم علامة تبويب المشكلات لطرح الأسئلة والإبلاغ عن الأخطاء واقتراح ميزات جديدة. المجتمع والمشرفون نشيطون للغاية ومستعدون للمساعدة.
- Ultralytics خادم ديسكورد: انضم إلى خادمUltralytics Discord للدردشة مع المستخدمين والمطورين الآخرين والحصول على الدعم ومشاركة تجاربك.
الوثائق الرسمية
- Ultralytics YOLO11 التوثيق: اطلع على وثائق YOLO11 الرسمية للحصول على أدلة مفصلة ونصائح مفيدة حول مشاريع الرؤية الحاسوبية المختلفة.
سيساعدك استخدام هذه الموارد على حل التحديات والبقاء على اطلاع على أحدث الاتجاهات والممارسات في مجتمع الرؤية الحاسوبية.
الوجبات الرئيسية
يتضمن تدريب نماذج الرؤية الحاسوبية اتباع ممارسات جيدة وتحسين استراتيجياتك وحل المشاكل عند ظهورها. يمكن لتقنيات مثل تعديل أحجام الدُفعات والتدريب المختلط الدقة والبدء بأوزان مدربة مسبقًا أن تجعل نماذجك تعمل بشكل أفضل وتتدرب بشكل أسرع. تساعدك أساليب مثل تدريب المجموعات الفرعية والتوقف المبكر على توفير الوقت والموارد. سيساعدك البقاء على اتصال مع المجتمع ومواكبة الاتجاهات الجديدة على مواصلة تحسين مهاراتك في تدريب النماذج.
الأسئلة الشائعة
كيف يمكنني تحسين استخدام GPU عند تدريب مجموعة بيانات كبيرة باستخدام Ultralytics YOLO ؟
لتحسين استخدام GPU ، قم بتعيين batch_size
في تكوين التدريب الخاص بك إلى الحد الأقصى للحجم الذي يدعمه GPU. وهذا يضمن لك الاستفادة الكاملة من إمكانيات GPU ، مما يقلل من وقت التدريب. إذا واجهت أخطاء في الذاكرة، قلل حجم الدفعة تدريجيًا حتى يتم التدريب بسلاسة. بالنسبة إلى YOLO11 ، فإن ضبط batch=-1
في البرنامج النصي للتدريب الخاص بك سيحدد تلقائيًا حجم الدفعة الأمثل للمعالجة الفعالة. لمزيد من المعلومات، ارجع إلى تكوين التدريب.
ما هو التدريب الدقيق المختلط، وكيف يمكنني تمكينه في YOLO11 ؟
يستخدم تدريب الدقة المختلطة كلاً من أنواع الفاصلة العائمة 16 بت (FP16) و32 بت (FP32) لتحقيق التوازن بين السرعة الحسابية والدقة. هذا النهج يسرع التدريب ويقلل من استخدام الذاكرة دون التضحية بالنموذج الدقة. لتمكين التدريب مختلط الدقة في YOLO11 ، قم بتعيين amp
إلى True
في تكوين التدريب الخاص بك. يؤدي ذلك إلى تنشيط التدريب التلقائي المختلط الدقة (AMP). للمزيد من التفاصيل حول تقنية التحسين هذه، راجع تكوين التدريب.
كيف يعزز التدريب متعدد النطاقات أداء النموذج YOLO11 ؟
يعمل التدريب متعدد النطاقات على تحسين أداء النموذج من خلال التدريب على صور ذات أحجام مختلفة، مما يسمح للنموذج بالتعميم بشكل أفضل عبر مقاييس ومسافات مختلفة. في YOLO11 ، يمكنك تمكين التدريب متعدد النطاقات عن طريق تعيين scale
في تكوين التدريب. على سبيل المثال, scale=0.5
يقلل من حجم الصورة بمقدار النصف، بينما scale=2.0
يضاعفها. تحاكي هذه التقنية الأجسام على مسافات مختلفة، مما يجعل النموذج أكثر قوة عبر سيناريوهات مختلفة. للاطلاع على الإعدادات والمزيد من التفاصيل، راجع تكوين التدريب.
كيف يمكنني استخدام الأوزان المدربة مسبقًا لتسريع التدريب في YOLO11 ؟
يمكن أن يؤدي استخدام الأوزان المدربة مسبقًا إلى تقليل أوقات التدريب بشكل كبير وتحسين أداء النموذج من خلال البدء من نموذج يفهم بالفعل الميزات الأساسية. في YOLO11 ، يمكنك تعيين pretrained
إلى True
أو تحديد مسار إلى أوزان مخصصة مُدرَّبة مسبقًا في تكوين التدريب الخاص بك. يستفيد هذا النهج، المعروف باسم التعلُّم المنقول، من المعرفة من مجموعات البيانات الكبيرة للتكيف مع مهمتك المحددة. تعرف على المزيد حول الأوزان المدربة مسبقًا ومزاياها هنا.
ما هو عدد الحقب الزمنية الموصى به لتدريب النموذج، وكيف يمكنني تعيين ذلك في YOLO11 ؟
يشير عدد الحقب الزمنية إلى التمريرات الكاملة من خلال مجموعة بيانات التدريب أثناء تدريب النموذج. نقطة البداية النموذجية هي 300 حلقة تدريبية. إذا كان النموذج الخاص بك يلائم النموذج في وقت مبكر، يمكنك تقليل العدد. وبدلاً من ذلك، إذا لم يتم ملاحظة الإفراط في التركيب، يمكنك تمديد التدريب إلى 600 أو 1200 أو أكثر من الحلقات. لتعيين هذا في YOLO11 ، استخدم epochs
في النص البرمجي التدريبي الخاص بك. للمزيد من النصائح حول تحديد العدد المثالي للحقب الزمنية، راجع هذا القسم حول عدد الحقب الزمنية.