timm documentation

HParams

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

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çıklamaOptimizatörLR Zaman ÇizelgesiDiğer Notlar
a1hResNet Strikes Back A1 tarifi temel alınarakLAMBIsınma ile kosinüsKâğıttaki A1 tarifine kıyasla daha güçlü dropout, stochastic depth ve RandAugment
ahResNet Strikes Back A1 tarifi temel alınarakLAMBIsınma ile kosinüsCutMix yok. Kağıttaki A1 tarifine göre daha güçlü dropout, stochastic depth ve RandAugment
a1, a2, a3ResNet Geri Dönüyor A{1,2,3} tarifiBCE kaybıyla LAMBIsınma ile kosinüs—
b1, b2, b1k, b2kResNet 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, c3ResNet Strikes Back C tariflerine dayalıAGC ile SGD (Nesterov)Isınma ile kosinüs—
chResNet Strikes Back C tariflerine dayalıAGC ile SGD (Nesterov)Isınma ile kosinüsKâğıttaki C1/C2 tariflerinden daha güçlü dropout, stochastic depth ve RandAugment
d, d1, d2ResNet Strikes Back D tarifi tabanlıBCE kaybıyla AdamWIsınma ile kosinüs—
swConvNeXt ve hibrit modellerde de kullanılan DeiT / Swin tarzı eğitim/ön-eğitim tarifleriGenellikle gradyan kırpma ile birlikte kullanılan AdamWIsınma ile kosinüsEMA çalışmadan çalışmaya değişir
sbbDaha İyi ViT Baz Çizgileri AramaAdamW veya NAdamWIsınma ile kosinüsTekrarlı artırma; ince ayar için katman çürümesi
ra, ra2, ra3, racm, raaRandAugment tarifleri. EfficientNet RandAugment tariflerinden ilham alınmıştır. ResNet Strikes Back makalesindeki B tarifiyle kapsanır.RMSProp (TF 1.0 davranışı), EMAIsınma ile adım (merdivenli üstel azalma)—
ra4RandAugment v4. MobileNetV4 hparams'inden ilham alınmıştır.AdamW veya NAdamW, EMAIsınma ile kosinüsUzun süreli ResNet tariflerini içerir; optimizör betaları modele göre değişir
amAugMix tarifiJSD kaybı ile SGD (Nesterov)Isınma ile kosinüs—
ramAugMix (RandAugment ile) tarifiJSD kaybı ile SGD (Nesterov)Isınma ile kosinüs—
btBag-of-Tricks tarifiSGD (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 koleksiyonuTarif ailesiİçerik ve orijinal kurulum
MobileNetV4 ve uzun zaman çizelgesine sahip ResNet'lerra4Conv 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 AramasbbImageNet-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 tarifleri4 GPU üzerinde Atto/Nano eğitimi; 8 GPU üzerinde Tiny/Small ImageNet-12k'ten ImageNet-1k'ye ince ayar.
ViT, ConvNeXt, CoAtNet ve MaxViTDeiT / 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 RA2ra2ResNet-18D/34D/50D ve ECA-ResNet-26D; 2 GPU, açık öğrenme oranları.
RegNet ve RegNetZra3, SGD + AGC8 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 NFNetSGD + AGCnfnet.yaml içindeki geçmiş ECA-NFNet-L1 yapılandırması; Apex fusedsgd kullanır.
TPU'da MLP modelleriAdamWDeneysel bits_and_tpu dalına bağlı geçmiş gMLP, gMixer ve ResMLP çalışmaları.
Küçük test modelleriMobileNetV4 türevi1600–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-dir parametresini 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/ ve validation/ altında sınıf alt klasörleri bekler (veya doğrulama dizinini --val-split ile seçin).
  • model, pretrained, num_classes ve 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_impl veya force_cpu gibi kaldırılmış seçenekleri içerebilir. Güncel train.py, bilinmeyen anahtarlar hakkında uyarı verir. Aşağıdaki satır içi yapılandırmalar güncel seçenekleri kullanır. Eski fusedadamw / fusedsgd optimizör adları Apex uygulamalarına atıfta bulunur; adamw / sgd olarak 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ğitimDeğerlendirme boyutu / kırpmaImageNet-1k top-1
mobilenetv4_conv_medium.e500_r256_in1kImageNet-1k, 256px256 / 0.95; 320 / 1.079.916%; 80.890%
vit_medium_patch16_reg4_gap_256.sbb_in1kImageNet-1k, 256px256 / 0.9583.466%
convnext_tiny.in12k_ft_in1kImageNet-12k → ImageNet-1k, 224px224 / 0.95; 288 / 1.084.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: inductor

Bu ö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: inductor

Baş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.

Update on GitHub