دليل Ultralytics YOLO لضبط المعلمات الفائقة
مقدمة
لا يُعد ضبط المعلمات الفائقة مجرد عملية إعداد تُجرى مرة واحدة، بل هو عملية تكرارية تهدف إلى تحسين مقاييس أداء نموذج التعلم الآلي، مثل الدقة والضبط والاسترجاع. وفي سياقYOLO Ultralytics قد تتراوح هذه المعلمات الفائقة بين معدل التعلم وتفاصيل البنية، مثل عدد الطبقات أو أنواع دوال التنشيط المستخدمة. كما تدعم Ultralytics التدريب السحابي مع إمكانية تكوين المعلمات الفائقة وتتبع المقاييس في الوقت الفعلي.
شاهد: كيفية ضبط المعلمات الفائقة لتحسين أداء النموذج 🚀
ما هي المعلمات الفائقة؟
المعلمات الفائقة هي إعدادات هيكلية عالية المستوى للخوارزمية. يتم تعيينها قبل مرحلة التدريب وتبقى ثابتة خلالها. فيما يلي بعض المعلمات الفائقة التي يتم ضبطها بشكل شائع في Ultralytics YOLO:
- معدل التعلم
lr0: يحدد حجم الخطوة في كل تكرار أثناء التحرك نحو الحد الأدنى في دالة الخسارة (loss function). - حجم الدفعة
batch: عدد الصور التي تتم معالجتها في وقت واحد في تمريرة أمامية. - عدد الحقب
epochs: الحقبة هي عبارة عن تمريرة كاملة للأمام والخلف لجميع أمثلة التدريب. - تفاصيل معمارية محددة: مثل عدد القنوات وعدد الطبقات وأنواع وظائف التنشيط وما إلى ذلك.

للحصول على قائمة كاملة بمعلمات التضخيم الفائقة المستخدمة في YOLO26، يرجى الرجوع إلى صفحة التكوينات.
التطور الطفري الجيني
تستخدم Ultralytics YOLO الخوارزميات الجينية لتحسين المعلمات الفائقة. الخوارزميات الجينية مستوحاة من آلية الانتقاء الطبيعي وعلم الوراثة.
- التقاطع: تجمع كل عملية تكرار بين جينات من ما يصل إلى تسعة من التكوينات الأعلى لياقةً التي تمت ملاحظتها حتى الآن، وذلك باستخدام تقاطع BLX-α مع اختيار الآباء المرجح باللياقة.
- التحوير: يتم بعد ذلك إحداث اضطراب في المرشح المعاد تجميعه عن طريق عامل مضاعف يتبع توزيع لوغاريتمي عادي يُطبق على كل معلمة فائقة (بإحتمال 0.5 لكل معلمة). تتناقص قوة التحوير «سيغما» بشكل خطي من 0.2 إلى 0.1 خلال أول 300 تكرار، وبالتالي يستكشف الخوارزمية نطاقًا واسعًا في البداية ثم يقوم بالتحسين مع اقترابه من نقطة التقارب. لا يحتوي التكرار 1 على أي آباء للتبادل الجيني ويستخدم المعلمات الفائقة الافتراضية للتدريب كخط أساس.
التحضير لضبط المعلمات الفائقة
قبل أن تبدأ عملية الضبط، من المهم:
- تحديد المقاييس: حدد المقاييس التي ستستخدمها لتقييم أداء النموذج. يمكن أن يكون هذا AP50 أو F1-score أو غير ذلك.
- تحديد ميزانية الضبط: حدد مقدار موارد الحوسبة التي ترغب في تخصيصها. يمكن أن يكون ضبط المعلمات الفائقة مكلفًا من الناحية الحسابية.
الخطوات المتضمنة
تهيئة المعلمات الفائقة
ابدأ بمجموعة معقولة من المعلمات الفائقة الأولية. يمكن أن تكون هذه إما المعلمات الفائقة الافتراضية التي تم تعيينها بواسطة Ultralytics YOLO أو شيء يعتمد على معرفتك بالمجال أو التجارب السابقة.
تغيير المعلمات الفائقة
استخدم _mutate الأسلوب لإنتاج مجموعة جديدة من المعلمات الفائقة بناءً على المجموعة الحالية. إن فئة الموالف يتعامل مع هذه العملية تلقائيًا.
تدريب النموذج
يتم إجراء التدريب باستخدام المجموعة المتغيرة من المعلمات الفائقة. ثم يتم تقييم أداء التدريب باستخدام المقاييس التي تختارها.
تقييم النموذج
استخدم مقاييس مثل AP50 أو F1-score أو المقاييس المخصصة لتقييم أداء النموذج. تساعد عملية التقييم في تحديد ما إذا كانت المعلمات الفائقة الحالية أفضل من المعلمات السابقة.
تسجيل النتائج
من الضروري تسجيل كل من مقاييس الأداء والمعلمات الفائقة المرتبطة بها للاسترشاد بها في المستقبل. يقوم Ultralytics YOLO بحفظ هذه النتائجYOLO بتنسيق NDJSON.
تكرار
تتكرر العملية حتى يتم الوصول إلى العدد المحدد من التكرارات أو يصبح مقياس الأداء مرضيًا. تعتمد كل تكرار على المعرفة المكتسبة من التشغيلات السابقة.
وصف مساحة البحث الافتراضية
يسرد الجدول التالي معلمات مساحة البحث الافتراضية لضبط المعلمات الفائقة في YOLO26. لكل معلمة نطاق قيمة محدد معرف بواسطة صف (tuple) (min, max).
| المعلمة | النوع | نطاق القيمة | الوصف |
|---|---|---|---|
lr0 | float | (1e-5, 1e-2) | معدل التعلم الأولي في بداية التدريب. القيم الأقل توفر تدريبًا أكثر استقرارًا ولكن تقاربًا أبطأ. |
lrf | float | (0.01, 1.0) | معامل معدل التعلم النهائي كجزء من lr0. يتحكم في مقدار انخفاض معدل التعلم أثناء التدريب |
momentum | float | (0.7, 0.98) | عامل زخم SGD. تساعد القيم الأعلى في الحفاظ على اتجاه متدرج ثابت ويمكن أن تسرع التقارب |
weight_decay | float | (0.0, 0.001) | معامل L2 regularization لمنع overfitting. القيم الأكبر تفرض regularization أقوى |
warmup_epochs | float | (0.0, 5.0) | عدد الحقب للإحماء الخطي لمعدل التعلم. يساعد على منع عدم استقرار التدريب المبكر |
warmup_momentum | float | (0.0, 0.95) | الزخم الأولي خلال مرحلة التسخين. يزداد تدريجيًا إلى قيمة الزخم النهائية. |
box | float | (1.0, 20.0) | وزن فقدان مربع الإحاطة في دالة الفقدان الكلية. يوازن بين انحدار المربع مقابل التصنيف |
cls | float | (0.1, 4.0) | وزن فقدان التصنيف في دالة الفقدان الكلية. تؤكد القيم الأعلى على التنبؤ الصحيح بالفئة |
cls_pw | float | (0.0, 1.0) | قوة ترجيح الفئات لمعالجة عدم توازن الفئات. القيم الأعلى تزيد من وزن الفئات النادرة |
dfl | float | (0.4, 12.0) | وزن DFL (Distribution Focal Loss) في دالة الخسارة الكلية. تؤكد القيم الأعلى على تحديد موقع الصندوق المحيط (bounding box) بدقة. |
hsv_h | float | (0.0, 0.1) | نطاق زيادة تدرج الألوان العشوائي في مساحة ألوان HSV. يساعد النموذج على التعميم عبر اختلافات الألوان |
hsv_s | float | (0.0, 0.9) | نطاق زيادة التشبع العشوائي في مساحة HSV. يحاكي ظروف الإضاءة المختلفة |
hsv_v | float | (0.0, 0.9) | نطاق زيادة القيمة (السطوع) العشوائي. يساعد النموذج على التعامل مع مستويات التعرض المختلفة |
degrees | float | (0.0, 45.0) | الحد الأقصى لزيادة التدوير بالدرجات. يساعد النموذج على أن يصبح ثابتًا بالنسبة لاتجاه الكائن |
translate | float | (0.0, 0.9) | الحد الأقصى لزيادة الإزاحة كجزء من حجم الصورة. يحسن المتانة لموضع الكائن |
scale | float | (0.0, 0.95) | نطاق زيادة التحجيم العشوائي. يساعد النموذج على اكتشاف الكائنات بأحجام مختلفة |
shear | float | (0.0, 10.0) | الحد الأقصى لزيادة القص بالدرجات. يضيف تشوهات شبيهة بالمنظور إلى صور التدريب |
perspective | float | (0.0, 0.001) | نطاق زيادة المنظور العشوائي. يحاكي زوايا رؤية مختلفة |
flipud | float | (0.0, 1.0) | احتمالية قلب الصورة عموديًا أثناء التدريب. مفيد للصور العلوية/الجوية. |
fliplr | float | (0.0, 1.0) | احتمالية قلب الصورة الأفقية. يساعد النموذج على أن يصبح ثابتًا تجاه اتجاه الكائن |
bgr | float | (0.0, 1.0) | احتمالية استخدام تعزيز BGR، الذي يبدل قنوات الألوان. يمكن أن يساعد في تحقيق ثبات اللون. |
mosaic | float | (0.0, 1.0) | احتمالية استخدام زيادة بيانات الفسيفساء، والتي تجمع 4 صور. مفيد بشكل خاص للكشف عن الأجسام الصغيرة. |
mixup | float | (0.0, 1.0) | احتمالية استخدام زيادة بيانات المزج، والتي تدمج صورتين. يمكن أن يحسن من قوة النموذج. |
cutmix | float | (0.0, 1.0) | احتمالية استخدام تقنية "كتميكس" (Cutmix) للتكبير. تجمع بين مناطق الصورة مع الحفاظ على السمات المحلية |
copy_paste | float | (0.0, 1.0) | احتمالية استخدام زيادة بيانات النسخ واللصق. يساعد على تحسين أداء تجزئة الكائنات. |
close_mosaic | float | (0.0, 10.0) | يوقف استخدام نمط الموزاييك في آخر N دورات لتثبيت عملية التدريب قبل اكتمالها |
مثال على مساحة بحث مخصصة
إليك كيفية تحديد نطاق البحث واستخدام model.tune() دالة (method) للاستفادة من Tuner فئة لضبط المعلمات الفائقة لـ YOLO26n على COCO8 لمدة 30 حقبة باستخدام مُحسِّن AdamW وتخطي الرسم، وحفظ نقاط التفتيش، والتحقق من الصحة باستثناء الحقبة النهائية لضبط أسرع.
تحذير
هذا المثال هو للتوضيح فقط. نادرًا ما تكون المعلمات الفائقة المشتقة من عمليات الضبط قصيرة المدى أو صغيرة النطاق مثالية للتدريب في العالم الحقيقي. من الناحية العملية، يجب إجراء الضبط في ظل إعدادات مماثلة للتدريب الكامل - بما في ذلك مجموعات البيانات والحقب والزيادات المماثلة - لضمان نتائج موثوقة وقابلة للتحويل. قد يؤدي الضبط السريع إلى تحيز المعلمات نحو التقارب الأسرع أو مكاسب التحقق قصيرة الأجل التي لا يمكن تعميمها.
مثال
from ultralytics import YOLO
# Initialize the YOLO model
model = YOLO("yolo26n.pt")
# Define search space
search_space = {
"lr0": (1e-5, 1e-2),
"degrees": (0.0, 45.0),
}
# Tune hyperparameters on COCO8 for 30 epochs
model.tune(
data="coco8.yaml",
epochs=30,
iterations=300,
optimizer="AdamW",
space=search_space,
plots=False,
save=False,
val=False,
)
استئناف جلسة ضبط المعلمات الفائقة المتوقفة
يمكنك استئناف جلسة ضبط المعلمات الفائقة المتقطعة عن طريق تمرير resume=True: يمكنك اختياريًا تمرير الدليل name يستخدم تحت runs/{task} للاستئناف. وإلا، فإنه سيستأنف الجلسة الأخيرة التي تمت مقاطعتها. تحتاج أيضًا إلى تقديم جميع حجج التدريب السابقة بما في ذلك data, epochs, iterations و space.
استخدام resume=True مع model.tune()
from ultralytics import YOLO
# Define a YOLO model
model = YOLO("yolo26n.pt")
# Define search space
search_space = {
"lr0": (1e-5, 1e-2),
"degrees": (0.0, 45.0),
}
# Resume previous run
results = model.tune(data="coco8.yaml", epochs=50, iterations=300, space=search_space, resume=True)
# Resume tuning run with name 'tune_exp'
results = model.tune(data="coco8.yaml", epochs=50, iterations=300, space=search_space, name="tune_exp", resume=True)
النتائج
بعد إكمال عملية ضبط المعلمات الفائقة بنجاح، ستحصل على العديد من الملفات والأدلة التي تغلف نتائج الضبط. يصف ما يلي كل منها:
هيكل الملف
إليك الشكل الذي سيبدو عليه هيكل دليل النتائج. أدلة التدريب مثل train1/ تحتوي على تكرارات ضبط فردية، أي نموذج واحد مدرب بمجموعة واحدة من المعلمات الفائقة. الـ tune/ يحتوي الدليل على نتائج الضبط من جميع تدريبات النموذج الفردية:
runs/
└── detect/
├── train1/
├── train2/
├── ...
└── tune/
├── best_hyperparameters.yaml
├── tune_fitness.png
├── tune_results.ndjson
├── tune_scatter_plots.png
└── weights/
├── last.pt
└── best.pt
أوصاف الملفات
best_hyperparameters.yaml
يحتوي ملف YAML هذا على أفضل المعلمات الفائقة أداءً التي تم العثور عليها أثناء عملية الضبط. يمكنك استخدام هذا الملف لتهيئة التدريبات المستقبلية بهذه الإعدادات المحسنة.
- تنسيق: YAML
- الاستخدام: نتائج المعلمات الفائقة
مثال:
# 558/900 iterations complete ✅ (45536.81s) # Results saved to /usr/src/ultralytics/runs/detect/tune # Best fitness=0.64297 observed at iteration 498 # Best fitness metrics are {'metrics/precision(B)': 0.87247, 'metrics/recall(B)': 0.71387, 'metrics/mAP50(B)': 0.79106, 'metrics/mAP50-95(B)': 0.62651, 'val/box_loss': 2.79884, 'val/cls_loss': 2.72386, 'val/dfl_loss': 0.68503, 'fitness': 0.64297} # Best fitness model is /usr/src/ultralytics/runs/detect/train498 # Best fitness hyperparameters are printed below. lr0: 0.00269 lrf: 0.00288 momentum: 0.73375 weight_decay: 0.00015 warmup_epochs: 1.22935 warmup_momentum: 0.1525 box: 18.27875 cls: 1.32899 dfl: 0.56016 hsv_h: 0.01148 hsv_s: 0.53554 hsv_v: 0.13636 degrees: 0.0 translate: 0.12431 scale: 0.07643 shear: 0.0 perspective: 0.0 flipud: 0.0 fliplr: 0.08631 mosaic: 0.42551 mixup: 0.0 copy_paste: 0.0
tune_fitness.png
هذا رسم بياني يوضح العلاقة بين مقياس الملاءمة وعدد مرات التكرار. وهو يساعدك على تصور أداء الخوارزمية الجينية بمرور الوقت.
- تنسيق: PNG
- الاستخدام: تصور الأداء

تتضمن الحبكة:
- علامة واحدة لكل تكرار لكل مجموعة بيانات، لذا فإن التشغيل الذي يشمل مجموعة بيانات واحدة يعرض نقطة واحدة لكل تكرار، بينما يعرض التشغيل الذي يشمل مجموعات بيانات متعددة نقطة واحدة لكل مجموعة بيانات في كل تكرار.
- خط "المتوسط المُعدَّل" المنقط يُحسب على أنه تنعيم غاوسي (
sigma=3) مقارنة بقيم اللياقة في المستوى الأعلى لكل تكرار.
tune_results.ndjson
ملف NDJSON يحتوي على النتائج التفصيلية لكل دورة من دورات الضبط. يمثل كل سطر كائن JSON واحدًا يتضمن الملاءمة الإجمالية، والمعلمات الفائقة التي تم ضبطها، والمقاييس الخاصة بكل مجموعة بيانات. ويستخدم كل من الضبط لمجموعة بيانات واحدة والضبط لعدة مجموعات بيانات نفس تنسيق الملف.
- التنسيق: NDJSON
- الاستخدام: تتبع نتائج كل تكرار.
- مثال:
فيما يلي مثال مكتوب بطريقة منظمة لتسهيل القراءة. أما في النص الفعلي .ndjson في الملف، يتم تخزين كل كائن في سطر واحد.
{
"iteration": 1,
"fitness": 0.48628,
"hyperparameters": {
"lr0": 0.01,
"lrf": 0.01,
"momentum": 0.937,
"weight_decay": 0.0005
},
"datasets": {
"coco8": {
"metrics/precision(B)": 0.65666,
"metrics/recall(B)": 0.85,
"metrics/mAP50(B)": 0.85086,
"metrics/mAP50-95(B)": 0.64104,
"val/box_loss": 1.57958,
"val/cls_loss": 1.04986,
"val/dfl_loss": 1.32641,
"fitness": 0.64104
},
"coco8-grayscale": {
"metrics/precision(B)": 0.6582,
"metrics/recall(B)": 0.51667,
"metrics/mAP50(B)": 0.59106,
"metrics/mAP50-95(B)": 0.33152,
"val/box_loss": 1.95424,
"val/cls_loss": 1.64059,
"val/dfl_loss": 1.70226,
"fitness": 0.33152
}
},
"save_dirs": {
"coco8": "runs/detect/coco8",
"coco8-grayscale": "runs/detect/coco8-grayscale"
}
}
المستوى الأعلى fitness هو المتوسط الحسابي لكل مجموعة بيانات fitness القيم. بالنسبة لضبط مجموعة البيانات الواحدة، فإن datasets يحتوي القاموس على مدخل واحد fitness يساوي المستوى الأعلى fitness. يتم تسجيل كائن JSON واحد لكل تكرار مكتمل. الفعلي save_dirs المسارات مطلقة؛ وقد تم اختصارها أعلاه لتسهيل القراءة.
tune_scatter_plots.png
يحتوي هذا الملف على مخططات مبعثرة تم إنشاؤها من tune_results.ndjson، مما يساعدك على تصور العلاقات بين المعلمات الفائقة المختلفة ومقاييس الأداء. المعلمات الفائقة التي تكون قيمتها الافتراضية 0 (على سبيل المثال، degrees و shear (أدناه) قد تتطور ببطء شديد انطلاقاً من بدايتها الأولية، لأن عامل الطفرة التكاثرية لا يملك سوى القليل جداً ليتوسع منه انطلاقاً من قيمة تقارب الصفر.
- تنسيق: PNG
- الاستخدام: تحليل البيانات الاستكشافي

weights/
يحتوي هذا الدليل على نماذج PyTorch المحفوظة للتكرارات الأخيرة والأفضل أثناء عملية ضبط المعلمات الفائقة.
last.pt: last.pt هي الأوزان من الحقبة الأخيرة من التدريب.best.pt: أوزان best.pt للتكرار الذي حقق أفضل درجة لياقة.
باستخدام هذه النتائج، يمكنك اتخاذ قرارات أكثر استنارة لعمليات تدريب وتحليلات النموذج المستقبلية. لا تتردد في الرجوع إلى هذه النواتج لفهم مدى جودة أداء النموذج الخاص بك وكيف يمكنك تحسينه بشكل أكبر.
الخلاصة
YOLO عملية ضبط المعلمات الفائقة في Ultralytics YOLO بالبساطة والفعالية في آن واحد، وذلك بفضل النهج القائم على الخوارزمية الجينية الذي يجمع بين تقاطع BLX-α والتحور اللوغاريتمي-الطبيعي. وسيساعدك اتباع الخطوات الموضحة في هذا الدليل على ضبط نموذجك بشكل منهجي لتحقيق أداء أفضل.
مزيد من القراءة
- تحسين المعلمات الفائقة في ويكيبيديا
- دليل تطوير المعلمات الفائقة في YOLOv5
- الضبط الفعال للمعاملات الفائقة باستخدام Ray Tune و YOLO26
للحصول على رؤى أعمق، يمكنك استكشاف Tuner صنف شفرة المصدر والوثائق المصاحبة. إذا كانت لديك أي أسئلة أو طلبات ميزات أو كنت بحاجة إلى مزيد من المساعدة، فلا تتردد في التواصل معنا على GitHub أو Discord.
الأسئلة الشائعة
كيف يمكنني تحسين معدل التعلم لـ Ultralytics YOLO أثناء ضبط المعلمات الفائقة؟
لتحسين معدل التعلم لـ Ultralytics YOLO، ابدأ بتعيين معدل تعلم أولي باستخدام lr0 المعلمة. تتراوح القيم الشائعة من 0.001 إلى 0.01. خلال عملية ضبط المعلمات الفائقة، سيتم تغيير هذه القيمة للعثور على الإعداد الأمثل. يمكنك الاستفادة من model.tune() دالة (method) لأتمتة هذه العملية. على سبيل المثال:
مثال
from ultralytics import YOLO
# Initialize the YOLO model
model = YOLO("yolo26n.pt")
# Tune hyperparameters on COCO8 for 30 epochs
model.tune(data="coco8.yaml", epochs=30, iterations=300, optimizer="AdamW", plots=False, save=False, val=False)
لمزيد من التفاصيل، تحقق من صفحة تهيئة Ultralytics YOLO.
ما هي فوائد استخدام الخوارزميات الجينية لضبط المعلمات الفائقة في YOLO26؟
توفر الخوارزميات الجينية في Ultralytics YOLO26 طريقة قوية لاستكشاف مساحة المعلمات الفائقة، مما يؤدي إلى أداء نموذج محسن للغاية. تشمل الفوائد الرئيسية:
- البحث الفعال: يجمع تهجين BLX-α بين جينات الوالدين الأكثر ملاءمة، بينما تعمل الطفرة اللوغاريتمية-الطبيعية على إحداث اضطراب في النتيجة لاكتشاف مرشحين جدد.
- تجنب الحدود الدنيا المحلية: من خلال إدخال العشوائية، فإنها تساعد في تجنب الحدود الدنيا المحلية، مما يضمن تحسينًا عالميًا أفضل.
- مقاييس الأداء: تتكيف هذه المقاييس بناءً على درجة الملاءمة الخاصة بالمهمة (mAP50 بالنسبة للكشف).
لمعرفة كيف يمكن للخوارزميات الجينية تحسين المعلمات الفائقة، تحقق من دليل تطوير المعلمات الفائقة.
ما هي المدة التي تستغرقها عملية ضبط المعلمات الفائقة لـ Ultralytics YOLO؟
يعتمد الوقت المطلوب لضبط المعلمات الفائقة باستخدام Ultralytics YOLO بشكل كبير على عدة عوامل مثل حجم مجموعة البيانات، وتعقيد بنية النموذج، وعدد التكرارات، والموارد الحاسوبية المتاحة. على سبيل المثال، قد يستغرق ضبط YOLO26n على مجموعة بيانات مثل COCO8 لمدة 30 حقبة عدة ساعات إلى أيام، اعتمادًا على الأجهزة.
لإدارة وقت الضبط بفعالية، حدد ميزانية ضبط واضحة مسبقًا (رابط قسم داخلي). يساعد هذا في تحقيق التوازن بين تخصيص الموارد وأهداف التحسين.
ما هي المقاييس التي يجب أن أستخدمها لتقييم أداء النموذج أثناء ضبط المعلمات الفائقة في YOLO؟
عند تقييم أداء النموذج أثناء ضبط المعلمات الفائقة في YOLO، يمكنك استخدام العديد من المقاييس الرئيسية:
- AP50: متوسط الدقة عند عتبة IoU تبلغ 0.50.
- F1-Score: المتوسط التوافقي للدقة والاسترجاع.
- الدقة والاسترجاع: مقاييس فردية تشير إلى دقة النموذج في تحديد الإيجابيات الحقيقية مقابل الإيجابيات الخاطئة والسلبيات الخاطئة.
تساعدك هذه المقاييس على فهم الجوانب المختلفة لأداء النموذج الخاص بك. راجع دليل مقاييس أداء Ultralytics YOLO للحصول على نظرة عامة شاملة.
هل يمكنني استخدام Ray Tune لتحسين المعلمات الفائقة المتقدم مع YOLO26؟
نعم، يتكامل Ultralytics YOLO26 مع Ray Tune لتحسين المعلمات الفائقة المتقدم. يقدم Ray Tune خوارزميات بحث متطورة مثل التحسين البايزي (Bayesian Optimization) و Hyperband، بالإضافة إلى إمكانيات التنفيذ المتوازي لتسريع عملية الضبط.
لاستخدام Ray Tune مع YOLO26، ما عليك سوى تعيين use_ray=True في model.tune() استدعاء الأسلوب. لمزيد من التفاصيل والأمثلة، تحقق من دليل تكامل Ray Tune.