timm documentation
HParams
HParams
Yıllar boyunca, kütüphaneler ve modeller evrildikçe birçok timm modeli çeşitli hiperparametrelerle eğitildi. Her bir örneğin kaydına sahip değilim ancak çok iyi bir başlangıç noktası olarak hizmet edebilecek birçok örneğin kaydını tuttum.
Kaydedilmiş çalıştırmalar için config dosyası gists ile başlayın veya bir YAML dosyasına kopyalayabileceğiniz yapılandırmalar için aşağıdaki seçili tariflere göz atın. Eğitim betiği örnekleri, bunların komut satırı karşılıklarını gösterir.
Etiketler
Çoğu timm ile eğitilmiş modelin, yıllar boyunca kullandığım hparam ailesi/sürümüyle (yaklaşık olarak) ilişkili olan ön eğitilmiş etiketinde bir tanımlayıcı bulunur.
Tarif ailesi bir ipucudur, eksiksiz bir yapılandırma değildir. Bir yapılandırma seçerken tam kontrol noktası adını, eğitim veri setini ve çözünürlüğü eşleştirin. Örneğin, vit_medium_patch16_reg4_gap_256.sbb_in1k ImageNet-1k üzerinde eğitilirken, .sbb_in12k_ft_in1k ImageNet-12k ön eğitiminin ardından ImageNet-1k ince ayarını belirtir. Bazı etiketler bir aile adı yerine bir zaman çizelgesi ve çözünürlük kodlar: MobileNetV4’ün e500_r256_in1k etiketi, ra4 etikette bulunmamasına rağmen ra4 ailesine aittir.
| Etiket(ler) | Açıklama | Optimizatör | LR Zaman Çizelgesi | Diğer Notlar |
|---|---|---|---|---|
a1h | ResNet Strikes Back A1 tarifi temel alınarak | LAMB | Isınma ile kosinüs | Kâğıttaki A1 tarifine kıyasla daha güçlü dropout, stochastic depth ve RandAugment |
ah | ResNet Strikes Back A1 tarifi temel alınarak | LAMB | Isınma ile kosinüs | CutMix yok. Kağıttaki A1 tarifine göre daha güçlü dropout, stochastic depth ve RandAugment |
a1, a2, a3 | ResNet Geri Dönüyor A{1,2,3} tarifi | BCE kaybıyla LAMB | Isınma ile kosinüs | — |
b1, b2, b1k, b2k | ResNet Strikes Back B tarifesine (eşdeğeri timm RA2 tarifeleri) dayalı | RMSProp (TF 1.0 davranışı) | Isınma ile adım (merdivenli üstel azalma) | — |
c, c1, c2, c3 | ResNet Strikes Back C tariflerine dayalı | AGC ile SGD (Nesterov) | Isınma ile kosinüs | — |
ch | ResNet Strikes Back C tariflerine dayalı | AGC ile SGD (Nesterov) | Isınma ile kosinüs | Kâğıttaki C1/C2 tariflerinden daha güçlü dropout, stochastic depth ve RandAugment |
d, d1, d2 | ResNet Strikes Back D tarifi tabanlı | BCE kaybıyla AdamW | Isınma ile kosinüs | — |
sw | ConvNeXt ve hibrit modellerde de kullanılan DeiT / Swin tarzı eğitim/ön-eğitim tarifleri | Genellikle gradyan kırpma ile birlikte kullanılan AdamW | Isınma ile kosinüs | EMA çalışmadan çalışmaya değişir |
sbb | Daha İyi ViT Baz Çizgileri Arama | AdamW veya NAdamW | Isınma ile kosinüs | Tekrarlı artırma; ince ayar için katman çürümesi |
ra, ra2, ra3, racm, raa | RandAugment tarifleri. EfficientNet RandAugment tariflerinden ilham alınmıştır. ResNet Strikes Back makalesindeki B tarifiyle kapsanır. | RMSProp (TF 1.0 davranışı), EMA | Isınma ile adım (merdivenli üstel azalma) | — |
ra4 | RandAugment v4. MobileNetV4 hparams'inden ilham alınmıştır. | AdamW veya NAdamW, EMA | Isınma ile kosinüs | Uzun süreli ResNet tariflerini içerir; optimizör betaları modele göre değişir |
am | AugMix tarifi | JSD kaybı ile SGD (Nesterov) | Isınma ile kosinüs | — |
ram | AugMix (RandAugment ile) tarifi | JSD kaybı ile SGD (Nesterov) | Isınma ile kosinüs | — |
bt | Bag-of-Tricks tarifi | SGD (Nesterov) | Isınma ile kosinüs | — |
Yapılandırma Dosyası Gistleri
Bu koleksiyonlar, orijinal makineler ve eğitim betiği sürümüne özgü ayarları da içeren kaydedilmiş YAML yapılandırmalarını içerir. Bir gist açın, bir modelin YAML dosyasını seçin ve Raw seçeneğini kullanarak dosyayı yerel olarak kaydedin.
| Gist koleksiyonu | Tarif ailesi | İçerik ve orijinal kurulum |
|---|---|---|
| MobileNetV4 ve uzun zaman çizelgesine sahip ResNet'ler | ra4 | Conv ve hibrit MobileNetV4 çalıştırmaları; GPU sayıları dosya adlarında yer alır. Ayrıca 3600-epoch'lu ResNet yapılandırmalarını da içerir. |
| Daha İyi ViT Baz Çizgileri Arama | sbb | ImageNet-1k eğitimi, ImageNet-12k ön eğitimi ve ince ayar; her dosyada belirtildiği üzere 2 veya 4 GPU. |
| ConvNeXt eğitimi ve ince ayarı | ConvNeXt tarifleri | 4 GPU üzerinde Atto/Nano eğitimi; 8 GPU üzerinde Tiny/Small ImageNet-12k'ten ImageNet-1k'ye ince ayar. |
| ViT, ConvNeXt, CoAtNet ve MaxViT | DeiT / Swin tarzı | Karışık eğitim ve ince ayar yapılandırmaları; 4–8 GPU veya TPU cihazı. Birçoğu TFDS kullanır. |
| ResNet-D ve ECA-ResNet RA2 | ra2 | ResNet-18D/34D/50D ve ECA-ResNet-26D; 2 GPU, açık öğrenme oranları. |
| RegNet ve RegNetZ | ra3, SGD + AGC | 8 TPU çekirdeği. Bazı dosyalar model: xxx içeren şablonlardır; README, RegNetY-064 için bir tarif/kontrol noktası uyumsuzluğuna dikkat çeker. |
| Uyarlanabilir gradyan kırpma ile NFNet | SGD + AGC | nfnet.yaml içindeki geçmiş ECA-NFNet-L1 yapılandırması; Apex fusedsgd kullanır. |
| TPU'da MLP modelleri | AdamW | Deneysel bits_and_tpu dalına bağlı geçmiş gMLP, gMixer ve ResMLP çalışmaları. |
| Küçük test modelleri | MobileNetV4 türevi | 1600–1800 epoch'lik zaman çizelgeleriyle küçük test ViT'leri ve ConvNeXt'leri. |
Kaydedilen yapılandırmanın uyarlanması
--config hparams.yaml ile yerel bir dosya geçin; komut satırı argümanları bu değerlerin üzerine yazar. Ayrıntılar için config dosyaları bölümüne bakın.
- Makineniz için
--data-dirparametresini ayarlayın. ImageFolder veri seti için, kayıtlı bir TFDS veri setini de--dataset imagefolder/ile geçersiz kılın. Eğitim,train/vevalidation/altında sınıf alt klasörleri bekler (veya doğrulama dizinini--val-splitile seçin). model,pretrained,num_classesve tüm checkpoint yollarını kontrol edin. İnce ayar yapılandırması, orijinal önceden eğitilmiş checkpoint'ini gerektirir; yalnızca bir mimari adı, bugün farklı varsayılan ağırlıklar seçebilir.- Eski dosyalar,
apex_amp,native_amp,amp_implveyaforce_cpugibi kaldırılmış seçenekleri içerebilir. Günceltrain.py, bilinmeyen anahtarlar hakkında uyarı verir. Aşağıdaki satır içi yapılandırmalar güncel seçenekleri kullanır. Eskifusedadamw/fusedsgdoptimizör adları Apex uygulamalarına atıfta bulunur;adamw/sgdolarak geçiş, o çalışmanın bir uyarlamasıdır.
Sabit boyutlu eğitim için etkin küresel parti boyutu şudur:
batch_size × number of training processes × grad_accum_steps
batch_size işlem başına (genellikle bir GPU) tanımlanır. Sıfırdan farklı bir lr değeri doğrudan kullanılır ve otomatik olarak yeniden ölçeklenmez. lr ayarlanmadığında (YAML'de null), lr_base, lr_base_size değerine göre ölçeklenir. Aşağıdaki AdamW/NAdamW tarifeleri için lr_base_scale: sqrt ayarlayın; SGD/RMSProp için doğrusal ölçekleme yaygın olarak kullanılır. Büyük batch boyutu değişiklikleri yine de ayar gerektirir. Gradyan biriktirme, etkin batch boyutunu korur ancak BatchNorm tarafından görülen batch'i büyütmek için kullanılmaz.
Kozinüs zaman çizelgeleri için warmup_prefix: true, epochs zaman çizelgesinden önce ısınma ekler; cooldown_epochs ise minimum LR'de son bir dönem ekler. Eski bir çalışmayı uyarlarken bu ayarları koruyun.
Seçilen tarifler
Bu örnekler, belirli gist dosyalarındaki eğitim ayarlarını korur ve makine yollarını ile kullanılmayan seçenekleri atlar.
Model etiketleri ön işleme yapılandırmasını sabitler; ağırlıklar yalnızca pretrained: true olduğunda yüklenir.
Aşağıdaki referans doğruluk değerleri, results-imagenet.csv dosyasındaki yayımlanmış denetim noktalarının değerlendirmeleridir,
bu örneklerin yeniden çalıştırılmasından elde edilen ölçümler değildir. Sonuçları karşılaştırırken çözünürlük ve doğrulama kırpma önemlidir.
| Yayınlanan kontrol noktası | Eğitim | Değerlendirme boyutu / kırpma | ImageNet-1k top-1 |
|---|---|---|---|
| mobilenetv4_conv_medium.e500_r256_in1k | ImageNet-1k, 256px | 256 / 0.95; 320 / 1.0 | 79.916%; 80.890% |
| vit_medium_patch16_reg4_gap_256.sbb_in1k | ImageNet-1k, 256px | 256 / 0.95 | 83.466% |
| convnext_tiny.in12k_ft_in1k | ImageNet-12k → ImageNet-1k, 224px | 224 / 0.95; 288 / 1.0 | 84.192%; 84.448% |
MobileNetV4 Conv Medium
Kaynak: mnv4_cm_r256_e500_gpu2.yaml.
Orijinal çalıştırma 2 GPU × 512 görüntü = 1024 küresel batch ile, 0.002 sabit LR kullanılarak yapıldı.
Zamanlama, 20 ısınma epoch'undan sonra 500 cosine epoch'undan oluşur (toplam 520). mobilenetv4.yaml olarak kaydedin:
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: inductorBu örnek, kaynak çalıştırmadaki gibi bfloat16 AMP kullanır; bfloat16 desteği olmayan GPU'larda --amp-dtype float16 kullanın. Derleme istenmediğinde torchcompile atlanabilir.
Kayıtlı ViT Medium
train-vit_medium_reg4-4gpu-in1k.yaml,
aynı zamanda checkpoint’in train_hparams.yaml dosyası olarak da mevcuttur.
Bu SBB çalışması 4 GPU × 256 görüntü = 1024 küresel batch kullandı. Karekök ölçekleme 0.0008 × sqrt(1024 / 512) ≈ 0.001131 verir. 600 epoch’u warmup’ı içerir ve 10 cooldown epoch eklenmiştir.
vit-medium.yaml olarak kaydedin:
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: inductorBaşlatma ayarları (fix_init ve sıfır ile başlatılmış sınıflandırıcı) bu tarifin bir parçasıdır.
Bu özel çalışmada AdamW ve EMA kullanılmamıştır; diğer SBB dosyaları NAdamW veya farklı ön eğitim ayarları kullanır.
ConvNeXt Tiny ince ayarı
Kaynak: hparams_84_00-convnext_tiny.in12k-args.yaml.
convnext_tiny.in12k modelinden başlayın, sınıflandırıcısını 1000 sınıfla değiştirin ve ImageNet-1k üzerinde ince ayar yapın. Orijinal çalıştırma 8 GPU × 512 görüntü = 4096 küresel batch ve 0.0001 sabit LR kullanmıştır. Isınma dahil 75 epoch ve 10 cooldown epoch vardır. Kaynak, 1.0 crop ile değerlendirme yapar; yukarıdaki checkpoint benchmark sonuçları belirtilen değerlendirme crop'larını kullanır.
convnext-tiny-ft.yaml olarak kaydedin:
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Örneğin, kaydedilen MobileNetV4 yapılandırmasını şu komutla başlatın:
torchrun --standalone --nproc_per_node=2 train.py \ --config mobilenetv4.yaml --data-dir /data/imagenet --experiment mobilenetv4-cm
vit-medium.yaml için 4, convnext-tiny-ft.yaml için 8 süreç kullanarak orijinal küresel parti boyutlarını eşleştirin veya parti boyutunu, birikimi ve LR'yi donanımınıza göre ayarlayın.