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, 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

sınıf diffusers.loaders.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.

active_adapters

< >

( )

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

< >

( adapter_configadapter_name: str = 'default' )

Parametreler

  • adapter_config ([~peft.PeftConfig]) — Eklenecek adaptörün yapılandırması; desteklenen adaptörler non-prefix tuning ve adaption prompt yöntemleridir.
  • adapter_name (str, isteğe bağlı, varsayılan "default") — Eklenecek adaptörün adı. Bir ad geçirilmezse, adaptöre varsayılan bir ad atanır.

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

< >

( adapter_names: list[str] | str )

Parametreler

  • adapter_names (list[str, str]) — Silinecek adaptörün adları (tek bir dize veya dize listesi).

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")

disable_adapters

< >

( )

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.

disable_lora

< >

( )

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()

enable_adapters

< >

( )

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.

enable_lora

< >

( )

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

< >

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

Parametreler

  • target_rank (int, isteğe bağlı, varsayılan 128) — 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

< >

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

Parametreler

  • pretrained_model_name_or_path_or_dict (str veya os.PathLike veya dict) — Ş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üğü.
  • 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ılan False) — 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ılan False) — Yalnızca yerel model ağırlıkları ve yapılandırma dosyalarının yüklenip yüklenmeyeceğini belirtir. True olarak ayarlanırsa, model Hub'dan indirilmez.
  • token (str veya bool, isteğe bağlı) — Uzak dosyalar için HTTP bearer yetkilendirmesi olarak kullanılacak jeton. True ise, diffusers-cli login ile oluşturulan jeton ( ~/.huggingface iç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_alpha seç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ğeri False. 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çirilen adapter_name zaten 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

< >

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

Parametreler

  • save_directory (str veya os.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ılan False) — Dizileştirme (serialization) öncesinde alttaki modelin torch.float32 tipine dönüştürülüp dönüştürülmemesi.
  • safe_serialization (bool, isteğe bağlı, varsayılan True) — Modelin safetensors ile mi yoksa geleneksel PyTorch yöntemiyle pickle kullanılarak mı kaydedileceğini belirtir.
  • weight_name — (str, isteğe bağlı, varsayılan None): State dict'inin serialize edileceği dosyanın adı.

Alt modelle eşleşen LoRA parametrelerini kaydedin.

set_adapter

< >

( adapter_name: str | list[str] )

Parametreler

  • adapter_name (str | list[str])) — Ayarlanacak adaptörlerin listesi veya tek bir adaptör durumunda adaptör adı.

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

< >

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

Parametreler

  • adapter_names (list[str] veya str) — Kullanılacak adaptörlerin adları.
  • weights (Union[List[float], float], isteğe bağlı) — UNet ile kullanılacak adaptör ağırlıkları. None ise, tüm adaptörler için ağırlıklar 1.0 olarak ayarlanır.

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])
Update on GitHub