Diffusers documentation
PEFT
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 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.
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
< source >( 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
< source >( adapter_names: list[str] | str )
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")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.
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()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.
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
< source >( target_rank: int = 128check_compiled: typing.Literal['error', 'warn', 'ignore'] = 'error' )
Parameter
- target_rank (
int, opsional, default128) — 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
< source >( pretrained_model_name_or_path_or_dictprefix = 'transformer'hotswap: bool = False**kwargs )
Parameter
- pretrained_model_name_or_path_or_dict (
stratauos.PathLikeataudict) — 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.
- String, model id (misalnya
- 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, defaultFalse) — 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, defaultFalse) — Apakah hanya memuat bobot model dan file konfigurasi lokal atau tidak. Jika diatur keTrue, model tidak akan diunduh dari Hub. - token (
stratau bool, opsional) — Token yang digunakan sebagai otorisasi bearer HTTP untuk file jarak jauh. JikaTrue, token yang dihasilkan daridiffusers-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_alphadalam 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 adalahFalse. 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_nameharus 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
< source >( save_directoryadapter_name: str = 'default'upcast_before_saving: bool = Falsesafe_serialization: bool = Trueweight_name: str | None = None )
Parameter
- save_directory (
stratauos.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, defaultnyaFalse) — Apakah akan mengubah tipe model dasar menjaditorch.float32sebelum serialisasi. - safe_serialization (
bool, opsional, defaultTrue) — Apakah model disimpan menggunakansafetensorsatau cara tradisional PyTorch denganpickle. - weight_name — (
str, opsional, defaultnyaNone): Nama file untuk menserialisasi state dict.
Simpan parameter LoRA yang sesuai dengan model dasarnya.
set_adapter
< source >( adapter_name: str | list[str] )
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
< source >( adapter_names: list[str] | strweights: float | dict | list[float] | list[dict] | list[None] | None = None )
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])