Batch Size
تعلم كيف يؤثر حجم الدفعة على سرعة ودقة تدريب التعلم الآلي. استكشف قيود الأجهزة وقم بتحسين Ultralytics YOLO26 باستخدام AutoBatch.
في مجال تعلم الآلة وبشكل خاص التعلم العميق، يشير مصطلح حجم الدفعة (Batch Size) إلى عدد أمثلة التدريب المستخدمة في تكرار واحد لتدريب النموذج. بدلاً من إدخال كامل بيانات التدريب إلى الشبكة العصبية دفعة واحدة—وهو أمر غالباً ما يكون مستحيلاً حسابياً بسبب قيود الذاكرة—يتم تقسيم مجموعة البيانات إلى مجموعات فرعية أصغر تسمى دفعات (batches). يقوم النموذج بمعالجة دفعة واحدة، ويحسب الخطأ، ويحدث أوزان النموذج الداخلية الخاصة به عبر الانتشار العكسي قبل الانتقال إلى الدفعة التالية. يلعب هذا المعامل الفائق (hyperparameter) دوراً محورياً في تحديد سرعة التدريب واستقرار عملية التعلم.
Link to this sectionديناميكيات التدريب باستخدام الدفعات#
يغير اختيار حجم الدفعة بشكل جوهري كيفية تنقل خوارزمية التحسين، التي عادة ما تكون متغيراً من النزول الاشتقاقي العشوائي، عبر مشهد الخسارة.
- أحجام الدفعات الصغيرة: يؤدي استخدام عدد صغير (على سبيل المثال، 8 أو 16) إلى تحديثات "صاخبة". وبينما يكون تقدير الاشتقاق أقل دقة لمجموعة البيانات ككل، إلا أن هذا الضجيج يمكن أن يساعد النموذج أحياناً في الهروب من النهايات الصغرى المحلية (local minima)، مما قد يؤدي إلى تعميم أفضل. ومع ذلك، تتطلب الدفعات الأصغر مزيداً من التحديثات لكل حقبة (epoch)، مما قد يجعل التدريب أبطأ من حيث وقت الساعة الفعلي بسبب التكاليف الإضافية.
- أحجام الدفعات الكبيرة: توفر الدفعة الأكبر (على سبيل المثال، 128 أو 256) تقديراً أكثر دقة للاشتقاق، مما يؤدي إلى تقارب أكثر سلاسة لدالة الخسارة. كما يسمح بالتوازي الضخم على الأجهزة الحديثة، مما يسرع الحسابات بشكل كبير. ومع ذلك، إذا كانت الدفعة كبيرة جداً، فقد يستقر النموذج في نهايات صغرى حادة وغير مثالية، مما يؤدي إلى الفرط في التخصيص وانخفاض القدرة على التعميم على بيانات جديدة.
Link to this sectionتداعيات العتاد والذاكرة#
غالباً ما يتعين على الممارسين اختيار حجم دفعة بناءً على قيود العتاد بدلاً من التفضيل النظري البحت. يتم تخزين نماذج التعلم العميق، خاصة البنيات الكبيرة مثل الـ Transformer أو الشبكات التلافيفية المتقدمة، في ذاكرة الوصول العشوائي للفيديو (VRAM) الخاصة بـ GPU.
عند استخدام NVIDIA CUDA للتسريع، يجب أن تحتفظ ذاكرة الـ VRAM بمعاملات النموذج، ودفعة بيانات الإدخال، ومخرجات التنشيط الوسيطة اللازمة لحساب الاشتقاق. إذا تجاوز حجم الدفعة الذاكرة المتاحة، فسيتعطل التدريب مع ظهور خطأ "Out of Memory" (OOM). غالباً ما يتم استخدام تقنيات مثل التدريب بالدقة المختلطة لتقليل استخدام الذاكرة، مما يسمح بأحجام دفعات أكبر على نفس العتاد.
Link to this sectionالتمييز بين المفاهيم ذات الصلة#
لتهيئة التدريب بفعالية، من الضروري التمييز بين حجم الدفعة والمصطلحات الزمنية الأخرى في حلقة التدريب.
- حجم الدفعة مقابل الحقبة: تمثل الحقبة (epoch) تمريرة واحدة كاملة عبر مجموعة بيانات التدريب بأكملها. يحدد حجم الدفعة عدد الأجزاء التي يتم تقسيم البيانات إليها ضمن تلك الحقبة. على سبيل المثال، إذا كان لديك 1000 صورة وحجم دفعة قدره 100، فسيستغرق الأمر 10 تكرارات لإكمال حقبة واحدة.
- حجم الدفعة مقابل التكرار: التكرار (أو الخطوة) هو عملية معالجة دفعة واحدة وتحديث الأوزان. إجمالي عدد التكرارات في التدريب هو عدد الدفعات في كل حقبة مضروباً في إجمالي عدد الحقب.
- حجم الدفعة مقابل التطبيع الدفعي: بينما يشتركان في الاسم، فإن التطبيع الدفعي (Batch Normalization) هو نوع طبقة محدد يقوم بتطبيع مدخلات الطبقة بناءً على المتوسط والتباين للدفعة الحالية. تعتمد هذه التقنية بشكل كبير على حجم الدفعة؛ فإذا كان حجم الدفعة صغيراً جداً (على سبيل المثال، 2)، تصبح التقديرات الإحصائية غير موثوقة، مما قد يؤدي إلى تدهور الأداء.
Link to this sectionتطبيقات العالم الحقيقي#
يعد تعديل حجم الدفعة ضرورة روتينية عند نشر حلول الرؤية الحاسوبية عبر مختلف الصناعات.
-
التصوير الطبي عالي الدقة: في مجال الذكاء الاصطناعي في الرعاية الصحية، غالباً ما يعمل الممارسون مع بيانات حجمية ثلاثية الأبعاد مثل صور الرنين المغناطيسي أو الأشعة المقطعية. هذه الملفات كثيفة للغاية وتستهلك ذاكرة كبيرة. لأداء مهام مثل تحليل الصور الطبية أو تجزئة الصور المعقدة دون تعطل النظام، يقوم المهندسون غالباً بتقليل حجم الدفعة إلى رقم صغير جداً، وأحياناً دفعة واحدة فقط. هنا، تكون الأولوية لمعالجة التفاصيل عالية الدقة بدلاً من سرعة التدريب الخام.
-
مراقبة الجودة الصناعية: في المقابل، في الذكاء الاصطناعي في التصنيع، تعد السرعة أمراً بالغ الأهمية. تحتاج الأنظمة الآلية التي تفحص المنتجات على سير النقل إلى معالجة آلاف الصور في الساعة. أثناء الاستدلال، قد يقوم المهندسون بتجميع خلاصات الكاميرا الواردة في دفعات أكبر لزيادة استخدام أجهزة الذكاء الاصطناعي الطرفي إلى أقصى حد، مما يضمن إنتاجية عالية للكشف عن العيوب في الوقت الفعلي.
Link to this sectionتهيئة حجم الدفعة باستخدام Python#
عند استخدام حزمة Ultralytics لـ Python، فإن ضبط حجم الدفعة أمر مباشر. يمكنك تحديد عدد صحيح ثابت أو استخدام إعداد batch=-1 الديناميكي، الذي يستخدم ميزة AutoBatch لحساب أقصى حجم للدفعة يمكن لجهازك التعامل معه بأمان تلقائياً.
The following example demonstrates how to train a YOLO26 model—the latest standard for speed and accuracy—using a specific batch setting.
from ultralytics import YOLO
# Load the YOLO26n model (nano version for speed)
model = YOLO("yolo26n.pt")
# Train on the COCO8 dataset
# batch=16 is manually set.
# Alternatively, use batch=-1 for auto-tuning based on available GPU memory.
results = model.train(data="coco8.yaml", epochs=5, batch=16)لإدارة التجارب واسعة النطاق وتصور كيف تؤثر أحجام الدفعات المختلفة على مقاييس التدريب الخاصة بك، توفر أدوات مثل منصة Ultralytics بيئة شاملة لتسجيل ومقارنة عمليات التشغيل. غالباً ما يكون الضبط الدقيق للمعاملات الفائقة لحجم الدفعة هو الخطوة الأخيرة لاستخلاص أفضل أداء من نموذجك.






