Buckets:
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[[diffusers.loaders.PeftAdapterMixin]]
diffusers.loaders.PeftAdapterMixin[[diffusers.loaders.PeftAdapterMixin]]
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[[diffusers.loaders.PeftAdapterMixin.active_adapters]]
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[[diffusers.loaders.PeftAdapterMixin.add_adapter]]
add_adapter(adapter_config, adapter_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[[diffusers.loaders.PeftAdapterMixin.delete_adapters]]
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[[diffusers.loaders.PeftAdapterMixin.disable_adapters]]
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[[diffusers.loaders.PeftAdapterMixin.disable_lora]]
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[[diffusers.loaders.PeftAdapterMixin.enable_adapters]]
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[[diffusers.loaders.PeftAdapterMixin.enable_lora]]
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[[diffusers.loaders.PeftAdapterMixin.enable_lora_hotswap]]
enable_lora_hotswap(target_rank: int = 128, check_compiled: typing.Literal['error', 'warn', 'ignore'] = 'error')
Parameter:
target_rank (int, opsional, defaultnya 128) : Rank tertinggi di antara semua adapter yang akan dimuat.
check_compiled (str, opsional, defaultnya "error") : Cara menangani kasus ketika model sudah dikompilasi, yang umumnya sebaiknya dihindari. Opsinya adalah: - "error" (default): lempar error - "warn": terbitkan 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[[diffusers.loaders.PeftAdapterMixin.load_lora_adapter]]
load_lora_adapter(pretrained_model_name_or_path_or_dict, prefix = 'transformer', hotswap: bool = False, **kwargs)
Parameter:
pretrained_model_name_or_path_or_dict (str atau os.PathLike atau dict) : Bisa berupa: - String, model id (misalnya google/ddpm-celebahq-256) dari model pretrained yang dihosting di Hub. - Path ke directory (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, defaultnya False) : Apakah akan memaksa (mengunduh ulang) bobot model dan file konfigurasi, menimpa versi yang di-cache jika ada.
proxies (dict[str, str], opsional) : Kamus server proxy yang akan 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, defaultnya 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, defaultnya "main") : Versi model spesifik yang akan digunakan. Bisa berupa nama branch, nama tag, id commit, atau identifikasi apa pun yang diizinkan oleh Git.
subfolder (str, opsional, defaultnya "") : 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 arti yang sama dengan opsi --network_alpha dalam skrip trainer kohya-ss. Lihat tautan ini.
low_cpu_mem_usage (bool, opsional) : Mempercepat 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 dari adapter baru. Hal ini bisa lebih cepat dan lebih efisien dalam penggunaan memori. Namun, keunggulan utama dari hotswapping adalah ketika model dikompilasi dengan torch.compile, pemuatan adapter baru tidak memerlukan kompilasi ulang model. Saat menggunakan hotswapping, adapter_name yang diberikan harus berupa nama dari adapter yang sudah dimuat. Jika adapter baru dan adapter lama memiliki rank dan/atau LoRA alphas (yaitu scaling) yang berbeda, Anda perlu memanggil metode tambahan sebelum memuat adapter: py pipeline = ... # load diffusers pipeline max_rank = ... # the highest rank among all LoRAs that you want to load # call *before* compiling and loading the LoRA adapter pipeline.enable_lora_hotswap(target_rank=max_rank) pipeline.load_lora_weights(file_name) # optionally compile the model now Perhatikan bahwa hotswapping adapter untuk text encoder belum didukung. Ada beberapa keterbatasan lain untuk teknik ini, yang didokumentasikan di sini: https://huggingface.co/docs/peft/main/en/package_reference/hotswap
metadata : Metadata adapter LoRA. Jika diberikan, metadata yang disimpulkan melalui state dict tidak digunakan untuk menginisialisasi LoraConfig.
Memuat adapter LoRA ke dalam model yang mendasarinya.
save_lora_adapter[[diffusers.loaders.PeftAdapterMixin.save_lora_adapter]]
save_lora_adapter(save_directory, adapter_name: str = 'default', upcast_before_saving: bool = False, safe_serialization: bool = True, weight_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 model dasar akan di-cast ke torch.float32 sebelum serialisasi.
safe_serialization (bool, opsional, defaultnya 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[[diffusers.loaders.PeftAdapterMixin.set_adapter]]
set_adapter(adapter_name: str | list[str])
Parameter:
adapter_name (str | list[str])) : Daftar adapter yang akan diatur atau nama adapter dalam kasus satu adapter.
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[[diffusers.loaders.PeftAdapterMixin.set_adapters]]
set_adapters(adapter_names: list[str] | str, weights: 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])
Xet Storage Details
- Size:
- 14.2 kB
- Xet hash:
- 16876f2e7b50b40e4cf2bbdd0cec3ba3b2c7c746631835dc12525c7f3b36fd7a
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.