Avec Cosmos Predict 2.5, NVIDIA pousse l'IA générative un cran plus loin : générer des vidéos de robots réalistes à partir de texte ou d'images. Voici comment l'adapter à vos besoins avec LoRA et DoRA.
INSTALLER LES Outils NÉCESSAIRES
Pour commencer, il faut préparer votre environnement. PyTorch 2.5+ avec CUDA, diffusers, accelerate et PEFT sont indispensables. Ces bibliothèques permettent de manipuler les modèles d'IA générative et d'optimiser leur entraînement. Vous pouvez aussi installer WandB pour suivre l'évolution de votre entraînement en temps réel.
pip install -U "diffusers[torch]" transformers accelerate peft wandb
TÉLÉCHARGER ET PRÉTRAITER LES DONNÉES
Les données sont organisées en deux dossiers : train pour l'entraînement et test pour l'évaluation. Le dossier train contient des vidéos, des métadonnées et des descriptions textuelles. Le dossier test contient des paires d'images et de prompts pour générer des vidéos de test.
train_dataset = VideoDataset(
datasetdir=args.traindata_dir,
numframes=args.numframes,
video_size=[args.height, args.width],
)
GÉLER LE MODÈLE DE BASE ET AJOUTER LES ADAPTATEURS
Cosmos Predict 2.5 est un modèle géant de 2 milliards de paramètres. Pour l'adapter à un domaine spécifique sans tout réentraîner, on utilise LoRA (Low-Rank Adaptation) ou DoRA (Weight-Decomposed Low-Rank Adaptation). Ces techniques ajoutent de petits modules entraînables sur un modèle figé, ce qui réduit la mémoire nécessaire et permet de travailler sur une seule carte graphique.
Le modèle est composé de trois parties : le VAE (qui compresse les images), l'encodeur de texte (qui transforme les prompts en vecteurs) et le DiT (Diffusion Transformer, le cœur du modèle). Seuls les adaptateurs LoRA/DoRA sont entraînés, le reste reste figé.
from diffusers import Cosmos25PredictBasePipeline
from peft import LoraConfig
pipe = Cosmos25PredictBasePipeline.from_pretrained(
"nvidia/Cosmos-Predict2.5-2B",
revision="diffusers/base/post-trained",
torch_dtype=torch.bfloat16,
)
# figement de tous les poids de base
dit = pipe.transformer
vae = pipe.vae
textencoder = pipe.textencoder
dit.requiresgrad(False)
vae.requiresgrad(False)
textencoder.requiresgrad_(False)
# configuration de l'adaptateur LoRA/DoRA
lora_config = LoraConfig(
r=args.lora_rank,
loraalpha=args.loraalpha,
targetmodules=['toq', 'tok', 'tov', 'to_out.0', 'ff.net.0.proj', 'ff.net.2'],
usedora=args.usedora, # mettre à True pour utiliser DoRA
)
dit.addadapter(loraconfig)
casttrainingparams(dit, dtype=torch.float32) # les paramètres LoRA en float32
COMPRENDRE LA FORMULE DE PERTE UTILISÉE
Le modèle utilise une approche appelée rectified flow. En gros, il apprend à transformer du bruit aléatoire en une vidéo cohérente. À chaque étape, le modèle prédit une
- Hugging Face Blog
L'indépendance de CLODCO est votre garantie.
Pour que l'actualité de l'IA reste sans filtre et sans concession, votre soutien est indispensable. Votre contribution est le seul moteur de notre liberté éditoriale.
Soutenir CLODCO

