Diffusers documentation

Hugging Face Jobs

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

and get access to the augmented documentation experience

to get started

Hugging Face Jobs

Hugging Face Jobs s’exécute sur des GPU Hugging Face, vous n’avez donc pas besoin de configurer une machine, et l’exécution se poursuit même si vous fermez votre terminal. Les scripts d’entraînement de Diffusers s’exécutent sur Jobs directement depuis leur URL GitHub, sans avoir besoin de cloner le dépôt ni d’installer quoi que ce soit localement.

Avant de commencer, suivez le tutoriel de démarrage rapide des Jobs pour installer le CLI hf, vous connecter et ajouter des crédits à votre compte.

Entraîner un LoRA sur Jobs

La commande ci-dessous entraîne un LoRA pour FLUX.2-klein-4B sur les cinq photos de chiens situées dans diffusers/dog-example. Elle s’exécute sur une seule A10G et pousse le LoRA vers votre espace de noms sur le Hub.

# 20 steps is a test run. For a real run, raise --max_train_steps
# (the FLUX.2 README uses 500) and --timeout to match.
hf jobs uv run --flavor a10g-small --timeout 30m -s HF_TOKEN -- \
  https://raw.githubusercontent.com/huggingface/diffusers/main/examples/dreambooth/train_dreambooth_lora_flux2_klein.py \
  --pretrained_model_name_or_path black-forest-labs/FLUX.2-klein-4B \
  --dataset_name diffusers/dog-example \
  --instance_prompt "a photo of sks dog" \
  --resolution 512 --mixed_precision bf16 --guidance_scale 1 \
  --gradient_checkpointing --cache_latents \
  --optimizer adamW --use_8bit_adam --learning_rate 1e-4 \
  --max_train_steps 20 --seed 0 \
  --output_dir /tmp/out \
  --push_to_hub --hub_model_id your-username/klein-dog-lora

uv installe les dépendances listées dans l’en-tête # /// script du script, y compris Diffusers depuis main. Les Jobs ne reçoivent pas de jeton Hugging Face par défaut, donc -s HF_TOKEN transmet le vôtre pour permettre au script de pousser le LoRA. Le disque du Job est supprimé à la fin du Job, et tout ce qui n’est pas poussé est perdu. Les guides DreamBooth et LoRA expliquent les arguments d’entraînement.

Gérer un Job

Les journaux d’entraînement s’affichent dans votre terminal pendant l’exécution du Job. Fermer le terminal ou appuyer sur Ctrl+C n’interrompt pas l’entraînement, car le Job s’exécute sur les machines de Hugging Face. Pour lancer une longue exécution sans bloquer votre terminal, ajoutez -d avant --. La commande affiche l’ID du Job et se termine.

Utilisez l’identifiant de tâche pour vous reconnecter aux journaux, vérifier la mémoire et l’utilisation du GPU pendant l’entraînement du modèle, ou arrêter une exécution.

hf jobs logs -f <job_id>
hf jobs stats <job_id>
hf jobs cancel <job_id>

En cas d’échec de l’exécution, hf jobs inspect <job_id> affiche le message d’erreur. Consultez Gérer les jobs pour les autres commandes.

Entraîner sur vos propres images

Pour entraîner sur vos images, montez leur dossier dans le Job avec -v et passez le chemin de montage à --instance_data_dir au lieu de --dataset_name. Jobs télécharge le dossier dans un bucket privé avant le démarrage du Job et le monte en lecture seule. La réupload du même dossier n’envoie que les nouveaux fichiers ou les fichiers modifiés.

hf jobs uv run --flavor a10g-small --timeout 30m -s HF_TOKEN \
  -v ./my-dog:/data -- \
  https://raw.githubusercontent.com/huggingface/diffusers/main/examples/dreambooth/train_dreambooth_lora_flux2_klein.py \
  --pretrained_model_name_or_path black-forest-labs/FLUX.2-klein-4B \
  --instance_data_dir /data \
  --instance_prompt "a photo of sks dog" \
  --resolution 512 --mixed_precision bf16 --guidance_scale 1 \
  --gradient_checkpointing --cache_latents \
  --optimizer adamW --use_8bit_adam --learning_rate 1e-4 \
  --max_train_steps 20 --seed 0 \
  --output_dir /tmp/out \
  --push_to_hub --hub_model_id your-username/klein-dog-lora

Le script ouvre chaque fichier de --instance_data_dir en tant qu'image, il faut donc ne conserver que des images dans le dossier. Un fichier caché tel que .DS_Store provoque l'échec de l'exécution. Consultez Local directories pour en savoir plus sur le montage d'un dossier.

Avec --with_prior_preservation, le script génère les images de classe dans --class_data_dir avant le début de l’entraînement. Indiquez-lui un chemin accessible en écriture par le Job. Pour réutiliser les images de classe lors d’exécutions ultérieures, placez-les dans un montage de bucket en lecture-écriture, comme celui décrit dans Enregistrer les points de contrôle pour les longues exécutions.

Entraîner en FP8

Les scripts DreamBooth LoRA de FLUX.2, Z-Image, Ideogram 4 et Krea 2 acceptent --do_fp8_training pour entraîner en FP8 avec torchao, ce qui réduit l’utilisation de la mémoire. Aucun en-tête de script n’inclut torchao, il faut donc ajouter --with torchao avant --. Le FP8 nécessite également un GPU avec une capacité de calcul de 8.9 ou supérieure, comme un L4 (l4x1) ou un L40S (l40sx1). Les A10G (8.6) et A100 (8.0) ne le prennent pas en charge.

Exécuter un script sans en-tête de dépendances

Seuls les scripts de examples/dreambooth et examples/advanced_diffusion_training déclarent leurs dépendances dans un bloc # /// script en haut du fichier. Certains scripts de ces dossiers, comme train_dreambooth_lora_sdxl.py, n’en ont pas.

Pour un script sans en-tête, passez chaque dépendance avec --with. Installez Diffusers depuis le code source, car les scripts d’entraînement nécessitent la version de développement. Les autres dépendances proviennent du fichier requirements.txt du script et de ses imports.

hf jobs uv run --flavor a10g-small --timeout 30m -s HF_TOKEN \
  --with "diffusers @ git+https://github.com/huggingface/diffusers.git" \
  --with torch --with torchvision --with accelerate --with transformers \
  --with peft --with datasets --with bitsandbytes \
  --with ftfy --with tensorboard --with Jinja2 -- \
  https://raw.githubusercontent.com/huggingface/diffusers/main/examples/dreambooth/train_dreambooth_lora_sdxl.py \
  --pretrained_model_name_or_path stabilityai/stable-diffusion-xl-base-1.0 \
  --pretrained_vae_model_name_or_path madebyollin/sdxl-vae-fp16-fix \
  --dataset_name diffusers/dog-example \
  --instance_prompt "a photo of sks dog" \
  --resolution 1024 --mixed_precision fp16 \
  --gradient_checkpointing --use_8bit_adam --learning_rate 1e-4 \
  --max_train_steps 20 --seed 0 \
  --output_dir /tmp/out \
  --push_to_hub --hub_model_id your-username/sdxl-dog-lora

Enregistrer des points de contrôle pour les longues exécutions

Une exécution qui dure des heures peut expirer ou planter avant sa fin. Pour conserver sa progression, montez un Storage Bucket dans le Job avec -v et pointez --output_dir vers celui-ci. Créez d’abord le bucket avec hf buckets create.

Le script enregistre un dossier checkpoint-<step> dans --output_dir toutes les --checkpointing_steps étapes (500 par défaut), de sorte que les points de contrôle sont déposés dans le bucket au fil de l’entraînement. --checkpoints_total_limit limite le nombre de points de contrôle conservés. --resume_from_checkpoint latest reprend depuis le point de contrôle le plus récent de --output_dir, et démarre à zéro s’il n’en existe pas, ce qui permet d’utiliser la même commande pour la première exécution et pour chaque redémarrage.

hf jobs uv run --flavor a10g-small --timeout 8h -s HF_TOKEN \
  -v hf://buckets/your-username/checkpoints:/ckpt -- \
  https://raw.githubusercontent.com/huggingface/diffusers/main/examples/dreambooth/train_dreambooth_lora_flux2_klein.py \
  --pretrained_model_name_or_path black-forest-labs/FLUX.2-klein-4B \
  --dataset_name diffusers/dog-example \
  --instance_prompt "a photo of sks dog" \
  --resolution 1024 --mixed_precision bf16 --guidance_scale 1 \
  --gradient_checkpointing --cache_latents \
  --optimizer adamW --use_8bit_adam --learning_rate 1e-4 \
  --max_train_steps 5000 --seed 0 \
  --checkpointing_steps 500 --checkpoints_total_limit 3 \
  --resume_from_checkpoint latest \
  --output_dir /ckpt/klein-dog

À la fin de l'entraînement, le LoRA est enregistré dans le bucket sous le nom pytorch_lora_weights.safetensors. Consultez Volumes pour les options de montage.

N’ajoutez pas --push_to_hub lorsque --output_dir contient des points de contrôle. Le téléversement ignore uniquement les dossiers step_* et epoch_*, de sorte que les dossiers checkpoint-<step> sont poussés vers le dépôt de modèle avec le LoRA. Téléversez plutôt vous-même pytorch_lora_weights.safetensors vers un dépôt de modèle.

Étapes suivantes

  • Consultez Train Models on Jobs dans la documentation du Hub pour connaître les vérifications à effectuer avant un long travail et comment analyser un travail en échec.
  • Chargez votre LoRA entraîné pour l'inférence avec le guide LoRA.
  • Consultez les fichiers README de DreamBooth pour les commandes et options de mémoire spécifiques à chaque modèle.
Update on GitHub