Diffusers documentation
PEFT
PEFT
Diffusers, PeftAdapterMixin sınıfı ile PEFT kütüphanesi aracılığıyla LoRA gibi adaptörlerin yüklenmesini destekler. Bu sayede Diffusers'taki UNet2DConditionModel, SD3Transformer2DModel gibi modelleme sınıfları bir adaptörle çalışabilir.
Diffusers'ta çıkarım için PEFT'yi nasıl kullanacağınızın genel bir bakış için Inference with PEFT eğitimine başvurun.
PeftAdapterMixin
PEFT kütüphanesinde desteklenen adaptör ağırlıklarını yüklemek ve kullanmak için tüm işlevleri içeren bir sınıf. Adaptörler ve bunların bir temel modele enjekte edilmesi hakkında daha fazla ayrıntı için PEFT belgelerini inceleyin.
PEFT'nin en son sürümünü yükleyin ve bu karışımı (mixin) şunları yapmak için kullanın:
- Modelde yeni adaptörler ekleyin.
- Birden çok adaptör ekleyin ve bunları iteratif olarak etkinleştirin/devre dışı bırakın.
- Modeldeki tüm adaptörleri etkinleştir/devre dışı bırak.
- Aktif adaptörlerin listesini alın.
Modelin aktif adaptörlerinin mevcut listesini alır.
Adaptörler ve PEFT yöntemleri hakkında bilgi sahibi değilseniz, bunlar hakkında daha fazla bilgi edinmek için PEFT belgelendirmesini okumaya davet ediyoruz.
add_adapter
< source >( adapter_configadapter_name: str = 'default' )
Eğitim için mevcut modele yeni bir adaptör ekler. Adaptör adı geçirilmezse, PEFT kütüphanesinin sözleşmesine uygun olarak adaptöre varsayılan bir ad atanır.
Adaptörler ve PEFT yöntemleri hakkında bilgi sahibi değilseniz, bunlar hakkında daha fazla bilgi edinmek için PEFT belgelerine göz atmanızı öneririz.
delete_adapters
< source >( adapter_names: list[str] | str )
Alt modelden bir adaptörün LoRA katmanlarını siler.
Örnek:
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")Modele bağlı tüm adaptörleri devre dışı bırakın ve yalnızca temel modelle çıkarım yapmaya geri dönün.
Adaptörler ve PEFT yöntemleri hakkında bilgi sahibi değilseniz, bunlar hakkında daha fazla bilgi edinmek için PEFT belgelendirmesini okumaya davet ediyoruz.
Alt modelin etkin LoRA katmanlarını devre dışı bırakır.
Örnek:
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()Modele bağlı olan adaptörleri etkinleştirir. Model, etkinleştirilecek adaptörlerin listesini almak için self.active_adapters() kullanır.
Adaptörler ve PEFT yöntemleri hakkında bilgi sahibi değilseniz, bunlar hakkında daha fazla bilgi edinmek için PEFT belgelendirmesini okumaya davet ediyoruz.
Alt modelin etkin LoRA katmanlarını etkinleştirir.
Örnek:
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' )
Parametreler
- target_rank (
int, isteğe bağlı, varsayılan128) — Yüklenecek tüm adaptörler arasındaki en yüksek rank. - check_compiled (
str, isteğe bağlı, varsayılan olarak"error") — Modelin zaten derlenmiş olduğu durumu nasıl ele alınacağı, bu durumun genellikle kaçınılması gerekir. Seçenekler:- “error” (varsayılan): bir hata fırlat
- “warn”: bir uyarı yayınla
- “ignore”: hiçbir şey yapma
LoRA adaptörlerinin sıcak değiştirilmesine olanak tanır.
Bu yöntemin çağrılması yalnızca adaptörlerin sıcak değiştirilmesi sırasında ve model derlenmişse veya yüklenen adaptörlerin dereceleri farklıysa gereklidir.
load_lora_adapter
< source >( pretrained_model_name_or_path_or_dictprefix = 'transformer'hotswap: bool = False**kwargs )
Parametreler
- pretrained_model_name_or_path_or_dict (
strveyaos.PathLikeveyadict) — Şunlardan biri olabilir:- Bir dize, Hub üzerinde barındırılan önceden eğitilmiş bir modelin model kimliği (örneğin
google/ddpm-celebahq-256). - Model ağırlıklarının ModelMixin.save_pretrained() ile kaydedildiği bir dizin (örneğin
./my_model_directory) yolunu belirtir. - Bir torch durum sözlüğü.
- Bir dize, Hub üzerinde barındırılan önceden eğitilmiş bir modelin model kimliği (örneğin
- prefix (
str, isteğe bağlı) — State dict'i filtrelemek için önek. - cache_dir (
str | os.PathLike, isteğe bağlı) — Standart önbellek kullanılmıyorsa, indirilen önceden eğitilmiş model yapılandırmasının önbelleğe alındığı dizinin yolu. - force_download (
bool, isteğe bağlı, varsayılanFalse) — Model ağırlıklarının ve yapılandırma dosyalarının (yeniden) indirilmesinin zorlanıp zorlanmayacağını belirler; önbellekteki sürümler varsa bunların üzerine yazar. - proxies (
dict[str, str], isteğe bağlı) — Protokole veya uç noktaya göre kullanılacak vekil sunucuların sözlüğü, örneğin{'http': 'foo.bar:3128', 'http://hostname': 'foo.bar:4012'}. Vekiller her istekte kullanılır. - local_files_only (
bool, isteğe bağlı, varsayılanFalse) — Yalnızca yerel model ağırlıkları ve yapılandırma dosyalarının yüklenip yüklenmeyeceğini belirtir.Trueolarak ayarlanırsa, model Hub'dan indirilmez. - token (
strveya bool, isteğe bağlı) — Uzak dosyalar için HTTP bearer yetkilendirmesi olarak kullanılacak jeton.Trueise,diffusers-cli loginile oluşturulan jeton (~/.huggingfaceiçinde saklanır) kullanılır. - revision (
str, isteğe bağlı, varsayılan"main") — Kullanılacak belirli model sürümü. Bir dal adı, etiket adı, commit kimliği veya Git tarafından izin verilen herhangi bir tanımlayıcı olabilir. - subfolder (
str, isteğe bağlı, varsayılan"") — Hub'da veya yerel olarak daha büyük bir model deposu içindeki bir model dosyasının alt klasör konumu. - network_alphas (
dict[str, float]) — Kararlı öğrenme için kullanılan ve taşma (underflow) sorununu önleyen network alfa değeri. Bu değerin anlamı, kohya-ss eğitim betiğindeki--network_alphaseçeneğiyle aynıdır. bu bağlantıya bakın. - low_cpu_mem_usage (
bool, isteğe bağlı) — Rastgele ağırlıkları başlatmadan yalnızca önceden eğitilmiş LoRA ağırlıklarını yükleyerek model yükleme hızını artırır. - hotswap — (
bool, isteğe bağlı) Varsayılan değeriFalse. Mevcut bir (LoRA) adaptörün, yeni yüklenen adaptörle yerinde değiştirilip değiştirilmeyeceğini belirtir. Bu, ek bir adaptör yüklemek yerine mevcut adaptör ağırlıklarının yeni adaptörün ağırlıklarıyla değiştirilmesi anlamına gelir. Bu işlem daha hızlı ve bellek açısından daha verimli olabilir. Ancak hotswap'in ana avantajı, model `torch.compile` ile derlendiğinde yeni adaptörün yüklenmesinin modelin yeniden derlenmesini gerektirmemesidir. Hotswap kullanıldığında, geçirilenadapter_namezaten yüklenmiş bir adaptörün adı olmalıdır.Yeni ve eski adaptörlerin farklı rütbelere ve/veya LoRA alfa değerlerine (yani ölçeklemeye) sahip olması durumunda, adaptörü yüklemekten önce ek bir yöntemi çağırmalısınız:
LoRA adaptörünü alttaki modele yükler.
save_lora_adapter
< source >( save_directoryadapter_name: str = 'default'upcast_before_saving: bool = Falsesafe_serialization: bool = Trueweight_name: str | None = None )
Parametreler
- save_directory (
strveyaos.PathLike) — LoRA parametrelerinin kaydedileceği dizin. Var değilse oluşturulur. - adapter_name — (
str, varsayılan “default”): Seri hale getirilecek adaptörün adı. Altta yatan modelde birden fazla adaptör yüklüyse kullanışlıdır. - upcast_before_saving (
bool, varsayılanFalse) — Dizileştirme (serialization) öncesinde alttaki modelintorch.float32tipine dönüştürülüp dönüştürülmemesi. - safe_serialization (
bool, isteğe bağlı, varsayılanTrue) — Modelinsafetensorsile mi yoksa geleneksel PyTorch yöntemiylepicklekullanılarak mı kaydedileceğini belirtir. - weight_name — (
str, isteğe bağlı, varsayılanNone): State dict'inin serialize edileceği dosyanın adı.
Alt modelle eşleşen LoRA parametrelerini kaydedin.
set_adapter
< source >( adapter_name: str | list[str] )
Modeli yalnızca o adaptörü kullanmaya zorlayarak belirli bir adaptörü ayarlar ve diğer adaptörleri devre dışı bırakır.
Adaptörler ve PEFT yöntemleri hakkında bilgi sahibi değilseniz, bunlar hakkında daha fazla bilgi edinmek için PEFT belgelendirmesini okumaya davet ediyoruz.
set_adapters
< source >( adapter_names: list[str] | strweights: float | dict | list[float] | list[dict] | list[None] | None = None )
Diffüzyon ağı (ör. unet, transformer vb.) kullanımında geçerli olan adaptörleri ayarlayın.
Örnek:
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])