Diffusers documentation
Hugging Face İş İlanları
Hugging Face İş İlanları
Hugging Face Jobs, Hugging Face GPU'larında çalıştığı için bir makine kurmanıza gerek yoktur ve terminali kapatsanız bile çalışma devam eder. Diffusers eğitim betikleri, depoyu klonlamaya veya yerel olarak herhangi bir şey kurmaya gerek kalmadan doğrudan GitHub URL'lerinden Jobs üzerinde çalışır.
Başlamadan önce, hf CLI'yi yüklemek, oturum açmak ve hesabınıza kredi eklemek için Jobs hızlı başlangıç rehberini izleyin.
Jobs üzerinde bir LoRA eğitin
Aşağıdaki komut, diffusers/dog-example içindeki beş köpek fotoğrafında FLUX.2-klein-4B için bir LoRA eğitir. Tek bir A10G üzerinde çalışır ve LoRA'yı Hub'daki ad alanınıza gönderir.
# 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, betiğin # /// script başlığındaki bağımlılıkları, main dalından Diffusers dahil olmak üzere yükler. İşler varsayılan olarak bir Hugging Face jetonu almaz, bu nedenle -s HF_TOKEN bayrağı, betiğin LoRA’yı itebilmesi için jetonunuzu iletir. İş sonlandığında diski silinir ve itmediğiniz her şey kaybolur. DreamBooth ve LoRA kılavuzları, eğitim argümanlarını açıklar.
İş Yönetimi
Eğitim günlükleri, İş çalışırken terminalinize yazdırılır. Terminali kapatmak veya Ctrl+C tuşlarına basmak eğitimi durdurmaz, çünkü İş Hugging Face’in makinelerinde çalışır. Terminalinizi meşgul etmeden uzun bir çalıştırma başlatmak için -- öncesine -d ekleyin. Komut İş Kimliğini yazdırır ve döner.
Job ID'yi kullanarak günlüklere yeniden bağlanabilir, modelin eğitim sırasında GPU bellek ve kullanım durumunu kontrol edebilir veya bir çalışmayı durdurabilirsiniz.
hf jobs logs -f <job_id>
hf jobs stats <job_id>
hf jobs cancel <job_id>Çalışma başarısız olursa, hf jobs inspect <job_id> hata mesajını gösterir. Diğer komutlar için İşleri Yönetme bölümüne bakın.
Kendi görselleriniz üzerinde eğitim
Görselleriniz üzerinde eğitim yapmak için klasörlerini -v ile Job'a bağlayın ve --dataset_name yerine bağlama yolunu --instance_data_dir parametresine iletin. Jobs, Job başlatılmadan önce klasörü özel bir kovaya yükler ve salt okunur olarak bağlar. Aynı klasörün tekrar yüklenmesi yalnızca yeni veya değiştirilmiş dosyaları gönderir.
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-loraBetik, --instance_data_dir içindeki her dosyayı bir görüntü olarak açtığından, klasörde yalnızca görüntü dosyaları bulundurun. .DS_Store gibi gizli bir dosya çalışmanın başarısız olmasına neden olur. Bir klasörün bağlanması hakkında daha fazla bilgi için Yerel dizinler bölümüne bakın.
--with_prior_preservation ile betik, eğitim başlamadan önce sınıf görsellerini --class_data_dir dizinine oluşturur. İşin (Job) yazabileceği bir yola işaret edin. Sınıf görsellerini sonraki çalıştırmalarda yeniden kullanmak için bunları, Uzun çalıştırmalar için denetim noktalarını kaydetme bölümündeki gibi okuma-yazma bir varlık kovası (bucket) bağlamasına yerleştirin.
FP8'de eğitim
FLUX.2, Z-Image, Ideogram 4 ve Krea 2 DreamBooth LoRA betikleri, bellek kullanımını azaltan torchao ile FP8'de eğitim yapmak için --do_fp8_training parametresini alır. Hiçbir betik başlığı torchao'yu içermediğinden, -- öncesine --with torchao ekleyin. FP8 ayrıca L4 (l4x1) veya L40S (l40sx1) gibi 8.9 veya daha yüksek hesaplama yeteneğine sahip bir GPU gerektirir. A10G (8.6) ve A100 (8.0) bunu desteklemez.
Bağımlılık başlığı olmadan bir betik çalıştırın
Bağımlılıklarını dosyanın başındaki # /// script bloğunda yalnızca examples/dreambooth ve examples/advanced_diffusion_training içindeki betikler bildirir. Bu klasörlerdeki train_dreambooth_lora_sdxl.py gibi bazı betiklerde bu blok bulunmaz.
Başlık içermeyen bir betik için her bağımlılığı --with ile iletin. Eğitim betikleri geliştirme sürümünü gerektirdiğinden Diffusers'ı kaynaktan yükleyin. Diğer bağımlılıklar betiğin requirements.txt dosyasından ve içe aktarmalarından gelir.
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-loraUzun çalıştırmalar için denetim noktaları kaydet
Saatler süren bir çalıştırma, tamamlanmadan zaman aşımına uğrayabilir veya çökebilir. İlerlemesini korumak için -v ile bir Storage Bucket'ı İşe bağlayın ve --output_dir'i ona yönlendirin. Önce hf buckets create ile bucket'ı oluşturun.
Betik, her --checkpointing_steps adımda (varsayılan olarak 500) bir checkpoint-<step> klasörünü --output_dir dizinine kaydeder, böylece eğitim ilerledikçe checkpoint'ler kovaya yerleşir. --checkpoints_total_limit parametresi, kaç checkpoint'in tutulacağını sınırlar. --resume_from_checkpoint latest, --output_dir içindeki en yeni checkpoint'ten devam eder; eğer böyle bir checkpoint yoksa baştan başlar, bu sayede aynı komut hem ilk çalıştırma hem de her yeniden başlatma için geçerli olur.
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-dogEğitim sona erdiğinde, LoRA, pytorch_lora_weights.safetensors olarak kovaya kaydedilir. Bağlama seçenekleri için Volume'lar bölümüne bakın.
--output_dircheckpoint içeriyorsa--push_to_hubeklemeyin. Yükleme işlemi yalnızcastep_*veepoch_*klasörlerini atlar, bu nedenlecheckpoint-<step>klasörleri LoRA ile birlikte model deposuna gönderilir. Bunun yerinepytorch_lora_weights.safetensorsdosyasını kendiniz bir model deposuna yükleyin.
Sonraki adımlar
- Hub belgelerindeki Train Models on Jobs bölümünü, uzun bir işten önce çalıştırılacak kontrolleri ve başarısız bir işin nasıl okunacağını öğrenmek için okuyun.
- Eğittiğiniz LoRA'yı çıkarım için LoRA kılavuzuyla yükleyin.
- Model-specific komutlar ve bellek seçenekleri için DreamBooth README dosyalarını inceleyin.