timm documentation
HParams
HParams
Ao longo dos anos, muitos modelos do timm foram treinados com diversos hiperparâmetros à medida que as bibliotecas e os modelos evoluíram. Não tenho um registro de cada instância, mas registrei instâncias de muitos que podem servir como um excelente ponto de partida.
Comece pelos gists de arquivos de configuração para execuções gravadas, ou pelas receitas selecionadas abaixo para configurações que você pode copiar para um arquivo YAML. Os exemplos de scripts de treinamento mostram seus equivalentes na linha de comando.
Tags
A maioria dos modelos treinados com timm possui um identificador em sua tag de pré-treinamento que os relaciona (aproximadamente) a uma família / versão de hiperparâmetros que utilizei ao longo dos anos.
A família de receitas é uma dica, não uma configuração completa. Ao escolher uma configuração, verifique o nome completo do checkpoint, o conjunto de dados de treinamento e a resolução. Por exemplo, vit_medium_patch16_reg4_gap_256.sbb_in1k foi treinado no ImageNet-1k, enquanto .sbb_in12k_ft_in1k identifica o pré-treinamento no ImageNet-12k seguido de ajuste fino no ImageNet-1k. Algumas tags codificam um agendamento e uma resolução em vez de um nome de família: o e500_r256_in1k do MobileNetV4 pertence à família ra4, mesmo que ra4 esteja ausente da tag.
| Tag(s) | Descrição | Otimizador | Agendamento de LR | Outras observações |
|---|---|---|---|---|
a1h | Com base na receita A1 de ResNet Strikes Back | LAMB | Cosseno com aquecimento | Dropout mais forte, stochastic depth e RandAugment do que a receita do artigo A1 |
ah | Com base na receita A1 de ResNet Strikes Back | LAMB | Cosseno com aquecimento | No CutMix. Dropout mais forte, profundidade estocástica e RandAugment do que a receita do artigo A1 |
a1, a2, a3 | ResNet Contra-Ataca A{1,2,3} receita | LAMB com perda BCE | Cosseno com aquecimento | — |
b1, b2, b1k, b2k | Com base na receita B de ResNet Strikes Back (equivalente às receitas RA2 do timm) | RMSProp (comportamento do TF 1.0) | Etapa (decaimento exponencial com escada) com aquecimento | — |
c, c1, c2, c3 | Com base nas receitas C de ResNet Strikes Back | SGD (Nesterov) com AGC | Cosseno com aquecimento | — |
ch | Com base nas receitas C de ResNet Strikes Back | SGD (Nesterov) com AGC | Cosseno com aquecimento | Dropout mais forte, stochastic depth e RandAugment do que as receitas C1/C2 do paper |
d, d1, d2 | Com base na receita D de ResNet Strikes Back | AdamW com perda BCE | Cosseno com aquecimento | — |
sw | Receitas de treino/pré-treino no estilo DeiT / Swin, também usadas para ConvNeXt e modelos híbridos | AdamW, geralmente com recorte de gradiente | Cosseno com aquecimento | O EMA varia a cada execução |
sbb | Buscando por Melhores Baselines de ViT | AdamW ou NAdamW | Cosseno com aquecimento | Aumento repetido; decaimento de camadas para ajuste fino |
ra, ra2, ra3, racm, raa | Receitas de RandAugment. Inspiradas nas receitas de RandAugment do EfficientNet. Cobertas pela receita B em ResNet Strikes Back. | RMSProp (comportamento do TF 1.0), EMA | Etapa (decaimento exponencial com escada) com aquecimento | — |
ra4 | RandAugment v4. Inspirado nos hiperparâmetros do MobileNetV4. | AdamW ou NAdamW, EMA | Cosseno com aquecimento | Inclui receitas de ResNet com agendamentos longos; os betas do otimizador variam conforme o modelo |
am | Receita AugMix | SGD (Nesterov) com perda JSD | Cosseno com aquecimento | — |
ram | Receita do AugMix (com RandAugment) | SGD (Nesterov) com perda JSD | Cosseno com aquecimento | — |
bt | Receita Bag-of-Tricks | SGD (Nesterov) | Cosseno com aquecimento | — |
Gists de Arquivos de Configuração
Essas coleções contêm os configs YAML gravados, incluindo configurações específicas das máquinas originais e da versão do script de treinamento. Abra um gist, escolha o arquivo YAML de um modelo e use Raw para salvá-lo localmente.
| Coleção de gists | Família de receitas | Conteúdo e configuração original |
|---|---|---|
| MobileNetV4 e ResNets com agendamento longo | ra4 | Execuções de Conv e MobileNetV4 híbridos; as contagens de GPU estão nos nomes dos arquivos. Inclui também configurações de ResNet com 3600 épocas. |
| Buscando por Melhores Baselines de ViT | sbb | Treinamento no ImageNet-1k, pré-treinamento no ImageNet-12k e ajuste fino; 2 ou 4 GPUs, conforme indicado em cada arquivo. |
| Treinamento e ajuste fino do ConvNeXt | Receitas do ConvNeXt | Treinamento Atto/Nano em 4 GPUs; ajuste fino Tiny/Small de ImageNet-12k para ImageNet-1k em 8 GPUs. |
| ViT, ConvNeXt, CoAtNet e MaxViT | Estilo DeiT / Swin | Configs de treinamento e ajuste fino mistos; 4–8 dispositivos GPU ou TPU. Muitos usam TFDS. |
| ResNet-D e ECA-ResNet RA2 | ra2 | ResNet-18D/34D/50D e ECA-ResNet-26D; 2 GPUs, taxas de aprendizado explícitas. |
| RegNet e RegNetZ | ra3, SGD + AGC | 8 núcleos TPU. Alguns arquivos são modelos com model: xxx; o README observa uma incompatibilidade de receita/checkpoint para RegNetY-064. |
| NFNet com recorte adaptativo de gradiente | SGD + AGC | Configuração histórica do ECA-NFNet-L1 em nfnet.yaml; usa Apex fusedsgd. |
| Modelos MLP em TPU | AdamW | Execuções históricas de gMLP, gMixer e ResMLP vinculadas ao ramo experimental bits_and_tpu. |
| Modelos de teste pequenos | Derivado do MobileNetV4 | Pequenos ViTs e ConvNeXts de teste com agendamentos de 1600 a 1800 épocas. |
Adaptando uma configuração gravada
Passe um arquivo local com --config hparams.yaml; os argumentos da linha de comando substituem seus valores. Consulte arquivos de configuração para mais detalhes.
- Defina
--data-dirpara sua máquina. Para um dataset ImageFolder, substitua também um dataset TFDS salvo com--dataset imagefolder/. O treinamento espera subpastas de classes sobtrain/evalidation/(ou escolha o diretório de validação com--val-split). - Verifique
model,pretrained,num_classese os caminhos de qualquer checkpoint. Uma configuração de fine-tuning precisa do checkpoint pré-treinado original; apenas um nome de arquitetura pode selecionar pesos padrão diferentes hoje. - Arquivos antigos podem conter opções removidas, como
apex_amp,native_amp,amp_implouforce_cpu. Otrain.pyatual emite avisos sobre chaves desconhecidas. As configurações inline abaixo usam as opções atuais. Os nomes antigos de otimizadorfusedadamw/fusedsgdreferem-se a implementações do Apex; a troca paraadamw/sgdé uma adaptação daquela execução.
Para treinamento de tamanho fixo, o tamanho efetivo do lote global é:
batch_size × number of training processes × grad_accum_steps
batch_size é por processo (normalmente uma GPU). Um lr não nulo é usado diretamente e não é
reescalado automaticamente. Com lr não definido (null em YAML), lr_base é escalado em relação a lr_base_size.
Defina lr_base_scale: sqrt para as receitas AdamW/NAdamW abaixo; a escalação linear é comumente usada para SGD/RMSProp.
Mudanças grandes no batch-size ainda precisam de ajuste. A acumulação de gradientes preserva o tamanho efetivo do lote, mas não
aumenta o lote visto pelo BatchNorm.
Para os agendamentos de cosseno, warmup_prefix: true adiciona o aquecimento antes do agendamento de epochs; cooldown_epochs adiciona um período final na LR mínima. Mantenha essas configurações ao adaptar uma execução antiga.
Receitas selecionadas
Esses exemplos mantêm as configurações de treinamento de arquivos gist específicos e omitem caminhos de máquina e opções não utilizadas.
As tags do modelo fixam a configuração de pré-processamento; os pesos são carregados apenas quando pretrained: true.
As acurácias de referência abaixo são avaliações dos checkpoints publicados em results-imagenet.csv,
não medições obtidas pela reexecução desses exemplos. A resolução e o crop de validação importam ao comparar resultados.
| Checkpoint publicado | Treinamento | Tamanho / recorte de avaliação | 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
Fonte: mnv4_cm_r256_e500_gpu2.yaml.
A execução original utilizou 2 GPUs × 512 imagens = lote global de 1024, com LR fixo de 0.002.
O agendamento consiste em 20 épocas de aquecimento seguidas por 500 épocas de cosseno (520 no total). Salve como 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: inductorEste exemplo usa AMP bfloat16, como na execução original; use --amp-dtype float16 em GPUs sem suporte a bfloat16. torchcompile pode ser omitido quando a compilação não é desejada.
ViT Medium com registros
train-vit_medium_reg4-4gpu-in1k.yaml,
também disponível como train_hparams.yaml do checkpoint.
Esta execução SBB usou 4 GPUs × 256 imagens = lote global de 1024. A escala pela raiz quadrada resulta em 0.0008 × sqrt(1024 / 512) ≈ 0.001131. Seus 600 epochs incluem warmup, com 10 epochs de cooldown adicionados.
Salve como 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: inductorAs configurações de inicialização (fix_init e um classificador inicializado com zero) fazem parte desta receita.
Esta execução específica utilizou AdamW e sem EMA; outros arquivos SBB utilizam NAdamW ou configurações diferentes de pré-treinamento.
Fine-tuning do ConvNeXt Tiny
Fonte: hparams_84_00-convnext_tiny.in12k-args.yaml.
Comece a partir de convnext_tiny.in12k, substitua seu classificador por
1000 classes e faça fine-tuning no ImageNet-1k. A execução original usou 8 GPUs × 512 imagens = 4096 batch global e
um LR fixo de 0.0001. Ele tem 75 épocas incluindo warmup, mais 10 épocas de cooldown.
A fonte avalia com um crop de 1.0; os resultados de benchmark do checkpoint acima usam os crops de avaliação declarados.
Salve como 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: float16Por exemplo, inicie a configuração do MobileNetV4 salva com:
torchrun --standalone --nproc_per_node=2 train.py \ --config mobilenetv4.yaml --data-dir /data/imagenet --experiment mobilenetv4-cm
Use 4 processos para vit-medium.yaml ou 8 para convnext-tiny-ft.yaml para corresponder aos tamanhos de lote globais originais,
ou ajuste o tamanho do lote, a acumulação e a taxa de aprendizado para o seu hardware.