Files
wehub-resource-sync caf324b09d
tests / check_code_quality (push) Waiting to run
tests / tests (ubuntu-latest, 3.10) (push) Blocked by required conditions
tests / tests (ubuntu-latest, 3.11) (push) Blocked by required conditions
Deploy "method_comparison" Gradio to Spaces / deploy (push) Waiting to run
Deploy "PEFT shop" Gradio app to Spaces / deploy (push) Waiting to run
tests on transformers main / tests (push) Waiting to run
tests / tests (ubuntu-latest, 3.12) (push) Blocked by required conditions
tests / tests (ubuntu-latest, 3.13) (push) Blocked by required conditions
tests / tests (windows-latest, 3.10) (push) Blocked by required conditions
tests / tests (windows-latest, 3.11) (push) Blocked by required conditions
tests / tests (windows-latest, 3.12) (push) Blocked by required conditions
tests / tests (windows-latest, 3.13) (push) Blocked by required conditions
Secret Leaks / trufflehog (push) Waiting to run
CI security linting / zizmor latest via Cargo (push) Waiting to run
Build documentation / build (push) Failing after 0s
chore: import upstream snapshot with attribution
2026-07-13 13:24:42 +08:00
..

DreamBooth fine-tuning with DEFT

DEFT (Decompositional Efficient Fine-Tuning) adapts a frozen weight by removing a learned low-rank sub-space and injecting a new one in its place (W' = (I - P_proj) @ W + Q_P @ R). On its native text-to-image domain it is well suited to personalizing a diffusion model from a few images while preserving the base model's editability. This example is adapted from oft_dreambooth.

Setup

cd peft/examples/deft_dreambooth
pip install "git+https://github.com/huggingface/peft" diffusers accelerate transformers

Train

Point --instance_data_dir at a few images of your subject:

python train_dreambooth.py \
    --pretrained_model_name_or_path "stabilityai/stable-diffusion-2-1-base" \
    --instance_data_dir "path/to/subject/images" \
    --output_dir "deft-dreambooth-model" \
    --instance_prompt "a photo of sks dog" \
    --resolution 512 \
    --train_batch_size 1 \
    --max_train_steps 800 \
    --learning_rate 1e-4 \
    --use_deft \
    --deft_r 8 \
    --deft_alpha 16 \
    --deft_decomposition_method "qr"

qr is the default decomposition and works best for image generation (use relu for text tasks). Add --train_text_encoder (with the --deft_text_encoder_* options) to also adapt the text encoder.

Inference

See deft_dreambooth_inference.ipynb: load the base pipeline and attach the trained adapters with PeftModel.from_pretrained(pipe.unet, output_dir + "/unet") (and likewise for the text encoder if it was trained).