Diffusers documentation

PEFT

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v0.42.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

PEFT

Diffusers mendukung pemuatan adapter seperti LoRA dengan pustaka PEFT menggunakan kelas PeftAdapterMixin. Hal ini memungkinkan kelas pemodelan di Diffusers seperti UNet2DConditionModel, SD3Transformer2DModel untuk beroperasi dengan adapter.

Lihat tutorial Inference with PEFT untuk gambaran tentang cara menggunakan PEFT di Diffusers untuk inferensi.

PeftAdapterMixin

kelas diffusers.loaders.PeftAdapterMixin

< >

( )

Kelas yang berisi semua fungsi untuk memuat dan menggunakan bobot adapter yang didukung di pustaka PEFT. Untuk detail lebih lanjut tentang adapter dan cara menyuntikkannya ke model dasar, lihat dokumentasi PEFT.

Instal versi terbaru PEFT, dan gunakan mixin ini untuk:

  • Lampirkan adapter baru ke dalam model.
  • Lampirkan beberapa adapter dan aktifkan/nonaktifkan secara iteratif.
  • Aktifkan/nonaktifkan semua adapter dari model.
  • Dapatkan daftar adapter yang aktif.

active_adapters

< >

( )

Mendapatkan daftar adapter aktif saat ini dari model.

Jika Anda belum familiar dengan adapter dan metode PEFT, kami mengundang Anda untuk membaca lebih lanjut tentang hal tersebut di dokumentasi PEFT.

add_adapter

< >

( adapter_configadapter_name: str = 'default' )

Parameter

  • adapter_config ([~peft.PeftConfig]) — Konfigurasi adapter yang akan ditambahkan; adapter yang didukung adalah metode non-prefix tuning dan adaption prompt.
  • adapter_name (str, opsional, defaultnya "default") — Nama adapter yang akan ditambahkan. Jika tidak ada nama yang diberikan, nama default akan ditugaskan ke adapter tersebut.

Menambahkan adapter baru ke model saat ini untuk pelatihan. Jika nama adapter tidak diberikan, nama default akan ditugaskan ke adapter tersebut untuk mengikuti konvensi dari pustaka PEFT.

Jika Anda belum familiar dengan adapter dan metode PEFT, kami mengundang Anda untuk membaca lebih lanjut tentang hal tersebut dalam dokumentasi PEFT.

delete_adapters

< >

( adapter_names: list[str] | str )

Parameter

  • adapter_names (list[str, str]) — Nama (string tunggal atau daftar string) dari adapter yang akan dihapus.

Hapus lapisan LoRA dari adapter pada model dasarnya.

Contoh:

from diffusers import AutoPipelineForText2Image
import torch

pipeline = AutoPipelineForText2Image.from_pretrained(
    "stabilityai/stable-diffusion-xl-base-1.0", torch_dtype=torch.float16
).to("cuda")
pipeline.load_lora_weights(
    "jbilcke-hf/sdxl-cinematic-1", weight_name="pytorch_lora_weights.safetensors", adapter_names="cinematic"
)
pipeline.unet.delete_adapters("cinematic")

disable_adapters

< >

( )

Nonaktifkan semua adapter yang terpasang pada model dan kembali ke inferensi hanya dengan model dasar.

Jika Anda belum familiar dengan adapter dan metode PEFT, kami mengundang Anda untuk membaca lebih lanjut tentang hal tersebut di dokumentasi PEFT.

disable_lora

< >

( )

Menonaktifkan lapisan LoRA aktif dari model yang mendasarinya.

Contoh:

from diffusers import AutoPipelineForText2Image
import torch

pipeline = AutoPipelineForText2Image.from_pretrained(
    "stabilityai/stable-diffusion-xl-base-1.0", torch_dtype=torch.float16
).to("cuda")
pipeline.load_lora_weights(
    "jbilcke-hf/sdxl-cinematic-1", weight_name="pytorch_lora_weights.safetensors", adapter_name="cinematic"
)
pipeline.unet.disable_lora()

enable_adapters

< >

( )

Aktifkan adapter yang terpasang pada model. Model menggunakan self.active_adapters() untuk mengambil daftar adapter yang akan diaktifkan.

Jika Anda belum familiar dengan adapter dan metode PEFT, kami mengundang Anda untuk membaca lebih lanjut tentang hal tersebut di dokumentasi PEFT.

enable_lora

< >

( )

Mengaktifkan lapisan LoRA aktif dari model yang mendasarinya.

Contoh:

from diffusers import AutoPipelineForText2Image
import torch

pipeline = AutoPipelineForText2Image.from_pretrained(
    "stabilityai/stable-diffusion-xl-base-1.0", torch_dtype=torch.float16
).to("cuda")
pipeline.load_lora_weights(
    "jbilcke-hf/sdxl-cinematic-1", weight_name="pytorch_lora_weights.safetensors", adapter_name="cinematic"
)
pipeline.unet.enable_lora()

enable_lora_hotswap

< >

( target_rank: int = 128check_compiled: typing.Literal['error', 'warn', 'ignore'] = 'error' )

Parameter

  • target_rank (int, opsional, default 128) — Rank tertinggi di antara semua adapter yang akan dimuat.
  • check_compiled (str, opsional, defaultnya "error") — Cara menangani kasus ketika model sudah dikompilasi, yang sebaiknya dihindari. Opsinya adalah:
    • “error” (default): lempar error
    • “warn”: mengeluarkan peringatan
    • “ignore”: tidak melakukan apa pun

Memungkinkan kemungkinan untuk mengganti adapter LoRA secara langsung.

Pemanggilan metode ini hanya diperlukan saat melakukan hotswap adapter dan jika model dikompilasi atau jika rank dari adapter yang dimuat berbeda.

load_lora_adapter

< >

( pretrained_model_name_or_path_or_dictprefix = 'transformer'hotswap: bool = False**kwargs )

Parameter

  • pretrained_model_name_or_path_or_dict (str atau os.PathLike atau dict) — Dapat berupa:
    • String, model id (misalnya google/ddpm-celebahq-256) dari model pretrained yang dihosting di Hub.
    • Path ke direktori (misalnya ./my_model_directory) yang berisi bobot model yang disimpan dengan ModelMixin.save_pretrained().
    • torch state dict.
  • prefix (str, opsional) — Prefiks untuk memfilter state dict.
  • cache_dir (str | os.PathLike, opsional) — Path ke direktori tempat konfigurasi model pretrained yang diunduh di-cache jika cache standar tidak digunakan.
  • force_download (bool, opsional, default False) — Apakah akan memaksa (mengunduh ulang) bobot model dan file konfigurasi, menimpa versi yang sudah di-cache jika ada.
  • proxies (dict[str, str], opsional) — Kamus server proxy yang digunakan berdasarkan protokol atau endpoint, misalnya {'http': 'foo.bar:3128', 'http://hostname': 'foo.bar:4012'}. Proxy digunakan pada setiap permintaan.
  • local_files_only (bool, opsional, default False) — Apakah hanya memuat bobot model dan file konfigurasi lokal atau tidak. Jika diatur ke True, model tidak akan diunduh dari Hub.
  • token (str atau bool, opsional) — Token yang digunakan sebagai otorisasi bearer HTTP untuk file jarak jauh. Jika True, token yang dihasilkan dari diffusers-cli login (disimpan di ~/.huggingface) akan digunakan.
  • revision (str, opsional, default "main") — Versi model spesifik yang akan digunakan. Bisa berupa nama branch, nama tag, commit id, atau identifier apa pun yang diizinkan oleh Git.
  • subfolder (str, opsional, default "") — Lokasi subfolder dari file model di dalam repositori model yang lebih besar di Hub atau secara lokal.
  • network_alphas (dict[str, float]) — Nilai network alpha yang digunakan untuk pembelajaran yang stabil dan mencegah underflow. Nilai ini memiliki makna yang sama dengan opsi --network_alpha dalam skrip trainer kohya-ss. Lihat tautan ini.
  • low_cpu_mem_usage (bool, opsional) — Percepat pemuatan model dengan hanya memuat bobot LoRA pretrained dan tidak menginisialisasi bobot acak.
  • hotswap — (bool, opsional) Bawaan adalah False. Apakah akan mengganti adapter (LoRA) yang sudah ada dengan adapter yang baru dimuat secara in-place. Artinya, alih-alih memuat adapter tambahan, proses ini akan mengambil bobot adapter yang ada dan menggantinya dengan bobot adapter baru. Hal ini bisa lebih cepat dan lebih efisien dalam penggunaan memori. Namun, keuntungan utama dari hotswapping adalah ketika model dikompilasi dengan torch.compile, pemuatan adapter baru tidak memerlukan kompilasi ulang model. Saat menggunakan hotswapping, adapter_name harus berupa nama adapter yang sudah dimuat.

    Jika adapter baru dan adapter lama memiliki rank dan/atau alpha LoRA (yaitu scaling) yang berbeda, Anda perlu memanggil metode tambahan sebelum memuat adapter:

Memuat adapter LoRA ke dalam model yang mendasarinya.

save_lora_adapter

< >

( save_directoryadapter_name: str = 'default'upcast_before_saving: bool = Falsesafe_serialization: bool = Trueweight_name: str | None = None )

Parameter

  • save_directory (str atau os.PathLike) — Direktori untuk menyimpan parameter LoRA. Akan dibuat jika belum ada.
  • adapter_name — (str, defaultnya “default”): Nama adapter yang akan diserialisasi. Berguna ketika model dasar memiliki beberapa adapter yang dimuat.
  • upcast_before_saving (bool, defaultnya False) — Apakah akan mengubah tipe model dasar menjadi torch.float32 sebelum serialisasi.
  • safe_serialization (bool, opsional, default True) — Apakah model disimpan menggunakan safetensors atau cara tradisional PyTorch dengan pickle.
  • weight_name — (str, opsional, defaultnya None): Nama file untuk menserialisasi state dict.

Simpan parameter LoRA yang sesuai dengan model dasarnya.

set_adapter

< >

( adapter_name: str | list[str] )

Parameter

  • adapter_name (str | list[str])) — Daftar adapter yang akan disetel atau nama adapter dalam kasus adapter tunggal.

Menetapkan adapter tertentu dengan memaksa model untuk hanya menggunakan adapter tersebut dan menonaktifkan adapter lainnya.

Jika Anda belum familiar dengan adapter dan metode PEFT, kami mengundang Anda untuk membaca lebih lanjut tentang hal tersebut di dokumentasi PEFT.

set_adapters

< >

( adapter_names: list[str] | strweights: float | dict | list[float] | list[dict] | list[None] | None = None )

Parameter

  • adapter_names (list[str] atau str) — Nama-nama adapter yang akan digunakan.
  • weights (Union[List[float], float], opsional) — Bobot adapter yang akan digunakan dengan UNet. Jika None, bobot disetel ke 1.0 untuk semua adapter.

Atur adapter yang saat ini aktif untuk digunakan dalam jaringan difusi (misalnya, unet, transformer, dll.).

Contoh:

from diffusers import AutoPipelineForText2Image
import torch

pipeline = AutoPipelineForText2Image.from_pretrained(
    "stabilityai/stable-diffusion-xl-base-1.0", torch_dtype=torch.float16
).to("cuda")
pipeline.load_lora_weights(
    "jbilcke-hf/sdxl-cinematic-1", weight_name="pytorch_lora_weights.safetensors", adapter_name="cinematic"
)
pipeline.load_lora_weights("nerijs/pixel-art-xl", weight_name="pixel-art-xl.safetensors", adapter_name="pixel")
pipeline.unet.set_adapters(["cinematic", "pixel"], weights=[0.5, 0.5])
Update on GitHub