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
Avec LoRA, seulement 50 millions de paramètres sont entraînables au lieu de 2 milliards .

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

Sources :
  • 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