Batch Size
تعلم كيف يؤثر حجم الدفعة على سرعة ودقة تدريب التعلم الآلي. استكشف قيود الأجهزة وقم بتحسين Ultralytics YOLO26 باستخدام AutoBatch.
في مجال machine learning وخاصة deep learning، يشير مصطلح Batch Size إلى عدد أمثلة التدريب المستخدمة في تكرار واحد لتدريب النموذج. بدلاً من إدخال training data بأكملها في الشبكة العصبية دفعة واحدة — وهو أمر مستحيل حسابياً غالباً بسبب قيود الذاكرة — يتم تقسيم مجموعة البيانات إلى مجموعات فرعية أصغر تُعرف بالدفعات (batches). يعالج النموذج دفعة واحدة، ويحسب الخطأ، ويحدث model weights الداخلية الخاصة به عبر backpropagation قبل الانتقال إلى الدفعة التالية. يلعب هذا المُعامل الفائق دوراً محوريْاً في تحديد سرعة التدريب واستقرار عملية التعلم.
ديناميكيات التدريب باستخدام الدفعات#
يؤدي اختيار حجم الدفعة إلى تغيير جذري في كيفية تنقل خوارزمية التحسين، وهي عادةً متغير من stochastic gradient descent، عبر مشهد الخسارة.
- أحجام الدفعات الصغيرة: يؤدي استخدام عدد صغير (على سبيل المثال، 8 أو 16) إلى تحديثات "صاخبة". وبينما يكون تقدير الاشتقاق أقل دقة لمجموعة البيانات ككل، إلا أن هذا الضجيج يمكن أن يساعد النموذج أحياناً في الهروب من النهايات الصغرى المحلية (local minima)، مما قد يؤدي إلى تعميم أفضل. ومع ذلك، تتطلب الدفعات الأصغر مزيداً من التحديثات لكل حقبة (epoch)، مما قد يجعل التدريب أبطأ من حيث وقت الساعة الفعلي بسبب التكاليف الإضافية.
- أحجام الدفعات الكبيرة: توفر الدفعة الأكبر (على سبيل المثال، 128 أو 256) تقديراً أكثر دقة للمتدرج، مما يؤدي إلى تقارب أكثر سلاسة لـ loss function. وهي تتيح التوازي الهائل على الأجهزة الحديثة، مما يسّرع الحساب بشكل كبير. ومع ذلك، إذا كانت الدفعة كبيرة جداً، فقد يستقر النموذج في الحد الأدنى الحاد وغير الأمثل، مما يؤدي إلى overfitting وانخفاض القدرة على التعميم على بيانات جديدة.
تداعيات العتاد والذاكرة#
Practitioners must often select a batch size based on hardware limitations rather than purely theoretical preference. Deep learning models, especially large architectures like transformers or advanced convolutional networks, are stored in the VRAM of a GPU.
عند استخدام NVIDIA CUDA للتسريع، يجب أن تحتفظ ذاكرة VRAM بمعلمات النموذج، ودفعة بيانات الإدخال، ومخرجات التنشيط الوسيطة اللازمة لحساب المتدرج. إذا تجاوز حجم الدفعة الذاكرة المتاحة، فسيتوقف التدريب بسبب خطأ "نفاد الذاكرة" (Out of Memory - OOM). غالباً ما يتم توظيف تقنيات مثل التدريب بـ mixed precision لتقليل استخدام الذاكرة، مما يتيح أحجام دفعات أكبر على نفس الأجهزة.
التمييز بين المفاهيم ذات الصلة#
لتهيئة التدريب بفعالية، من الضروري التمييز بين حجم الدفعة والمصطلحات الزمنية الأخرى في حلقة التدريب.
- Batch Size vs. Epoch: يمثل العصر (epoch) تمريرة كاملة واحدة عبر مجموعة بيانات التدريب بأكملها. يحدد حجم الدفعة عدد الأجزاء التي يتم تقسيم البيانات إليها داخل هذا العصر. على سبيل المثال، إذا كان لديك 1,000 صورة وحجم دفعة يبلغ 100، فسيستغرق الأمر 10 تكرارات لإكمال عصر واحد.
- Batch Size vs. Iteration: التكرار (أو الخطوة) هو فعل معالجة دفعة واحدة وتحديث الأوزان. العدد الإجمالي للتكرارات في التدريب هو عدد الدفعات لكل عصر مضروباً في العدد الإجمالي للعصور.
- Batch Size vs. Batch Normalization: على الرغم من مشاركتهما في الاسم، فإن التطبيع الدفعي (Batch Normalization) هو نوع طبقة محدد يقوم بتطبيع مدخلات الطبقة بناءً على المتوسط والتباين للدفعة الحالية. تعتمد هذه التقنية بشكل كبير على حجم الدفعة؛ وإذا كان حجم الدفعة صغيراً جداً (على سبيل المثال، 2)، تصبح التقديرات الإحصائية غير موثوقة، مما قد يقلل من الأداء.
تطبيقات العالم الحقيقي#
يعد تعديل حجم الدفعة ضرورة روتينية عند نشر حلول الرؤية الحاسوبية عبر مختلف الصناعات.
-
التصوير الطبي عالي الدقة: في مجال AI in healthcare، غالباً ما يعمل الممارسين مع بيانات حجمية ثلاثية الأبعاد مثل مسح التصوير بالرنين المغناطيسي أو الأشعة المقطعية. هذه الملفات كثيفة بشكل لا يصدق وتستهلك ذاكرة كثيفة. لتنفيذ مهام مثل medical image analysis أو image segmentation المعقدة دون تعطل النظام، غالباً ما يقوم المهندسون بتقليل حجم الدفعة إلى رقم صغير جداً، وأحياناً دفعة واحدة فقط. هنا، الأولوية هي معالجة التفاصيل عالية الدقة بدلاً من سرعة التدريب الخام.
-
مراقبة الجودة الصناعية: على العكس من ذلك، في AI in manufacturing, السرعة هي الأهم. تحتاج الأنظمة الآلية التي تفحص المنتجات على سير الناقل إلى معالجة آلاف الصور في الساعة. أثناء inference، قد يقوم المهندسون بتجميع خلاصات الكاميرا الواردة في دفعات أكبر لتعظيم استغلال أجهزة edge AI، مما يضمن إنتاجية عالية لاكتشاف العيوب في الوقت الفعلي.
تهيئة حجم الدفعة باستخدام Python#
عند استخدام Ultralytics Python package، فإن تعيين حجم الدفعة أمر مباشر. يمكنك تحديد عدد صحيح ثابت أو استخدام إعداد batch=-1 الديناميكي، والذي يستخدم ميزة AutoBatch feature لحساب أقصى حجم دفعة يمكن لجهازك التعامل معه بأمان تلقائياً.
يوضح المثال التالي كيفية تدريب YOLO26 model — أحدث معيار للسرعة والدقة — باستخدام إعداد دفعة محدد.
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 Platform بيئة شاملة لتسجيل المقارنات وتشغيلها. يُعد الضبط المناسب لـ hyperparameter tuning لحجم الدفعة غالباً الخطوة الأخيرة لاستخراج أفضل أداء من نموذجك.






