# Hugging Face İş İlanları

[Hugging Face Jobs](https://huggingface.co/docs/hub/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ıç](https://huggingface.co/docs/hub/jobs-quickstart) rehberini izleyin.

## Jobs üzerinde bir LoRA eğitin

Aşağıdaki komut, [diffusers/dog-example](https://huggingface.co/datasets/diffusers/dog-example) içindeki beş köpek fotoğrafında [FLUX.2-klein-4B](https://huggingface.co/black-forest-labs/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.

```bash
# 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`, 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` parametresi, betiğin LoRA'yı itebilmesi için jetonunuzu iletir. İş sonlandığında diski silinir ve itmediğiniz her şey kaybolur. [DreamBooth](./dreambooth) ve [LoRA](./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.

```bash
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](https://huggingface.co/docs/hub/jobs-manage) 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.

```bash
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
```

Betik, `--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](https://huggingface.co/docs/hub/jobs-configuration#local-directories) 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](#save-checkpoints-for-long-runs) 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](https://github.com/pytorch/ao) ile FP8'de eğitim yapmak için `--do_fp8_training` parametresini alır. Hiçbir betik başlığı torchao 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](https://github.com/huggingface/diffusers/tree/main/examples/dreambooth) ve [examples/advanced_diffusion_training](https://github.com/huggingface/diffusers/tree/main/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.

```bash
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
```

## Uzun ç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](https://huggingface.co/docs/hub/storage-buckets)'ı İş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çerlidir.

```bash
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
```

Eğitim sona erdiğinde, LoRA, `pytorch_lora_weights.safetensors` olarak kovaya kaydedilir. Bağlama seçenekleri için [Volume'lar](https://huggingface.co/docs/hub/jobs-configuration#volumes) bölümüne bakın.

> [!NOTE]
> `--output_dir` checkpoint içeriyorsa `--push_to_hub` eklemeyin. Yükleme işlemi yalnızca `step_*` ve `epoch_*` klasörlerini atlar, bu nedenle `checkpoint-<step>` klasörleri LoRA ile birlikte model deposuna gönderilir. Bunun yerine `pytorch_lora_weights.safetensors` dosyasını kendiniz bir model deposuna yükleyin.

## Sonraki adımlar

- Hub belgelerindeki [Train Models on Jobs](https://huggingface.co/docs/hub/jobs-training) 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](../tutorials/using_peft_for_inference) kılavuzuyla yükleyin.
- Model-specific komutlar ve bellek seçenekleri için [DreamBooth README dosyalarını](https://github.com/huggingface/diffusers/tree/main/examples/dreambooth) inceleyin.

