Ultralytics YOLO27: انضم إلى قائمة الانتظار.
Get Started
الإنشاء باستخدام Ultralytics Platform·التدريب والتقييم·الدرس 5/10
الدرسمتوسط

تدريب عمليات التشغيل وقراءة نتائجها وضبطها الدقيق

ابدأ عملية تشغيل سحابية ضمن ميزانية محددة، وقيّم التشغيل من منحنياته لكل حقبة، وأجرِ الضبط الدقيق من دون أن يتجاهل المحسّن الافتراضي معدل التعلّم.

تُحاسبك وحدة GPU سحابية عن كل دقيقة يستمر فيها تشغيل محكوم عليه بالفشل، أما أكثر أخطاء الضبط الدقيق شيوعًا فلا يكلف شيئًا، لكنه يهدر وقت التشغيل بصمت: المحسّن الافتراضي يتجاهل معدل التعلّم الذي تحدده. يدرّب هذا الدرس نموذجًا حقيقيًا على مجموعة بيانات medical pills، ويقرأ منحنياته وفق قاعدة لاتخاذ القرار، ثم يجري ضبطًا دقيقًا يضمن تطبيق إعداداتك فعلًا.

النتيجة

يمكنك بدء تشغيل تدريب على Platform بتكلفة معلومة، وتحديد ما إذا كنت ستوقفه أو تتابعه أو تحتفظ به بناءً على منحنياته، وإجراء ضبط دقيق انطلاقًا من نموذج سابق باستخدام معدل التعلّم الذي تقصده.

المسار السريع
إذا كنت تعرف الأساسيات بالفعل، فإليك النسخة المختصرة.
  1. انقر New Model، واختر نموذجًا أساسيًا من YOLO26 ومجموعة بياناتك، وفعّل Save Dataset Version.

  2. أبقِ عدد الحقب عند 100، وحجم الدفعة تلقائيًا، وحجم الصورة 640 ما لم يكن لديك سبب لتغييرها؛ وراجع تقدير التكلفة.

  3. قيّم التشغيل: إذا استمر التحسن في الحقبة الأخيرة، فأضف مزيدًا من الحقب؛ وإذا استقر الأداء مع ارتفاع خسارة التحقق، فأصلح البيانات.

  4. لإجراء ضبط دقيق باستخدام lr0 الخاص بك، اضبط أيضًا optimizer على SGD أو AdamW؛ إذ يتجاهل auto القيمة lr0.

  5. درّب محليًا باستخدام project="username/project" وULTRALYTICS_API_KEY لإرسال نتائج التشغيل إلى Platform مباشرةً.

عملي

بدء عملية تشغيل#

انقر New Model في صفحة مشروع أو مجموعة بيانات. ترشدك علامة التبويب Cloud Training خلال هذه الإعدادات:

مربع الحوار Train New Model في Ultralytics Platform، مع اختيار yolo26n كنموذج أساسي ومجموعة بيانات COCO8 و100 حقبة وحجم دفعة تلقائي ووحدة GPU من طراز RTX PRO 6000 ورصيد الحساب وتكلفة تقديرية قدرها $0.03

الإعدادافتراضيمتى تغيّره
النموذج الأساسياختر من Official (يُوصى بـ YOLO26)لإجراء ضبط دقيق، اختر عملية التشغيل السابقة ضمن My Models
مجموعة البيانات—فعّل Save Dataset Version دائمًا لربط عملية التشغيل ببياناتها
الحقب100اختبار تشغيل (10–20 حقبة) أو مجموعات بيانات ضخمة جدًا
حجم الدفعة-1 (يضبط نفسه تلقائيًا ليتوافق مع ذاكرة GPU)تحتاج إلى عمليتي تشغيل لتكون المقارنة بينهما دقيقة تمامًا
حجم الصورة640الأجسام صغيرة: ارفع الحجم (يتوقف شريط التمرير عند 1280؛ ويقبل محرر YAML حتى 4096)
الإعدادات المتقدمةالإعدادات الافتراضيةأكثر من 50 وسيطة model.train() في YAML، تشمل المحسّن ومعدل التعلّم وزيادة البيانات

الوسيطات هي نفسها التي يقبلها model.train(...) محليًا، وتعرض صفحة النموذج لاحقًا أمر yolo train قابلًا للنسخ، مع القيم غير الافتراضية.

اختيار وحدة GPU وتحديد ميزانية التشغيل#

الفئةأمثلة (ذاكرة VRAM، السعر لكل ساعة)مناسب لـ
اقتصاديRTX 2000 Ada (16 GB، $0.24)، RTX A5000 (24 GB، $0.27)، RTX 4090 (24 GB، $0.69)اختبارات التشغيل والنماذج النانوية والصغيرة
متوسطL40S (48 GB، $0.86)، RTX 5090 (32 GB، $0.99)، A100 SXM (80 GB، $1.49)النماذج المتوسطة وأحجام الدفعات الأكبر
افتراضيRTX PRO 6000 (96 GB، $2.09)معظم المهام
متقدمH100 SXM (80 GB، $3.29)، H200 SXM (141 GB، $4.39)مجموعات البيانات الكبيرة عندما يكون الوقت عاملًا مهمًا
Pro وEnterpriseB200 (180 GB، $5.89)، B300 (288 GB، $7.39)أكبر المهام

تقدّر بطاقة التكلفة المدة والسعر قبل البدء: نحو $0.23 مقابل 1,000 صورة × YOLO26n × 100 حقبة على RTX PRO 6000 الافتراضي، ونحو $1.56 مقابل 5,000 صورة × YOLO26s × 100 حقبة على H100 SXM، الذي يدرّب بسرعة تزيد بنحو 3.4× على RTX 4090. تُحتسب الفوترة وفق وقت GPU الفعلي: تُفرض رسوم على عمليات التشغيل المكتملة والملغاة والفاشلة بمجرد بدء GPU، ويحتاج التشغيل إلى رصيد يغطي تقديره (15 دقيقة على الأقل من وقت GPU)، كما تتوقف عمليات التشغيل النشطة إذا أصبح الرصيد سالبًا؛ لذا فعّل إعادة الشحن التلقائي في Settings > Billing للمهام الطويلة. قد يؤدي اختيار GPU أرخص من RTX PRO 6000 إلى ترقية مجانية إليه عندما تكون السعة التي تديرها Ultralytics خاملة، مع استمرار احتساب الفاتورة وفق السعر الذي اخترته.

قواعد اتخاذ القرار: اختبر مجموعة بيانات جديدة مبدئيًا باستخدام 10–20 حقبة على GPU الافتراضي. انتقل إلى H100 أو H200 عندما يستغرق التشغيل ساعات ويكون هناك من ينتظره. اختر GPU أرخص لا أسرع عندما يظل استخدام GPU منخفضًا.

راقب التشغيل#

تعرض علامة التبويب Train في صفحة النموذج ثلاثة علامات تبويب فرعية لبث البيانات. تعرض Charts المقاييس وخسائر التدريب والتحقق ومعدل التعلّم لكل حقبة؛ وتحتفظ Console بآخر 2,000 سطر وتوقف التشغيل فورًا عند ظهور تتبّع خطأ أو خطأ نفاد ذاكرة CUDA؛ أما System فتعرض استخدام GPU والذاكرة ودرجة الحرارة:

علامة التبويب Train لنموذج Ultralytics Platform، وتعرض أربع بطاقات ملخص للمقاييس وعلامة التبويب الفرعية Charts مع منحنيات الدقة والاسترجاع وmAP50-95 لكل حقبة

علامة التبويب Train لنموذج Ultralytics Platform مع فتح علامة التبويب الفرعية System، وتعرض بطاقة المضيف طراز GPU ومخططات استخدام CPU وRAM لكل حقبة

يُعلَّم التشغيل بالفشل إذا لم يُبلغ عن أي شيء لمدة 4 ساعات. تُرفع أفضل نقطة تحقق دوريًا، لذا يحتفظ التشغيل الملغى بأفضل حقبة وصل إليها حتى ذلك الحين، ويمكن أن تخبرك تنبيهات Slack عند اكتمال عمليات التشغيل أو فشلها.

مثال عملي: تدريب تشغيل وبثه وقراءته#

يمكنك التدريب في أي مكان مع الاستمرار في تتبّع التشغيل في Platform. بعد تصدير مفتاح API من Settings > API Keys بوصفه ULTRALYTICS_API_KEY، يبث project بالشكل username/project المخططات ووحدة التحكم وأفضل نقطة تحقق إلى ذلك المشروع:

from ultralytics import YOLO

# export ULTRALYTICS_API_KEY="..." first to stream this run into your Platform project
model = YOLO("yolo26n.pt")
results = model.train(data="medical-pills.yaml", epochs=10, imgsz=320, project="username/pill-inspection", name="v1-baseline")
print(f"mAP50-95 {results.box.map:.3f}, best checkpoint: {model.trainer.best}")
                 Class     Images  Instances      Box(P          R      mAP50  mAP50-95)
                   all         23        399       0.97      0.957      0.977      0.659
mAP50-95 0.659, best checkpoint: .../runs/detect/username/pill-inspection/v1-baseline/weights/best.pt

يعمل الأمر نفسه على وحدات GPU في Platform عند النقر على New Model؛ أما محليًا، فقد استغرق أقل من دقيقتين على CPU محمول باستخدام imgsz=320. يحتوي results.csv الخاص بالتشغيل على السلاسل الزمنية لكل حقبة التي تعرضها علامة التبويب الفرعية Charts، لذا تحوّل بضعة أسطر عبارة "راقب المنحنيات" إلى قاعدة:

import pandas as pd

df = pd.read_csv("results.csv")  # the per-epoch metrics behind the Charts subtab
df.columns = df.columns.str.strip()
m = df["metrics/mAP50-95(B)"]
best_epoch = int(df.loc[m.idxmax(), "epoch"])
recent_gain = m.iloc[-1] - m.iloc[-4]  # change over the last 3 epochs
val_loss = df["val/box_loss"]
print(f"epochs={len(df)} best mAP50-95={m.max():.3f} at epoch {best_epoch}")
print(f"gain over last 3 epochs: {recent_gain:+.3f}")
print(f"val box loss: {val_loss.iloc[0]:.3f} -> {val_loss.iloc[-1]:.3f}")
if recent_gain < 0.005 and val_loss.iloc[-1] >= val_loss.iloc[-4]:
    print("verdict: plateaued - stop, and fix the data before training longer")
elif best_epoch == len(df):
    print("verdict: still improving at the last epoch - more epochs should help")
else:
    print("verdict: converged - keep best.pt")
epochs=10 best mAP50-95=0.659 at epoch 10
gain over last 3 epochs: +0.028
val box loss: 1.367 -> 1.045
verdict: still improving at the last epoch - more epochs should help

أفضل حقبة هي الأخيرة، وارتفع mAP50-95 بمقدار 2.8 نقطة خلال الحقبات الثلاث الأخيرة، وما زالت خسارة التحقق تنخفض: توقف هذا التشغيل بعد 10 حقبات مبكرًا، وسيفيد تشغيل أطول أو ضبط دقيق. استخدم الإشارات الثلاث نفسها في علامة التبويب الفرعية Charts لأي تشغيل على Platform: موضع أفضل حقبة، ومقدار التحسن الأخير، واتجاه خسارة التحقق.

اضبط النموذج بدقة انطلاقًا من نموذج سابق#

اختر نموذجك السابق ضمن My Models ليكون النموذج الأساسي؛ فتنشئ Platform نموذجًا جديدًا يبدأ من نقطة التحقق هذه وتُبقي النموذج القديم دون تغيير. تنصح التوصية المعتادة باستخدام معدل تعلّم أقل، لكن التدريب باستخدام optimizer: auto الافتراضي يختار المحسّن ومعدل التعلّم بنفسه ويتجاهل lr0. وتوضح وحدة التحكم ذلك في الأسطر الأولى:

optimizer: 'optimizer=auto' found, ignoring 'lr0=0.01' and determining best 'optimizer' and 'lr0' automatically...
optimizer: AdamW(lr=0.002, momentum=0.9) with parameter groups 114 weight(decay=0.0), 126 weight(decay=0.0005), 126 bias(decay=0.0)

عيّن optimizer صراحةً في Advanced Settings ليُعتمد هذا الإعداد. يسجل الضبط الدقيق لنموذج الحبوب لمدة 5 حقبات إضافية باستخدام optimizer: SGD وlr0: 0.001 ما يلي:

optimizer: SGD(lr=0.001, momentum=0.937) with parameter groups 114 weight(decay=0.0), 126 weight(decay=0.0005), 126 bias(decay=0.0)
                   all         23        399      0.969      0.962      0.983      0.687

ارتفع mAP50-95 من 0.659 إلى 0.687. ستُخضع هذا النموذج المرشح لبوابة ترقية في الدرس التالي.

مربع حوار Train New Model في Ultralytics Platform مع توسيع Advanced Settings، ويعرض محرر YAML إعدادات التدريب مثل epochs وbatch وimgsz وpatience وseed

لإعادة تشغيل سابق، افتح جدول Training Configuration في صفحة النموذج، واختر Copy JSON، ثم الصقه في Advanced Settings. يتناول دليل الضبط الدقيق تجميد الطبقات، ويتناول دليل ضبط المعلمات الفائقة عمليات المسح المنهجية.

مواطن الخلل#

تجاهل معدل التعلّم في الضبط الدقيق

العَرَض: تضبط lr0: 0.001، وتعرض وحدة التحكم ignoring 'lr0=...'. الحل: مع optimizer: auto، يختار التدريب المحسِّن ومعدل التعلّم بنفسه. اضبط optimizer على SGD أو AdamW إلى جانب lr0، ثم تحقّق من سطر optimizer: في وحدة التحكم.

الدفع مقابل وحدة GPU لا تُستغل بالكامل

العَرَض: تعرض علامة التبويب الفرعية System استغلالًا لوحدة GPU أقل بكثير من 80% طوال مدة التشغيل. الحل: عنق الزجاجة هو تحميل البيانات، لا وحدة GPU، لذا لن يؤدي استخدام وحدة GPU أسرع إلا إلى زيادة التكلفة. اختر وحدة GPU أرخص، أو زِد حجم الدفعة إذا كانت الذاكرة تسمح بذلك.

مواصلة التدريب بعد فوات الأوان

العَرَض: بقيت قيمة mAP50-95 للتحقق ثابتة طوال 10 عصور، بينما أخذت خسارة التحقق ترتفع تدريجيًا. الحل: ألغِ التدريب. ستُحفظ أفضل نقطة تحقق حتى الآن، وسيأتي التحسن التالي من البيانات (الدرسان 3 و4)، لا من زيادة عدد العصور.

جرّبه

درّب نموذج YOLO26n على مجموعة بياناتك (سحابيًا باستخدام Save Dataset Version، أو محليًا مع البث باستخدام project="username/project") لمدة 10–20 حقبة. شغّل read_run.py على results.csv الخاص به، أو طبّق الفحوصات الثلاث نفسها على علامة التبويب الفرعية Charts. ثم اضبطه بدقة باستخدام optimizer وlr0 محددين صراحةً، وتأكد من أن سطر optimizer: في وحدة التحكم يستخدم قيمك.

متى يُعدّ مكتملًا
تكون قد أتممت الدرس عند تحقق جميع الشروط التالية.
  • يوجد تشغيل مكتمل في مشروعك على Platform، مرتبط بإصدار مجموعة بيانات أو بمجموعة بيانات ul://.

  • دوّنت حكمك على التشغيل (إيقاف أو متابعة أو الاحتفاظ) والأرقام الثلاثة التي تبرره.

  • تعرض وحدة التحكم لتشغيل الضبط الدقيق المحسّن ومعدل التعلّم اللذين اخترتهما، لا optimizer=auto.

عرض الحل

الإجابة العملية على نموذج الحبوب الطبية: يبلغ خط الأساس، الذي استمر 10 حقبات، ذروته عند الحقبة 10 مع mAP50-95 يبلغ 0.659، بزيادة قدرها +0.028 خلال الحقبات الثلاث الأخيرة، بينما انخفضت خسارة مربعات التحقق من 1.367 إلى 1.045؛ لذا فالقرار هو «المتابعة». بدلًا من إعادة التدريب من الصفر، أجرِ ضبطًا دقيقًا: النموذج الأساسي v1-baseline ضمن My Models، و5 حقبات، وإعدادا Advanced Settings optimizer: SGD وlr0: 0.001. تؤكد وحدة التحكم SGD(lr=0.001, momentum=0.937)، ويصل mAP50-95 إلى 0.687. تبلغ التكلفة على GPU الافتراضي بضعة سنتات؛ وتعرض بطاقة التكلفة التقدير قبل النقر على Start Training، فيما يعرض Settings > Billing الرسوم الفعلية بعد ذلك.

ما الخطوة التالية

لديك خط أساس ونموذج مرشح. في الخطوة التالية، ستقرر باستخدام بوابات محددة مسبقًا ما إذا كان النموذج المرشح يستحق الإطلاق.

سجّل الدخول لحفظ التقدم