timm documentation
HParams
HParams
على مر السنين، تم تدريب العديد من نماذج timm باستخدام مجموعة متنوعة من المعلمات الفائقة مع تطور المكتبات والنماذج. لا أملك سجلاً لكل حالة، لكنني سجلت حالات كثيرة يمكن أن تكون نقطة انطلاق جيدة جداً.
ابدأ بـ ملخصات ملفات الإعداد للتشغيلات المسجلة، أو بـ الوصفات المختارة أدناه للحصول على إعدادات يمكنك نسخها إلى ملف YAML. تُظهر أمثلة سكربتات التدريب ما يعادلها في سطر الأوامر.
الوسوم
تحتوي معظم نماذج timm المدرَّبة على معرّف في وسمها المسبق التدريب يربطها (بشكل تقريبي) بعائلة أو إصدار من المعاملات الفائقة التي استخدمتها على مر السنين.
عائلة الوصفة هي تلميح وليس إعدادًا كاملًا. عند اختيار إعداد، طابق اسم نقطة التفتيش الكاملة، ومجموعة بيانات التدريب، والدقة. على سبيل المثال، تم تدريب vit_medium_patch16_reg4_gap_256.sbb_in1k على ImageNet-1k، بينما يُحدد .sbb_in12k_ft_in1k التدريب المسبق على ImageNet-12k متبوعًا بضبط الدقة على ImageNet-1k. بعض الوسوم ترمّز جدولًا ودقة بدلاً من اسم العائلة: فـe500_r256_in1k الخاص بـMobileNetV4 ينتمي إلى عائلة ra4 على الرغم من غياب ra4 من الوسم.
| الوسوم | الوصف | المُحسِّن | جدول معدل التعلم | ملاحظات أخرى |
|---|---|---|---|---|
a1h | بناءً على وصفة ResNet Strikes Back A1 | LAMB | جيب التمام مع الإحماء | معدل إسقاط (dropout) وعمق عشوائي (stochastic depth) وRandAugment أقوى من وصفة A1 في الورقة |
ah | بناءً على وصفة ResNet Strikes Back A1 | LAMB | جيب التمام مع الإحماء | لا يوجد CutMix. معدل Dropout أقوى، وعمق عشوائي، وRandAugment أكثر من وصفة A1 في الورقة |
a1, a2, a3 | ResNet يهاجم مجدداً وصفة A{1,2,3} | LAMB مع خسارة BCE | جيب التمام مع الإحماء | — |
b1, b2, b1k, b2k | بناءً على وصفة ResNet Strikes Back B (المكافئة لوصفات timm RA2) | RMSProp (سلوك TF 1.0) | الخطوة (التحلل الأسي مع الدرجات) مع الإحماء | — |
c, c1, c2, c3 | بناءً على وصفات C من ResNet Strikes Back | SGD (Nesterov) مع AGC | جيب التمام مع الإحماء | — |
ch | بناءً على وصفات C من ResNet Strikes Back | SGD (Nesterov) مع AGC | جيب التمام مع الإحماء | معدل إسقاط (dropout) وعمق عشوائي (stochastic depth) وRandAugment أقوى مما ورد في الورقة C1/C2 |
d, d1, d2 | بناءً على وصفة D من ResNet Strikes Back | AdamW مع خسارة BCE | جيب التمام مع الإحماء | — |
sw | وصفات التدريب/التدريب المسبق على غرار DeiT / Swin، المستخدمة أيضاً في ConvNeXt والنماذج الهجينة | AdamW، غالباً مع قصّ التدرّجات | جيب التمام مع الإحماء | تختلف EMA من تشغيل إلى آخر |
sbb | البحث عن خطوط أساس أفضل لـ ViT | AdamW أو NAdamW | جيب التمام مع الإحماء | الزيادة المتكررة؛ اضمحلال الطبقات للضبط الدقيق |
ra, ra2, ra3, racm, raa | وصفات RandAugment. مستوحاة من وصفات RandAugment في EfficientNet. مغطاة بوصفة B في ResNet Strikes Back. | RMSProp (سلوك TF 1.0)، EMA | الخطوة (التحلل الأسي مع الدرجات) مع الإحماء | — |
ra4 | RandAugment v4. مستوحى من معاملات MobileNetV4. | AdamW أو NAdamW، EMA | جيب التمام مع الإحماء | يتضمن وصفات ResNet ذات الجدول الزمني الطويل؛ تتباين قيم بيتا للمُحسِّن حسب النموذج |
am | وصفة AugMix | SGD (Nesterov) مع خسارة JSD | جيب التمام مع الإحماء | — |
ram | وصفة AugMix (مع RandAugment) | SGD (Nesterov) مع خسارة JSD | جيب التمام مع الإحماء | — |
bt | وصفة حزمة الحيل | SGD (نيستروف) | جيب التمام مع الإحماء | — |
ملخصات ملفات الإعداد
تحتوي هذه المجموعات على إعدادات YAML المسجلة، بما في ذلك الإعدادات الخاصة بالأجهزة الأصلية وإصدار سكربت التدريب. افتح gist واختر ملف YAML الخاص بالنموذج، ثم استخدم Raw لحفظه محليًا.
| مجموعة Gist | عائلة الوصفات | المحتوى والإعداد الأصلي |
|---|---|---|
| MobileNetV4 وشبكات ResNet ذات الجدول الطويل | ra4 | تشغيلات Conv و MobileNetV4 الهجينة؛ عدد وحدات GPU موجود في أسماء الملفات. كما تتضمن إعدادات ResNet لمدة 3600 دورة تدريب. |
| البحث عن خطوط أساس أفضل لـ ViT | sbb | تدريب ImageNet-1k، والتدريب المسبق على ImageNet-12k، وضبط الدقة؛ 2 أو 4 وحدات معالجة رسومية كما هو مذكور في كل ملف. |
| تدريب ConvNeXt وضبطه الدقيق | وصفات ConvNeXt | تدريب Atto/Nano على 4 وحدات معالجة رسومية؛ ضبط دقيق لـ Tiny/Small من ImageNet-12k إلى ImageNet-1k على 8 وحدات معالجة رسومية. |
| ViT وConvNeXt وCoAtNet وMaxViT | DeiT / Swin | إعدادات التدريب والتدريب الدقيق المختلطة؛ 4–8 أجهزة GPU أو TPU. يستخدم العديد منها TFDS. |
| ResNet-D و ECA-ResNet RA2 | ra2 | ResNet-18D/34D/50D و ECA-ResNet-26D؛ 2 وحدات معالجة رسومية، معدلات تعلم صريحة. |
| RegNet و RegNetZ | ra3، SGD + AGC | 8 نوى TPU. بعض الملفات قوالب تحتوي على model: xxx؛ ويذكر ملف README عدم تطابق بين الوصفة ونقطة التفتيش لنموذج RegNetY-064. |
| NFNet مع قص التدرج التكيفي | SGD + AGC | إعداد ECA-NFNet-L1 التاريخي في nfnet.yaml؛ يستخدم Apex fusedsgd. |
| نماذج MLP على TPU | AdamW | تشغيلات تاريخية لـ gMLP وgMixer وResMLP مرتبطة بفرع bits_and_tpu التجريبي. |
| نماذج اختبار صغيرة | مشتق من MobileNetV4 | نماذج اختبار صغيرة من ViT وConvNeXt مع جداول تدريب تتراوح بين 1600 و1800 دورة. |
تكييف إعداد مسجّل
مرر ملفًا محليًا باستخدام --config hparams.yaml؛ حيث تتجاوز حُجج سطر الأوامر قيمه. راجع ملفات الإعداد للتفاصيل.
- اضبط
--data-dirلجهازك. لمجموعة بيانات ImageFolder، تجاوز أيضًا مجموعة بيانات TFDS المحفوظة باستخدام--dataset imagefolder/. يتوقع التدريب وجود مجلدات فرعية للفئات تحتtrain/وvalidation/(أو اختر مجلد التحقق باستخدام--val-split). - تحقق من
modelوpretrainedوnum_classesومسارات نقاط التفتيش. يحتاج تكوين الضبط الدقيق إلى نقطة التفتيش الأصلية المُسبقة التدريب؛ فقد يؤدي اسم البنية وحده إلى اختيار أوزان افتراضية مختلفة اليوم. - قد تحتوي الملفات القديمة على خيارات محذوفة مثل
apex_ampوnative_ampوamp_implأوforce_cpu. يُصدرtrain.pyالحالي تحذيرًا بشأن المفاتيح غير المعروفة. تستخدم الإعدادات المضمنة أدناه الخيارات الحالية. تُشير أسماء المُحسِّنات القديمةfusedadamw/fusedsgdإلى تنفيذاً Apex؛ والانتقال إلىadamw/sgdهو تكييف لتلك الجولة.
في التدريب بحجم ثابت، يكون حجم الدفعة العالمية الفعّال:
batch_size × number of training processes × grad_accum_steps
batch_size لكل عملية (عادةً بطاقة GPU واحدة). يُستخدم lr غير الصفري مباشرةً وهو غير مُعاد قياسه تلقائيًا. عند عدم تعيين lr (أي null في YAML)، يُعاد قياس lr_base نسبةً إلى lr_base_size.
عيّن lr_base_scale: sqrt لوصفات AdamW/NAdamW أدناه؛ يُستخدم القياس الخطي بشكل شائع لـ SGD/RMSProp.
تتطلب تغييرات حجم الدفعة الكبيرة ضبطًا. يحافظ تراكم التدرجات على حجم الدفعة الفعّال لكنه لا يوسّع الدفعة التي تراها BatchNorm.
في جداول جيب التمام، يضيف warmup_prefix: true فترة الإحماء قبل جدول epochs؛ ويضيف cooldown_epochs فترة نهائية عند أدنى معدل تعلم. احتفظ بهذه الإعدادات عند تكييف تشغيل قديم.
وصفات محددة
تحتفظ هذه الأمثلة بإعدادات التدريب من ملفات gist محددة، وتُحذف المسارات الخاصة بالآلات والخيارات غير المستخدمة.
تُثبّت وسوم النموذج (Model tags) إعدادات ما قبل المعالجة؛ ولا يتم تحميل الأوزان إلا عند pretrained: true.
دقتا المرجع أدناه هي تقييمات للنقاط الفاحصة (checkpoints) المنشورة من results-imagenet.csv،
وليس قياسات ناتجة عن إعادة تشغيل هذه الأمثلة. يُعدّ الدقة (Resolution) ومقطع التحقق (validation crop) عاملين مهمين عند مقارنة النتائج.
| نقطة التفتيش المنشورة | التدريب | حجم التقييم / الاقتصاص | أفضل نتيجة من المحاولة الأولى في ImageNet-1k |
|---|---|---|---|
| mobilenetv4_conv_medium.e500_r256_in1k | ImageNet-1k، 256 بكسل | 256 / 0.95; 320 / 1.0 | 79.916%; 80.890% |
| vit_medium_patch16_reg4_gap_256.sbb_in1k | ImageNet-1k، 256 بكسل | 256 / 0.95 | 83.466% |
| convnext_tiny.in12k_ft_in1k | ImageNet-12k ← ImageNet-1k، 224 بكسل | 224 / 0.95; 288 / 1.0 | 84.192%; 84.448% |
MobileNetV4 Conv Medium
Source: mnv4_cm_r256_e500_gpu2.yaml.
The original run used 2 GPUs × 512 images = 1024 global batch, with a fixed LR of 0.002.
The schedule is 20 warmup epochs followed by 500 cosine epochs (520 total). Save as mobilenetv4.yaml:
model: mobilenetv4_conv_medium.e500_r256_in1k
pretrained: false
img_size: 256
crop_pct: 0.95
batch_size: 512
opt: adamw
lr: 0.002
weight_decay: 0.1
clip_grad: 5.0
sched: cosine
sched_on_updates: true
epochs: 500
warmup_epochs: 20
warmup_prefix: true
warmup_lr: 0.0
min_lr: 0.0
cooldown_epochs: 0
aa: rand-m8-inc1-mstd1.0
mixup: 0.2
mixup_prob: 0.8
smoothing: 0.1
reprob: 0.25
remode: pixel
drop: 0.2
drop_path: 0.1
model_ema: true
model_ema_decay: 0.9998
model_ema_warmup: true
dist_bn: reduce
amp: true
amp_dtype: bfloat16
torchcompile: inductorيستخدم هذا المثال bfloat16 AMP كما في التشغيل المصدر؛ استخدم --amp-dtype float16 على وحدات معالجة الرسومات التي لا تدعم bfloat16. يمكن حذف torchcompile عندما لا يكون التجميع مطلوباً.
ViT متوسط مع مسجلات
التدريب
المصدر: train-vit_medium_reg4-4gpu-in1k.yaml،
والمتاح أيضاً على أنه train_hparams.yaml للنقطة المحفوظة.
استخدمت هذه الجولة من SBB أربعة وحدات معالجة رسومية × 256 صورة = دفعة عالمية بحجم 1024. يعطي التدرج الجذري التربيعي 0.0008 × sqrt(1024 / 512) ≈ 0.001131. تتضمن 600 دورة منها فترة إحماء، مع إضافة 10 دورات تبريد.
احفظها باسم vit-medium.yaml:
model: vit_medium_patch16_reg4_gap_256.sbb_in1k
pretrained: false
model_kwargs:
fix_init: true
head_init_scale: 0.0
img_size: 256
crop_pct: 0.95
batch_size: 256
opt: adamw
opt_eps: 1.0e-8
lr: null
lr_base: 0.0008
lr_base_size: 512
lr_base_scale: sqrt
weight_decay: 0.07
clip_grad: 5.0
sched: cosine
sched_on_updates: true
epochs: 600
warmup_epochs: 20
warmup_prefix: false
warmup_lr: 5.0e-7
min_lr: 5.0e-7
cooldown_epochs: 10
aa: rand-m7-inc1-mstd1.0-n3
aug_repeats: 3
color_jitter: 0.0
mixup: 0.8
cutmix: 1.0
smoothing: 0.1
reprob: 0.2
remode: pixel
drop_path: 0.2
model_ema: false
seed: 0
amp: true
amp_dtype: float16
torchcompile: inductorتُعدّ إعدادات التهيئة (fix_init ومصنّف مُهيّأ بقيمة صفرية) جزءاً من هذه الوصفة.
استخدم هذا التشغيل المحدد AdamW دون EMA؛ بينما تستخدم ملفات SBB الأخرى NAdamW أو إعدادات ما قبل التدريب مختلفة.
ضبط نموذج ConvNeXt Tiny
المصدر: hparams_84_00-convnext_tiny.in12k-args.yaml.
ابدأ من convnext_tiny.in12k، واستبدل مُصنِّفه بـ 1000 فئة، ثم اضبطه بدقة على ImageNet-1k. استخدم التشغيل الأصلي 8 وحدات معالجة رسومية × 512 صورة = دفعة عالمية بحجم 4096، ومعدل تعلّم ثابت قدره 0.0001. يتكون من 75 دورة تدريبية تشمل فترة الإحماء، بالإضافة إلى 10 دورات تبريد. يُقيَّم المصدر باستخدام قصّ بمقدار 1.0؛ بينما تستخدم نتائج المعيار المرجعي للملف الفوقي المذكورة أعلاه مقاسات القصّ المُحدَّدة للتقييم.
احفظه باسم convnext-tiny-ft.yaml:
model: convnext_tiny.in12k
pretrained: true
num_classes: 1000
img_size: 224
crop_pct: 1.0
batch_size: 512
grad_checkpointing: true
opt: adamw
lr: 0.0001
weight_decay: 0.05
layer_decay: 0.75
clip_grad: 3.0
sched: cosine
sched_on_updates: false
epochs: 75
warmup_epochs: 10
warmup_prefix: false
warmup_lr: 1.0e-6
min_lr: 5.0e-7
cooldown_epochs: 10
lr_noise: [0.1, 1.0]
aa: rand-m8-inc1-mstd101
mixup: 0.8
cutmix: 1.0
smoothing: 0.1
reprob: 0.3
remode: pixel
drop_path: 0.1
model_ema: true
model_ema_decay: 0.9998
amp: true
amp_dtype: float16على سبيل المثال، شغّل إعداد MobileNetV4 المحفوظ باستخدام:
torchrun --standalone --nproc_per_node=2 train.py \ --config mobilenetv4.yaml --data-dir /data/imagenet --experiment mobilenetv4-cm
استخدم 4 عمليات لـvit-medium.yaml أو 8 لـconvnext-tiny-ft.yaml لمطابقة أحجام الدفعة العالمية الأصلية،
أو اضبط حجم الدفعة والتراكم ومعدل التعلم لتناسب عتادك.