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.42.1).
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 работает на GPU Hugging Face, поэтому вам не нужно настраивать машину, и выполнение продолжается, даже если вы закроете терминал. Скрипты обучения Diffusers запускаются в Jobs напрямую по их URL из GitHub без необходимости клонировать репозиторий или устанавливать что-либо локально.

Прежде чем начать, выполните инструкции из раздела Быстрый старт с Jobs, чтобы установить CLI hf, войти в систему и пополнить баланс вашего аккаунта.

Обучение LoRA на Jobs

Команда ниже обучает LoRA для FLUX.2-klein-4B на пяти фотографиях собак из diffusers/dog-example. Она выполняется на одном A10G и публикует LoRA в вашем пространстве имён на 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 устанавливает зависимости, перечисленные в заголовке # /// script скрипта, включая Diffusers из ветки main. По умолчанию Jobs не получают токен Hugging Face, поэтому -s HF_TOKEN передаёт ваш токен, чтобы скрипт мог отправить LoRA. Диск Job удаляется по завершении Job, и всё, что не было отправлено, теряется. Руководства по DreamBooth и LoRA описывают аргументы обучения.

Управление задачей

Журналы обучения выводятся в терминал во время выполнения Job. Закрытие терминала или нажатие Ctrl+C не останавливает обучение, поскольку Job выполняется на машинах Hugging Face. Чтобы запустить длительную работу, не блокируя терминал, добавьте -d перед --. Команда выведет ID Job и вернёт управление.

Используйте Job ID, чтобы повторно подключиться к журналам, проверить использование и загрузку памяти GPU во время обучения модели или остановить выполнение.

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

Если выполнение не удалось, hf jobs inspect <job_id> отобразит сообщение об ошибке. Остальные команды описаны в разделе Управление заданиями.

Обучение на собственных изображениях

Чтобы обучать модель на своих изображениях, смонтируйте их папку в Job с помощью -v и передайте путь к точке монтирования в --instance_data_dir вместо --dataset_name. Jobs загружает папку в приватный бакет перед запуском Job и монтирует её в режиме только для чтения. При повторной загрузке той же папки передаются только новые или изменённые файлы.

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

Скрипт открывает каждый файл в --instance_data_dir как изображение, поэтому в папке должны находиться только изображения. Скрытый файл, например .DS_Store, приводит к сбою выполнения. Подробнее о монтировании папки см. в разделе Локальные каталоги.

С флагом --with_prior_preservation скрипт генерирует изображения классов в --class_data_dir перед началом обучения. Укажите путь, в который Job может записывать данные. Чтобы переиспользовать изображения классов в последующих запусках, разместите их в точке монтирования с правами чтения и записи, как описано в разделе Сохранение контрольных точек для длительных запусков.

Обучение в FP8

Скрипты DreamBooth LoRA для FLUX.2, Z-Image, Ideogram 4 и Krea 2 принимают --do_fp8_training для обучения в FP8 с помощью torchao, что снижает потребление памяти. В заголовках скриптов нет torchao, поэтому добавьте --with torchao перед --. Для FP8 также требуется GPU с вычислительной мощностью 8.9 или выше, например L4 (l4x1) или L40S (l40sx1). A10G (8.6) и A100 (8.0) не поддерживают этот режим.

Запуск скрипта без заголовка зависимостей

Зависимости в блоке # /// script в начале файла объявлены только в скриптах из examples/dreambooth и examples/advanced_diffusion_training. У некоторых скриптов в этих папках, например train_dreambooth_lora_sdxl.py, такого блока нет.

Для скрипта без заголовка передавайте каждую зависимость с помощью --with. Установите Diffusers из исходного кода, так как скрипты обучения требуют версии для разработки. Остальные зависимости берутся из файла requirements.txt скрипта и из его импортов.

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

Сохранение контрольных точек для длительных запусков

Запуск, длящийся несколько часов, может завершиться по таймауту или с ошибкой до окончания. Чтобы сохранить прогресс, примонтируйте Storage Bucket в Job с помощью -v и укажите его в параметре --output_dir. Сначала создайте бакет командой hf buckets create.

Скрипт сохраняет папку checkpoint-<step> в --output_dir каждые --checkpointing_steps шагов (по умолчанию 500), поэтому контрольные точки появляются в бакете по мере обучения. --checkpoints_total_limit ограничивает количество сохраняемых контрольных точек. --resume_from_checkpoint latest продолжает обучение с последней контрольной точки в --output_dir, а если её нет — начинает с нуля, поэтому одна и та же команда подходит как для первого запуска, так и для каждого последующего перезапуска.

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

По завершении обучения LoRA сохраняется в бакет в виде pytorch_lora_weights.safetensors. См. Тома для вариантов монтирования.

Не добавляйте --push_to_hub, если --output_dir содержит контрольные точки. Загрузка пропускает только папки step_* и epoch_*, поэтому папки checkpoint-<step> будут отправлены в репозиторий модели вместе с LoRA. Вместо этого самостоятельно загрузите pytorch_lora_weights.safetensors в репозиторий модели.

Дальнейшие шаги

  • См. раздел Обучение моделей на Jobs в документации Hub, чтобы узнать о проверках, которые необходимо выполнить перед запуском длительной задачи, и о том, как анализировать результаты неудачного запуска.
  • Загрузите обученный LoRA для инференса с помощью руководства LoRA.
  • Ознакомьтесь с файлами README DreamBooth для получения команд и параметров памяти, специфичных для каждой модели.
Update on GitHub