Diffusers documentation

Vagas na Hugging Face

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

Vagas na Hugging Face

Hugging Face Jobs roda em GPUs da Hugging Face, então você não precisa configurar uma máquina, e a execução continua mesmo se você fechar o terminal. Os scripts de treinamento do Diffusers rodam nos Jobs diretamente da URL do GitHub, sem a necessidade de clonar o repositório ou instalar algo localmente.

Antes de começar, siga o Jobs quickstart para instalar o CLI hf, fazer login e adicionar créditos à sua conta.

Treinar um LoRA em Jobs

O comando abaixo treina um LoRA para FLUX.2-klein-4B com as cinco fotos de cachorro em diffusers/dog-example. Ele roda em um único A10G e envia o LoRA para o seu namespace no 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 instala as dependências listadas no cabeçalho # /// script do script, incluindo o Diffusers a partir do main. Os Jobs não recebem um token do Hugging Face por padrão, portanto -s HF_TOKEN encaminha o seu para permitir que o script faça o push do LoRA. O disco do Job é descartado quando o Job termina, e qualquer coisa que você não fizer push será perdida. Os guias de DreamBooth e LoRA explicam os argumentos de treinamento.

Gerenciando um Job

Os logs de treinamento são exibidos no seu terminal enquanto o Job está em execução. Fechar o terminal ou pressionar Ctrl+C não interrompe o treinamento, pois o Job é executado nos servidores da Hugging Face. Para iniciar uma execução longa sem ocupar seu terminal, adicione -d antes de --. O comando exibe o ID do Job e retorna.

Use o ID do Job para se reconectar aos logs, verificar a memória e a utilização da GPU durante o treinamento do modelo, ou interromper uma execução.

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

Se a execução falhar, hf jobs inspect <job_id> exibe a mensagem de erro. Consulte Gerenciar Jobs para os outros comandos.

Treine com suas próprias imagens

Para treinar com suas imagens, monte a pasta delas no Job com -v e passe o caminho de montagem para --instance_data_dir em vez de --dataset_name. O Jobs faz o upload da pasta para um bucket privado antes de o Job iniciar e a monta somente para leitura. Fazer o upload da mesma pasta novamente envia apenas arquivos novos ou alterados.

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

O script abre todos os arquivos em --instance_data_dir como imagens, portanto, mantenha apenas imagens na pasta. Um arquivo oculto, como .DS_Store, faz a execução falhar. Consulte Local directories para mais informações sobre o montamento de uma pasta.

Com --with_prior_preservation, o script gera as imagens de classe em --class_data_dir antes do início do treinamento. Aponte-o para um caminho em que o Job possa gravar. Para reutilizar as imagens de classe em execuções posteriores, coloque-as em um bucket montado com leitura e gravação, como o de Salvar checkpoints para execuções longas.

Treinar em FP8

Os scripts de DreamBooth LoRA para FLUX.2, Z-Image, Ideogram 4 e Krea 2 aceitam --do_fp8_training para treinar em FP8 com torchao, o que reduz o uso de memória. Nenhum cabeçalho de script inclui o torchao, portanto, adicione --with torchao antes de --. O FP8 também requer uma GPU com capacidade de computação 8.9 ou superior, como uma L4 (l4x1) ou L40S (l40sx1). As A10G (8.6) e A100 (8.0) não oferecem suporte a isso.

Execute um script sem um cabeçalho de dependência

Apenas os scripts em examples/dreambooth e examples/advanced_diffusion_training declaram suas dependências em um bloco # /// script no topo do arquivo. Alguns scripts nessas pastas, como train_dreambooth_lora_sdxl.py, não possuem um.

Para um script sem cabeçalho, passe cada dependência com --with. Instale o Diffusers a partir do código-fonte, pois os scripts de treinamento exigem a versão de desenvolvimento. As outras dependências vêm do arquivo requirements.txt do script e de seus 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

Salvar checkpoints para execuções longas

Uma execução que leva horas pode expirar ou falhar antes de terminar. Para preservar o progresso, monte um Storage Bucket no Job com -v e aponte --output_dir para ele. Crie o bucket primeiro com hf buckets create.

O script salva uma pasta checkpoint-<step> em --output_dir a cada --checkpointing_steps passos (500 por padrão), de modo que os checkpoints são enviados para o bucket conforme o treinamento avança. --checkpoints_total_limit limita a quantidade mantida. --resume_from_checkpoint latest retoma a partir do checkpoint mais recente em --output_dir e começa do zero se não houver nenhum, de modo que o mesmo comando funciona para a primeira execução e para cada reinício.

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

Quando o treinamento termina, o LoRA é salvo no bucket como pytorch_lora_weights.safetensors. Consulte Volumes para as opções de montagem.

Não adicione --push_to_hub quando --output_dir contiver checkpoints. O upload ignora apenas as pastas step_* e epoch_*, de modo que as pastas checkpoint-<step> são enviadas para o repositório do modelo junto com o LoRA. Envie o pytorch_lora_weights.safetensors para um repositório de modelo por sua conta.

Próximas etapas

  • Leia Train Models on Jobs na documentação do Hub para saber quais verificações executar antes de um trabalho longo e como ler um trabalho que falhou.
  • Carregue seu LoRA treinado para inferência com o guia LoRA.
  • Consulte os arquivos README do DreamBooth para obter comandos e opções de memória específicos do modelo.
Update on GitHub