Diffusionsmodelle haben einige der aufregendsten Open-Source-Veröffentlichungen der letzten zwei Jahre angetrieben – denken Sie an FLUX.1-dev für Text-zu-Bild oder Wan 2.1 und HunyuanVideo für Text-zu-Video. Die 🤗 Diffusers-Bibliothek ist zur ersten Adresse für diese Modelle geworden und bietet Forschern und Entwicklern eine einheitliche Oberfläche für Inferenz, Anpassung und Pipeline-Komposition.
Training und Feintuning dieser Modelle nehmen ebenfalls zu, und das erfordert Werkzeuge, die speichereffizientes Sharding, Latent-Caching, Multiresolution-Bucketing und Konfigurationen bewältigen, die nahtlos von einer GPU auf Hunderte skalieren.
Hier kommt die Open-Source-Bibliothek NVIDIA NeMo Automodel ins Spiel. Heute beleuchten wir die Zusammenarbeit zwischen NVIDIA und Hugging Face, die produktionsreifes, verteiltes Diffusionstraining für jedes Diffusers-Format-Modell auf dem Hugging Face Hub ermöglicht – ohne Checkpoint-Konvertierung, ohne Modellumschreibungen für neue Modelle. Die Integration ist im Diffusers-Trainingsleitfaden dokumentiert und vollständig Open Source unter Apache 2.0.
Was ist NeMo Automodel?
NeMo Automodel ist eine Open-Source-PyTorch-DTensor-native Trainingsbibliothek, Teil des NVIDIA NeMo Frameworks. Es basiert auf zwei Designprinzipien, die für das Diffusers-Ökosystem wichtig sind:
Hugging Face-nativ. Geben Sie
pretrained_model_name_or_pathauf eine beliebige Diffusers-Modell-ID auf dem Hub und starten Sie das Training. NeMo Automodel verwendet Diffusers-Modellklassen (z. B.WanTransformer3DModel) zum Laden und Diffusers-Pipelines (WanPipeline) zur Generierung. Checkpoints lassen sich sauber zurück in das Diffusers-Ökosystem übertragen.Ein Programm, jede Größenordnung. Die Rezepte und Trainingsskripte können leicht angepasst werden, um Training in jeder Größenordnung zu ermöglichen. Parallelität ist eine Konfigurationsentscheidung, keine Code-Neuschreibung – wechseln Sie zwischen FSDP2, Tensor Parallel, Expert Parallel, Context Parallel und Pipeline Parallel, indem Sie Konfigurationen deklarieren, nicht Modelle umschreiben.
AutoModel unterstützt derzeit nur Flow-Matching-Modelle. Intern verwendet es Flow Matching als Trainingsziel, mit Training im latenten Raum (über vorcodierte VAE-Ausgaben) und Multiresolution-Bucketed-Dataloading zur Beschleunigung des Durchsatzes.
Unterstützte Diffusionsmodelle
Die NeMo Automodel-Integration wird mit gebrauchsfertigen Feintuning-Rezepten für die folgenden offenen Diffusionsmodelle ausgeliefert. Die Liste spiegelt die Rezepte wider, die sich derzeit in examples/diffusion/finetune befinden.
ModellHugging Face IDAufgabeParameterLoRA-RezeptWan 2.1 T2V 1.3B / 14BWan-AI/Wan2.1-T2V-1.3B-Diffusers / Wan-AI/Wan2.1-T2V-14B-DiffusersText-zu-Video1,3B (passt auf eine einzelne 40 GB A100) / 14BJaWan 2.2 T2V A14BWan-AI/Wan2.2-T2V-A14B-DiffusersText-zu-Video27B gesamt (MoE), 14B aktiv pro SchrittNeinFLUX.1-devblack-forest-labs/FLUX.1-devText-zu-Bild12BJaFLUX.2-devblack-forest-labs/FLUX.2-devText-zu-Bild32BJaHunyuanVideo 1.5hunyuanvideo-community/HunyuanVideo-1.5-Diffusers-720p_t2vText-zu-Video13BJaQwen-ImageQwen/Qwen-ImageText-zu-Bild20B (MMDiT)Ja
Was diese Zusammenarbeit ermöglicht
Für Diffusers-Nutzer ergeben sich praktische Vorteile in einigen konkreten Fähigkeiten.
Keine Checkpoint-Konvertierung. Vortrainierte Gewichte vom Hub funktionieren sofort. Es gibt kein separates „Trainingsformat“, in das konvertiert werden muss, um dann zurückzukonvertieren. Ihr feinabgestimmter Checkpoint lädt direkt in eine DiffusionPipeline zur Inferenz oder zurück zum Hub zum Teilen. Nachgelagerte Werkzeuge – Quantisierung, Kompilierung, LoRA-Adapter, benutzerdefinierte Sampler – funktionieren weiterhin.
Schneller Weg zur Unterstützung neuer Modelle. Wenn ein neues Diffusionsmodell in Diffusers landet, erfordert die Aktivierung in NeMo Automodel eine kleine, überschaubare Code-Ergänzung – einen Datenvorverarbeitungs-Handler und einen Modell-Adapter – anstatt eines vollständigen benutzerdefinierten Trainingsskripts. Der Rest des Rezept-Stacks (FSDP2, Bucketed-Dataloading, Checkpointing, Generierung) bleibt unverändert, und derselbe YAML-gesteuerte Workflow gilt.
Vollständiges und parametereffizientes Feintuning. Sowohl vollständiges Feintuning als auch LoRA-basiertes PEFT werden unterstützt, sodass Sie zwischen maximaler Qualität (volles FT auf einem großen Cluster) oder maximaler Effizienz (LoRA auf einem einzelnen Knoten) wählen können. Dieselbe Rezeptstruktur handhabt beides.
Skalierbares Training, das über das hinausgeht, was integrierte Skripte bieten. NeMo Automodel fügt Sharding-Schemata wie FSDP2, Tensor-, Context- und Pipeline-Parallelismen, Multi-Node-Orchestrierung (derzeit SLURM, Kubernetes in Kürze) und Multiresolution-Bucketing hinzu. Diese Fähigkeiten machen das Training größerer Modelle wie FLUX.1-dev (12B) und HunyuanVideo (13B) möglich.
Ein Blick auf den Feintuning-Workflow
In diesem Abschnitt gehen wir den typischen Workflow zum Feintuning eines der unterstützten Modelle durch. Die empfohlene Methode zur Installation von Automodel ist der NeMo Automodel Docker-Container (nvcr.io/nvidia/nemo-automodel:26.06), der mit vorinstalliertem PyTorch, TransformerEngine und anderen CUDA-kompilierten Abhängigkeiten ausgeliefert wird. Alternativ installieren Sie mit pip3 install nemo-automodel oder aus dem Quellcode (pip3 install git+https://github.com/NVIDIA-NeMo/Automodel.git); siehe Installationsanleitung für alle Optionen.
Diese Anleitung führt durch ein Full-Transformer-Feintuning von FLUX.1-dev auf dem 78-Karten Rider-Waite-Tarot-Datensatz und anschließender Generierung aus dem resultierenden Checkpoint. Es verwendet die eingecheckten YAML-Konfigurationen und wendet laufspezifische Einstellungen als Befehlszeilen-Überschreibungen an, sodass keine neuen Konfigurationsdateien erforderlich sind.
1. Vorcodierung des Datensatzes
Das Diffusionsrezept verbraucht gecachte VAE-Latents und Text-Embeddings, anstatt Quellbilder während jedes Trainingsschritts zu codieren. Streamen Sie die 78 Rider-Waite-Bilder direkt von Hugging Face und verteilen Sie die Vorverarbeitung auf alle sichtbaren GPUs:
uv run --locked --no-default-groups \
--extra diffusion \
--extra diffusion-media \
python -m tools.diffusion.preprocessing_multiprocess image \
--dataset_name multimodalart/1920-raider-waite-tarot-public-domain \
--dataset_media_column image \
--dataset_caption_column caption \
--dataset_streaming \
--max_images 78 \
--output_dir /cache/flux_tarot \
--processor flux \
--model_name black-forest-labs/FLUX.1-dev \
--max_pixels 245760
Die Bildunterschriften enthalten bereits das trtcrd-Trigger-Token. Mit diesem Pixelbudget und dem Hochformat des Datensatzes weist die Vorverarbeitung die Stichproben dem 384×640-Bucket zu, der vom Showcase-Lauf verwendet wird.
Für das Bildtraining erzeugt die Vorverarbeitung .pt-Cache-Dateien und shardierte Metadaten:
/cache/flux_tarot/
├── 384x640/
│ ├── <hash1>.pt
│ └── ...
├── metadata_shard_0000.json
├── metadata.json
└── _hf_dataset/
└── images/
2. Training mit dem vorhandenen FLUX-YAML starten
Verwenden Sie direkt examples/diffusion/finetune/flux_t2i_flow.yaml. Das YAML wählt bereits FLUX.1-dev, vollständiges Transformer-Feintuning, den FLUX-Flow-Matching-Adapter, eine effektive Batch-Größe von 32 und achtfaches FSDP2 aus.
Geben Sie die tarotspezifischen Pfade und Einstellungen als Befehlszeilen-Überschreibungen an:
uv run --locked --no-default-groups --extra diffusion \
torchrun --nproc-per-node=8 \
examples/diffusion/finetune/finetune.py \
-c examples/diffusion/finetune/flux_t2i_flow.yaml \
--model.transformer_engine_fp8 false \
--data.dataloader.cache_dir /cache/flux_tarot \
--data.dataloader.base_resolution '[384,640]' \
--lr_scheduler.lr_decay_style constant \
--lr_scheduler.lr_warmup_steps 20 \
--step_scheduler.max_steps 200 \
--step_scheduler.ckpt_every_steps 50 \
--checkpoint.checkpoint_dir /tmp/flux_tarot/checkpoints/full \
--checkpoint.save_consolidated true \
--seed 2026
Der Lauf erzeugt Checkpoints bei den Schritten 50, 100, 150 und 200. Der endgültige Checkpoint ist mit epoch_66_step_199 gekennzeichnet; die Bezeichnung ist nullbasiert, obwohl sie den abgeschlossenen 200. Optimiererschritt darstellt.
3. Generieren aus dem feinabgestimmten Checkpoint
Verwenden Sie das vorhandene FLUX-Generierungs-YAML und setzen Sie model.checkpoint auf den vollständigen Trainings-Checkpoint:
uv run --locked --no-default-groups --extra diffusion \
python examples/diffusion/generate/generate.py \
-c examples/diffusion/generate/configs/generate_flux.yaml \
--model.checkpoint /tmp/flux_tarot/checkpoints/full/epoch_66_step_199 \
--inference.height 640 \
--inference.width 384 \
--inference.prompts '["a trtcrd of an astronaut tending a rose garden on Mars, \"the gardener\""]' \
--output.output_dir /tmp/flux_tarot/generations/full/step_200 \
--seed 2026
Fügen Sie trtcrd hinzu, um den erlernten Tarot-Stil aufzurufen. Für einen Kontrollvergleich behalten Sie den Seed und die Szene bei, lassen aber den Trigger weg:
uv run --locked --no-default-groups --extra diffusion \
python examples/diffusion/generate/generate.py \
-c examples/diffusion/generate/configs/generate_flux.yaml \
--model.checkpoint /tmp/flux_tarot/checkpoints/full/epoch_66_step_199 \
--inference.height 640 \
--inference.width 384 \
--inference.prompts '["an astronaut tending a rose garden on Mars, \"the gardener\""]' \
--output.output_dir /tmp/flux_tarot/generations/control \
--seed 2026
Ergebnisse
Bei Schritt 200 behalten die getriggerten Astronauten-Prompts ihren angeforderten Inhalt bei, während sie eine cremefarbene, rote und schwarze Vintage-Palette, schwere Tintenkonturen, flache Farbfelder, gealterte Papiertöne und allegorische Kartenkomposition annehmen. Der ungetriggerte Astronaut bleibt fotografisch, was zeigt, dass der gelernte Effekt wesentlich mit trtcrd verbunden ist und nicht das Basismodell global ersetzt.
Prompt (Seed)BasislinieFeinabgestimmt (Schritt 200)Astronaut, der einen Rosengarten auf dem Mars pflegt (Seed 2026)
4. Leistung
Alle Messungen wurden auf einem Knoten mit 8× NVIDIA H100 80 GB GPUs durchgeführt. Ergebnisse sind Mittelwerte ± Stichprobenstandardabweichung über drei stationäre 10-Schritt-Fenster.
Text-zu-Bild — 512×512
ModellTrainingParallelitätGBS / LBSSchrittzeitBilder/sBilder/s/GPUSpitzenzuweisung/GPUFLUX.1-devVollFSDP232 / 40,902 ± 0,039 s35,51 ± 1,554,44 ± 0,1963,88 GiBFLUX.1-devLoRA r64DDP48 / 60,894 ± 0,008 s53,73 ± 0,486,72 ± 0,0667,43 GiBQwen-ImageVollFSDP240 / 50,974 ± 0,075 s41,21 ± 3,065,15 ± 0,3853,55 GiBQwen-ImageLoRA r64DDP24 / 30,515 ± 0,006 s46,63 ± 0,545,83 ± 0,0766,33 GiB
Text-zu-Video — 512×512×49 Frames
Jede Stichprobe ist ein 49-Frame-Videoclip.
ModellTrainingGBS / LBSAktivierungs-CheckpointingSchrittzeitClips/sClips/s/GPUSpitzenzuweisung/GPUWan 2.1 1,3BVoll8 / 1Aus0,942 ± 0,038 s8,50 ± 0,351,06 ± 0,046,09 GiBWan 2.1 14BVoll8 / 1Ein3,798 ± 0,017 s2,107 ± 0,0060,263 ± 0,00633,35 GiBWan 2.1 14BLoRA r6416 / 2Ein7,585 ± 0,014 s2,110 ± 0,0000,263 ± 0,00024,07 GiBWan 2.2 A14B, hohes RauschenVoll8 / 1Ein4,628 ± 0,031 s1,730 ± 0,0100,217 ± 0,00623,57 GiBHunyuanVideo 1.5Voll8 / 1Ein5,926 ± 0,046 s1,350 ± 0,0100,170 ± 0,00015,90 GiBHunyuanVideo 1.5LoRA r648 / 1Ein5,575 ± 0,006 s1,433 ± 0,0060,180 ± 0,00010,58 GiB
Messdetails
Hardware: 8× H100 80 GB HBM3, vollständig NVLink-verbunden.
Bilddatensatz:
lambda/naruto-blip-captions, 256 gecachte Stichproben.Videodatensatz:
svjack/Lelouch_Vi_Britannia_FramePack_First_Last_Frame_Video_Captioned, 112 gecachte Stichproben.Vollständige Batches wurden mit
drop_last=trueerzwungen.Checkpoint-Schreibvorgänge wurden deaktiviert.
Schrittzeit umfasst Dataloading, Forward, Backward, Gradient Clipping, Optimierer und Scheduler-Arbeit.
Speicher ist die Spitzen-PyTorch-CUDA-Allokator-Nutzung, nicht der gesamte NVML-Gerätespeicher.
Weitere Feintuning/LoRA-Beispiele
Die Ergebnisse von Feintuning und LoRA zeigen die Leistungsfähigkeit von NeMo Automodel für die Domänenspezialisierung. Zum Beispiel passte das Feintuning des Wan 2.1-Modells auf einem Ghibli-Videodatensatz erfolgreich den Ausgabestil an, was durch eine merkliche Veränderung des Aussehens einer Blume im Vergleich zur Basislinie demonstriert wurde.
Basislinie:
Feinabgestimmt auf Ghibli-Videos:
Wir beobachteten auch die deutliche Wirkung der Verwendung von LoRA, wo das Anwenden des Adapters auf Wan 2.1 dazu führte, dass das Video einen charakteristischen Ghibli-Stil annahm, der besonders in der Hervorhebung der Augen der Charaktere sichtbar war.
Ohne LoRA:
Mit LoRA:
Diese Beispiele, einschließlich derer für FLUX.2, bestätigen, dass Benutzer sowohl maximale Qualität durch vollständiges Feintuning als auch maximale Effizienz durch LoRA-basiertes PEFT erreichen können, um die Ausgabe auf spezifische stilistische Domänen zuzuschneiden.
Probieren Sie es noch heute aus
Erfahren Sie mehr über die Integration und finden Sie weitere Feintuning-Beispiele in der NeMo Automodel-Dokumentation
Als Nächstes: Pythonic-Rezept-APIs
YAML ist gut geeignet für reproduzierbare Konfigurationen, insbesondere für Teams, die Dateien benötigen, die sie einchecken, überprüfen und wiederverwenden können, aber viele Teams benötigen auch eine programmatische Schnittstelle.
In einer kommenden NeMo Automodel-Version planen wir, die Diffusionsrezepte auch über eine vollständig typisierte Pythonic-API bereitzustellen. Benutzer werden in der Lage sein, dieselben Modell-, Daten-, Optimierer-, PEFT/LoRA-, Parallelitäts-, Checkpointing- und Generierungskomponenten direkt aus Python zusammenzustellen.
Der Pythonic-Pfad soll die Rezepte einfacher in bestehenden Trainingscode, Notebooks und Experiment-Workflows nutzbar machen und eine erstklassige Pythonic-Schnittstelle neben dem YAML-Schnellstartpfad bieten.













