Diffusers documentation
Vagas na Hugging Face
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-lorauv 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-loraO 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-loraSalvar 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-dogQuando 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_hubquando--output_dircontiver checkpoints. O upload ignora apenas as pastasstep_*eepoch_*, de modo que as pastascheckpoint-<step>são enviadas para o repositório do modelo junto com o LoRA. Envie opytorch_lora_weights.safetensorspara 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.