# Hugging Face Pekerjaan

[Hugging Face Jobs](https://huggingface.co/docs/hub/jobs) berjalan di GPU Hugging Face, sehingga Anda tidak perlu menyiapkan mesin, dan proses tetap berjalan meskipun Anda menutup terminal. Skrip pelatihan Diffusers dapat dijalankan di Jobs langsung dari URL GitHub-nya tanpa perlu meng-clone repositori atau menginstal apa pun secara lokal.

Sebelum memulai, ikuti [Jobs quickstart](https://huggingface.co/docs/hub/jobs-quickstart) untuk menginstal CLI `hf`, masuk, dan menambahkan kredit ke akun Anda.

## Latih LoRA pada Jobs

Perintah di bawah ini melatih LoRA untuk [FLUX.2-klein-4B](https://huggingface.co/black-forest-labs/FLUX.2-klein-4B) menggunakan lima foto anjing di [diffusers/dog-example](https://huggingface.co/datasets/diffusers/dog-example). Perintah ini berjalan di satu A10G dan mendorong LoRA ke namespace Anda di Hub.

```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` menginstal dependensi yang tercantum dalam header `# /// script` dari skrip, termasuk Diffusers dari `main`. Job tidak mendapatkan token Hugging Face secara default, sehingga `-s HF_TOKEN` meneruskan token Anda agar skrip dapat mendorong LoRA. Disk Job dibuang ketika Job berakhir, dan apa pun yang tidak Anda dorong akan hilang. Panduan [DreamBooth](./dreambooth) dan [LoRA](./lora) menjelaskan argumen pelatihan.

## Mengelola Tugas

Log pelatihan dicetak ke terminal Anda saat Job berjalan. Menutup terminal atau menekan `Ctrl+C` tidak menghentikan pelatihan, karena Job berjalan di mesin Hugging Face. Untuk memulai run panjang tanpa mengunci terminal Anda, tambahkan `-d` sebelum `--`. Perintah tersebut mencetak Job ID dan kembali.

Gunakan Job ID untuk menyambung kembali ke log, memeriksa memori dan utilisasi GPU saat model dilatih, atau menghentikan eksekusi.

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

Jika run gagal, `hf jobs inspect <job_id>` menampilkan pesan error. Lihat [Manage Jobs](https://huggingface.co/docs/hub/jobs-manage) untuk perintah lainnya.

## Latih pada gambar Anda sendiri

Untuk melatih pada gambar Anda, mount folder mereka ke dalam Job dengan `-v` dan lewati jalur mount ke `--instance_data_dir` alih-alih `--dataset_name`. Jobs mengunggah folder ke bucket privat sebelum Job dimulai dan memount-nya hanya-baca. Mengunggah folder yang sama lagi hanya mengirim file baru atau yang berubah.

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

Skrip membuka setiap file di `--instance_data_dir` sebagai gambar, jadi simpan hanya gambar di folder tersebut. File tersembunyi seperti `.DS_Store` menyebabkan eksekusi gagal. Lihat [Local directories](https://huggingface.co/docs/hub/jobs-configuration#local-directories) untuk informasi lebih lanjut tentang mounting folder.

Dengan `--with_prior_preservation`, skrip menghasilkan gambar kelas ke `--class_data_dir` sebelum pelatihan dimulai. Arahkan ke path yang dapat ditulis oleh Job. Untuk menggunakan kembali gambar kelas di eksekusi berikutnya, simpan di bucket mount baca-tulis seperti yang ada di [Simpan checkpoint untuk eksekusi panjang](#save-checkpoints-for-long-runs).

## Latih dalam FP8

Skrip DreamBooth LoRA untuk FLUX.2, Z-Image, Ideogram 4, dan Krea 2 menerima `--do_fp8_training` untuk melatih dalam FP8 dengan [torchao](https://github.com/pytorch/ao), yang menurunkan penggunaan memori. Tidak ada header skrip yang menyertakan torchao, jadi tambahkan `--with torchao` sebelum `--`. FP8 juga memerlukan GPU dengan compute capability 8.9 atau lebih tinggi, seperti L4 (`l4x1`) atau L40S (`l40sx1`). A10G (8.6) dan A100 (8.0) tidak mendukungnya.

## Jalankan skrip tanpa header dependensi

Hanya skrip di [examples/dreambooth](https://github.com/huggingface/diffusers/tree/main/examples/dreambooth) dan [examples/advanced_diffusion_training](https://github.com/huggingface/diffusers/tree/main/examples/advanced_diffusion_training) yang menyatakan dependensinya dalam blok `# /// script` di bagian atas file. Beberapa skrip di folder tersebut, seperti `train_dreambooth_lora_sdxl.py`, tidak memilikinya.

Untuk skrip tanpa header, berikan setiap dependensi dengan `--with`. Instal Diffusers dari sumber, karena skrip pelatihan memerlukan versi pengembangan. Dependensi lainnya berasal dari file `requirements.txt` skrip dan impor-impornya.

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

## Simpan checkpoint untuk eksekusi panjang

Eksekusi yang memakan waktu berjam-jam dapat habis waktu atau crash sebelum selesai. Untuk mempertahankan progresnya, mount [Storage Bucket](https://huggingface.co/docs/hub/storage-buckets) ke dalam Job dengan `-v` dan arahkan `--output_dir` ke sana. Buat bucket terlebih dahulu dengan `hf buckets create`.

Skrip menyimpan folder `checkpoint-<step>` ke `--output_dir` setiap `--checkpointing_steps` langkah (500 secara default), sehingga checkpoint masuk ke bucket seiring pelatihan berjalan. `--checkpoints_total_limit` membatasi jumlah checkpoint yang disimpan. `--resume_from_checkpoint latest` melanjutkan dari checkpoint terbaru di `--output_dir`, dan memulai dari awal jika tidak ada, sehingga perintah yang sama berfungsi untuk eksekusi pertama maupun setiap restart.

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

Saat pelatihan berakhir, LoRA disimpan ke bucket sebagai `pytorch_lora_weights.safetensors`. Lihat [Volume](https://huggingface.co/docs/hub/jobs-configuration#volumes) untuk opsi mount.

> [!NOTE]
> Jangan tambahkan `--push_to_hub` ketika `--output_dir` berisi checkpoint. Unggahan hanya melewati folder `step_*` dan `epoch_*`, sehingga folder `checkpoint-<step>` akan didorong ke repo model bersama dengan LoRA. Alih-alih, unggah `pytorch_lora_weights.safetensors` ke repo model Anda sendiri.

## Langkah selanjutnya

- Baca [Train Models on Jobs](https://huggingface.co/docs/hub/jobs-training) di dokumentasi Hub untuk memeriksa langkah-langkah yang harus dilakukan sebelum menjalankan tugas panjang dan cara membaca tugas yang gagal.
- Muat LoRA yang telah Anda latih untuk inferensi dengan panduan [LoRA](../tutorials/using_peft_for_inference).
- Telusuri [file README DreamBooth](https://github.com/huggingface/diffusers/tree/main/examples/dreambooth) untuk perintah dan opsi memori yang spesifik untuk model.

