Diffusers documentation

NeMo Automodel

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v0.42.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

NeMo Automodel

NeMo Automodel, NVIDIA tarafından büyük ölçekte difüzyon modellerinin ince ayar ve ön eğitimi için geliştirilen, PyTorch DTensor yerlisi bir eğitim kütüphanesidir. Hugging Face yerlisidir — Hub'daki herhangi bir Diffusers biçimindeki modeli checkpoint dönüşümü gerektirmeden eğitebilirsiniz. Aynı YAML tarifi ve özelleştirilebilir eğitim betiği, FSDP2 dağıtık eğitim, çok çözünürlüklü sepetli veri yükleme ve maksimum GPU kullanımı için önceden kodlanmış latent uzay eğitimi ile 1 GPU'dan yüzlerce düğüme kadar herhangi bir ölçekte çalışır. Eğitim için flow matching kullanır ve tamamen açık kaynaklıdır (Apache 2.0), NVIDIA tarafından desteklenir ve aktif olarak sürdürülmektedir.

NeMo Automodel, Diffusers ile doğrudan entegre edilir. Hugging Face Hub'dan önceden eğitilmiş modelleri Diffusers model sınıfları kullanarak yükler ve çıktıları DiffusionPipeline ile üretir.

Tipik iş akışı, NeMo Automodel'i kurmak (pip veya Docker), verilerinizi .meta dosyalarına kodlayarak hazırlamak, bir YAML tarifi yapılandırmak, eğitimi torchrun ile başlatmak ve sonuçta oluşan checkpoint ile çıkarım yapmaktır.

Desteklenen modeller

ModelHugging Face KimliğiGörevParametrelerKullanım senaryosu
Wan 2.1 T2V 1.3BWan-AI/Wan2.1-T2V-1.3B-DiffusersMetinden Videoya1.3Bsınırlı donanımda video üretimi (tek bir 40GB A100'e sığar)
FLUX.1-devblack-forest-labs/FLUX.1-devMetinden Görsele12Byüksek kaliteli görüntü üretimi
HunyuanVideo 1.5hunyuanvideo-community/HunyuanVideo-1.5-Diffusers-720p_t2vMetinden Videoya13Byüksek kaliteli video üretimi

Kurulum

Donanım gereksinimleri

BileşenMinimumÖnerilen
GPUA100 40GBA100 80GB / H100
GPU'lar48+
RAM128 GB256 GB+
Depolama500 GB SSD2 TB NVMe

NeMo Automodel'i pip ile yükleyin. Tüm kurulum yöntemleri (kaynaktan kurulum dahil) için NeMo Automodel kurulum kılavuzuna bakın.

pip3 install nemo-automodel

Alternatif olarak, tüm bağımlılıkları içeren önceden oluşturulmuş Docker konteynerini kullanın.

docker pull nvcr.io/nvidia/nemo-automodel:26.02.00
docker run --gpus all -it --rm --shm-size=8g nvcr.io/nvidia/nemo-automodel:26.02.00

Kontrol noktaları, konteyner çıkış yaptığında kaybolur; kontrol noktası dizinini ana makineye bağlamalı olarak (bind-mount) eklememeniz gerekir. Örneğin, docker run komutuna -v /host/path/checkpoints:/workspace/checkpoints ekleyin.

Veri hazırlama

NeMo Automodel, difüzyon modellerini latent uzayda eğitir. Eğitimden önce ham görüntüler veya videolar, VAE latentleri ve metin gömlemelerini içeren .meta dosyalarına dönüştürülmelidir. Bu, her eğitim adımında yeniden kodlamayı önler.

Yerleşik ön işleme aracını kullanarak verilerinizi kodlayın. Araç, işi otomatik olarak tüm kullanılabilir GPU'lara dağıtır.

video ön işleme
görsel ön işleme

Video ön işleme komutu hem Wan 2.1 hem de HunyuanVideo için aynıdır, ancak bayraklar farklıdır. Wan 2.1, --resolution_preset ve --caption_format sidecar ile birlikte --processor wan kullanırken, HunyuanVideo kare sayısını ayarlamak için --target_frames ve --caption_format meta_json ile birlikte --processor hunyuan kullanır.

Wan 2.1:

python -m tools.diffusion.preprocessing_multiprocess video \
    --video_dir /data/videos \
    --output_dir /cache \
    --processor wan \
    --resolution_preset 512p \
    --caption_format sidecar

HunyuanVideo:

python -m tools.diffusion.preprocessing_multiprocess video \
    --video_dir /data/videos \
    --output_dir /cache \
    --processor hunyuan \
    --target_frames 121 \
    --caption_format meta_json

Çıktı biçimi

Ön işleme, çözünürlük kovasına göre organize edilmiş bir önbellek dizini oluşturur. NeMo Automodel, kovaya göre örneklemeyi kullanarak çoklu çözünürlüklü eğitimi destekler. Örnekler, her bir partinin aynı boyuttaki örnekleri içermesi ve dolgu israfından kaçınılması için uzamsal çözünürlüğe göre gruplandırılır.

/cache/
├── 512x512/                      # Resolution bucket
│   ├── <hash1>.meta              # VAE latents + text embeddings
│   ├── <hash2>.meta
│   └── ...
├── 832x480/                      # Another resolution bucket
│   └── ...
├── metadata.json                 # Global config (processor, model, total items)
└── metadata_shard_0000.json      # Per-sample metadata (paths, resolutions, captions)

Başlık biçimleri, giriş veri gereksinimleri ve kullanılabilir tüm ön işleme argümanları için Diffusion Dataset Preparation kılavuzuna bakın.

Eğitim yapılandırması

İnce ayar, iki bileşen tarafından yönlendirilir:

  1. Bir tarif betiği (finetune.py), eğitim döngüsünü içeren bir Python giriş noktasıdır: modelin yüklenmesi, dataloader'ın oluşturulması, ileri/geri geçişlerin çalıştırılması, flow matching kaybının hesaplanması, checkpoint alınması ve günlük kaydı.
  2. YAML yapılandırma dosyası, tarifin kullandığı tüm ayarları belirtir: ince ayarı yapılacak model, verilerin konumu, optimizör hiperparametreleri, paralelleştirme stratejisi ve daha fazlası. Kodu değiştirmek yerine bu dosyayı düzenleyerek eğitimi özelleştirirsiniz; bu sayede 1 GPU'dan yüzlerce GPU'ya ölçekleyebilirsiniz.

Herhangi bir YAML alanı ayrıca CLI'den de geçersiz kılınabilir:

torchrun --nproc-per-node=8 examples/diffusion/finetune/finetune.py \
  -c examples/diffusion/finetune/wan2_1_t2v_flow.yaml \
  --optim.learning_rate 1e-5 \
  --step_scheduler.num_epochs 50

Aşağıda, her bölümü açıklanan, Wan 2.1 T2V 1.3B için ince ayar (fine-tuning) yapılandırması yer almaktadır.

seed: 42

# ── Experiment tracking (optional) ──────────────────────────────────────────
# Weights & Biases integration for logging metrics, losses, and learning rates.
# Set mode: "disabled" to turn off.
wandb:
  project: wan-t2v-flow-matching
  mode: online
  name: wan2_1_t2v_fm

# ── Model ───────────────────────────────────────────────────────────────────
# pretrained_model_name_or_path: any Hugging Face model ID or local path.
# mode: "finetune" loads pretrained weights; "pretrain" trains from scratch.
model:
  pretrained_model_name_or_path: Wan-AI/Wan2.1-T2V-1.3B-Diffusers
  mode: finetune

# ── Training schedule ───────────────────────────────────────────────────────
# global_batch_size: effective batch across all GPUs.
# Gradient accumulation is computed automatically: global / (local × num_gpus).
step_scheduler:
  global_batch_size: 8
  local_batch_size: 1
  ckpt_every_steps: 1000     # Save a checkpoint every N steps
  num_epochs: 100
  log_every: 2               # Log metrics every N steps

# ── Data ────────────────────────────────────────────────────────────────────
# _target_: the dataloader factory function.
#   Use build_video_multiresolution_dataloader for video models (Wan, HunyuanVideo).
#   Use build_text_to_image_multiresolution_dataloader for image models (FLUX).
# model_type: "wan" or "hunyuan" (selects the correct latent format).
# base_resolution: target resolution for multiresolution bucketing.
data:
  dataloader:
    _target_: nemo_automodel.components.datasets.diffusion.build_video_multiresolution_dataloader
    cache_dir: PATH_TO_YOUR_DATA
    model_type: wan
    base_resolution: [512, 512]
    dynamic_batch_size: false  # When true, adjusts batch per bucket to maintain constant memory
    shuffle: true
    drop_last: false
    num_workers: 0

# ── Optimizer ───────────────────────────────────────────────────────────────
# learning_rate: 5e-6 is a good starting point for fine-tuning.
# Adjust weight_decay and betas for your dataset.
optim:
  learning_rate: 5e-6
  optimizer:
    weight_decay: 0.01
    betas: [0.9, 0.999]

# ── Learning rate scheduler ─────────────────────────────────────────────────
# Supports cosine, linear, and constant schedules.
lr_scheduler:
  lr_decay_style: cosine
  lr_warmup_steps: 0
  min_lr: 1e-6

# ── Flow matching ───────────────────────────────────────────────────────────
# adapter_type: model-specific adapter — must match the model:
#   "simple" for Wan 2.1, "flux" for FLUX.1-dev, "hunyuan" for HunyuanVideo.
# timestep_sampling: "uniform" for Wan, "logit_normal" for FLUX and HunyuanVideo.
# flow_shift: shifts the flow schedule (model-dependent).
# i2v_prob: probability of image-to-video conditioning during training (video models).
flow_matching:
  adapter_type: "simple"
  adapter_kwargs: {}
  timestep_sampling: "uniform"
  logit_mean: 0.0
  logit_std: 1.0
  flow_shift: 3.0
  num_train_timesteps: 1000
  i2v_prob: 0.3
  use_loss_weighting: true

# ── FSDP2 distributed training ──────────────────────────────────────────────
# dp_size: number of GPUs for data parallelism (typically = total GPUs on node).
# tp_size, cp_size, pp_size: tensor, context, and pipeline parallelism.
#   For most fine-tuning, dp_size is all you need; leave others at 1.
fsdp:
  tp_size: 1
  cp_size: 1
  pp_size: 1
  dp_replicate_size: 1
  dp_size: 8

# ── Checkpointing ──────────────────────────────────────────────────────────
# checkpoint_dir: where to save checkpoints (use a persistent path with Docker).
# restore_from: path to resume training from a previous checkpoint.
checkpoint:
  enabled: true
  checkpoint_dir: PATH_TO_YOUR_CKPT_DIR
  model_save_format: torch_save
  save_consolidated: false
  restore_from: null

Config alanı referansı

Aşağıdaki tablo, asgari gerekli yapılandırmaları listeler. Tüm modeller için tam örnek yapılandırmalar için NeMo Automodel örneklerine bakın.

BölümZorunlu mu?Değiştirilecekler
modelEvetpretrained_model_name_or_path değerini Hugging Face model kimliği olarak ayarlayın. mode: finetune veya mode: pretrain ayarlayın.
step_schedulerEvetglobal_batch_size, tüm GPU'lar arasında geçerli olan etkin batch boyutudur. ckpt_every_steps, checkpoint sıklığını kontrol eder. Gradyan biriktirme otomatik olarak hesaplanır.
dataEvetÖn işlenmiş .meta dosyalarınızı içeren yolu belirtmek için cache_dir değerini ayarlayın. Farklı modeller için _target_ ve model_type değerlerini değiştirin.
optimEvetlearning_rate: 5e-6, ince ayar için iyi bir varsayılandır. Veri setinize ve modelinize göre ayarlayın.
lr_schedulerEvetlr_decay_style için cosine, linear veya constant seçin. Kademeli ısınma için lr_warmup_steps değerini ayarlayın.
flow_matchingEvetadapter_type, modelle eşleşmelidir (Wan için simple, FLUX için flux, HunyuanVideo için hunyuan). adapter_kwargs için model özel yapılandırmalarına bakın.
fsdpEvetdp_size değerini GPU sayısına ayarlayın. Çoklu düğüm için, tüm düğümlerdeki toplam GPU sayısını ayarlayın.
checkpointÖnerilencheckpoint_dir değerini kalıcı bir yola ayarlayın, özellikle Docker kullanırken. Önceki bir kontrol noktasından devam etmek için restore_from parametresini kullanın.
wandbİsteğe bağlıWeights & Biases deney izlemesini etkinleştirmek için yapılandırın. Kapatmak için mode: disabled olarak ayarlayın.

Eğitimi başlat

tek düğüm
çok düğümlü
torchrun --nproc-per-node=8 \
  examples/diffusion/finetune/finetune.py \
  -c examples/diffusion/finetune/wan2_1_t2v_flow.yaml

Üretim

Eğitimden sonra, ince ayarlanmış kontrol noktasını kullanarak metin istemlerinden video veya görüntü oluşturun.

Wan 2.1
FLUX
HunyuanVideo
python examples/diffusion/generate/generate.py \
  -c examples/diffusion/generate/configs/generate_wan.yaml

İnce ayarlanmış bir kontrol noktasıyla:

python examples/diffusion/generate/generate.py \
  -c examples/diffusion/generate/configs/generate_wan.yaml \
  --model.checkpoint ./checkpoints/step_1000 \
  --inference.prompts '["A dog running on a beach"]'

Diffusers entegrasyonu

NeMo Automodel, Diffusers üzerine inşa edilmiştir ve model yükleme ile çıkarım için onu omurga olarak kullanır. Modelleri doğrudan Hugging Face Hub'dan WanTransformer3DModel, FluxTransformer2DModel ve HunyuanVideoTransformer3DModel gibi Diffusers model sınıfları aracılığıyla yükler ve WanPipeline ile FluxPipeline gibi Diffusers pipeline'ları üzerinden çıktıları üretir.

Bu entegrasyon, Diffusers kullanıcıları için çeşitli avantajlar sunar:

  • Kontrol noktası dönüştürme yok: Hub'daki önceden eğitilmiş ağırlıklar hazır olarak çalışır. pretrained_model_name_or_path parametresini herhangi bir Diffusers biçiminde model kimliğine yönlendirin ve eğitimi hemen başlatın.
  • Gün-0 model desteği: Diffusers'a yeni bir difüzyon modeli eklendiğinde ve Hub'a yüklendiğinde, NeMo Automodel ile özel bir eğitim betiği beklenmeden ince ayar yapılabilir.
  • Pipeline ile uyumlu çıktılar: İnce ayarlanmış kontrol noktaları, çıkarım için Diffusers pipeline'larına doğrudan geri yüklenebilecek, Hub'da paylaşılacak veya kuantizasyon ve derleme gibi araçlarla daha da optimize edilebilecek bir formatta kaydedilir.
  • Diffusers modelleri için ölçeklenebilir eğitim: NeMo Automodel, yerleşik Diffusers eğitim betiklerinin sağladıklarının ötesine geçen dağıtık eğitim yetenekleri (FSDP2, çoklu düğüm, çok çözünürlüklü sepetleme) eklerken aynı model ve pipeline arayüzlerini korur.
  • Paylaşılan ekosistem: Diffusers ekosisteminden herhangi bir model, LoRA adaptörü veya pipeline bileşeni, eğitim ve çıkarım iş akışının tamamında uyumlu kalır.

NVIDIA Ekibi

Kaynaklar

Update on GitHub