Batch Size
تعلّم كيف يؤثر حجم الدفعة في سرعة تدريب تعلّم الآلة ودقته. استكشف قيود العتاد وحسّن Ultralytics YOLO26 باستخدام AutoBatch.
في مجال التعلّم الآلي، ولا سيما التعلّم العميق، يشير حجم الدفعة إلى عدد أمثلة التدريب المستخدمة في تكرار واحد من تدريب النموذج. وبدلًا من إدخال بيانات التدريب بأكملها إلى الشبكة العصبية دفعةً واحدة—وهو أمر يستحيل حسابيًا في كثير من الأحيان بسبب قيود الذاكرة—تُقسَّم مجموعة البيانات إلى مجموعات فرعية أصغر تُسمى دفعات. يعالج النموذج دفعة واحدة، ويحسب الخطأ، ويحدّث أوزان النموذج الداخلية عبر الانتشار العكسي قبل الانتقال إلى الدفعة التالية. وتؤدي هذه المعلمة الفائقة دورًا محوريًا في تحديد سرعة التدريب واستقرار عملية التعلّم معًا.
ديناميكيات التدريب باستخدام الدفعات#
يؤثر اختيار حجم الدفعة تأثيرًا جوهريًا في كيفية تنقّل خوارزمية التحسين، التي تكون عادةً أحد متغيرات الانحدار المتدرج العشوائي، في مشهد دالة الخسارة.
- أحجام الدفعات الصغيرة: يؤدي استخدام عدد صغير (مثل 8 أو 16) إلى تحديثات «مشوشة». ورغم أن تقدير التدرج يكون أقل دقة بالنسبة إلى مجموعة البيانات ككل، فإن هذا التشويش قد يساعد النموذج أحيانًا على الهروب من الحدود الدنيا المحلية، مما قد يؤدي إلى تعميم أفضل. إلا أن الدفعات الأصغر تتطلب عددًا أكبر من التحديثات في كل حقبة، وهو ما قد يجعل التدريب أبطأ من حيث الزمن الفعلي بسبب النفقات الإضافية.
- أحجام الدفعات الكبيرة: توفر الدفعة الأكبر (مثل 128 أو 256) تقديرًا أدق للتدرج، مما يؤدي إلى تقارب أكثر سلاسة لـدالة الخسارة. كما تتيح إجراء معالجة متوازية ضخمة على العتاد الحديث، فتسرّع الحساب بدرجة كبيرة. ومع ذلك، إذا كانت الدفعة كبيرة جدًا، فقد يستقر النموذج عند حدود دنيا حادة وغير مثالية، مما يؤدي إلى فرط التكيّف وانخفاض القدرة على التعميم على البيانات الجديدة.
العتاد وتداعيات الذاكرة#
غالبًا ما يتعين على الممارسين اختيار حجم الدفعة استنادًا إلى قيود العتاد بدلًا من التفضيل النظري البحت. تُخزَّن نماذج التعلّم العميق، ولا سيما البنى الكبيرة مثل المحوّلات أو الشبكات الالتفافية المتقدمة، في ذاكرة الفيديو (VRAM) الخاصة بـGPU.
عند استخدام NVIDIA CUDA للتسريع، يجب أن تستوعب ذاكرة الفيديو معلمات النموذج، ودفعة بيانات الإدخال، ومخرجات التنشيط الوسيطة اللازمة لحساب التدرج. وإذا تجاوز حجم الدفعة الذاكرة المتاحة، فسيتعطل التدريب بسبب خطأ «نفاد الذاكرة» (OOM). وغالبًا ما تُستخدم تقنيات مثل التدريب بـالدقة المختلطة لتقليل استخدام الذاكرة، مما يسمح بأحجام دفعات أكبر على العتاد نفسه.
التمييز بين المفاهيم ذات الصلة#
لتهيئة التدريب بفعالية، من الضروري التمييز بين حجم الدفعة والمصطلحات الزمنية الأخرى في حلقة التدريب.
- حجم الدفعة مقابل الحقبة: تمثل الحقبة مرورًا كاملًا واحدًا عبر مجموعة بيانات التدريب بأكملها. ويحدد حجم الدفعة عدد الأجزاء التي تُقسَّم إليها البيانات ضمن تلك الحقبة. فمثلًا، إذا كانت لديك 1,000 صورة وكان حجم الدفعة 100، فستحتاج إلى 10 تكرارات لإكمال حقبة واحدة.
- حجم الدفعة مقابل التكرار: التكرار (أو الخطوة) هو عملية معالجة دفعة واحدة وتحديث الأوزان. ويُحسب إجمالي عدد التكرارات في التدريب بضرب عدد الدفعات في كل حقبة في إجمالي عدد الحقب.
- حجم الدفعة مقابل تطبيع الدفعة: رغم اشتراكهما في الاسم، فإن تطبيع الدفعة هو نوع محدد من الطبقات يطبّع مدخلات الطبقة استنادًا إلى متوسط الدفعة الحالية وتباينها. وتعتمد هذه التقنية بدرجة كبيرة على حجم الدفعة؛ فإذا كان حجم الدفعة صغيرًا جدًا (مثل 2)، تصبح التقديرات الإحصائية غير موثوقة، مما قد يؤدي إلى تدهور الأداء.
التطبيقات الواقعية#
يُعد ضبط حجم الدفعة ضرورةً روتينية عند نشر حلول الرؤية الحاسوبية في مختلف الصناعات.
-
التصوير الطبي عالي الدقة: في مجال الذكاء الاصطناعي في الرعاية الصحية، يتعامل الممارسون غالبًا مع بيانات حجمية ثلاثية الأبعاد مثل فحوصات MRI أو CT. وتكون هذه الملفات كثيفة للغاية وتستهلك قدرًا كبيرًا من الذاكرة. ولتنفيذ مهام مثل تحليل الصور الطبية أو تجزئة الصور المعقدة دون تعطيل النظام، يقلّل المهندسون غالبًا حجم الدفعة إلى عدد صغير جدًا، وقد يصل أحيانًا إلى دفعة بحجم 1. وتتمثل الأولوية هنا في معالجة التفاصيل عالية الدقة، لا في سرعة التدريب الخام.
-
مراقبة الجودة الصناعية: وعلى العكس، في مجال الذكاء الاصطناعي في التصنيع، تكون السرعة بالغة الأهمية. إذ تحتاج الأنظمة الآلية التي تفحص المنتجات على حزام ناقل إلى معالجة آلاف الصور في الساعة. وأثناء الاستدلال، قد يجمع المهندسون تدفقات الكاميرات الواردة في دفعات أكبر لتعظيم الاستفادة من أجهزة الذكاء الاصطناعي الطرفي، بما يضمن إنتاجية عالية لاكتشاف العيوب في الوقت الفعلي.
تهيئة حجم الدفعة في Python#
عند استخدام حزمة Ultralytics لـPython، يكون ضبط حجم الدفعة أمرًا مباشرًا. يمكنك تحديد عدد صحيح ثابت أو استخدام إعداد batch=-1 الديناميكي، الذي يستفيد من ميزة AutoBatch لحساب الحد الأقصى لحجم الدفعة الذي يستطيع عتادك التعامل معه بأمان تلقائيًا.
يوضح المثال التالي كيفية تدريب نموذج YOLO26—وهو أحدث معيار للسرعة والدقة—باستخدام إعداد محدد للدفعة.
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 بيئة شاملة لتسجيل عمليات التشغيل ومقارنتها. وغالبًا ما يكون ضبط المعلمات الفائقة لحجم الدفعة الخطوة الأخيرة لاستخراج أفضل أداء ممكن من نموذجك.









