Buckets:

mishig's picture
|
download
raw
15.1 kB

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[[diffusers.loaders.PeftAdapterMixin]]

diffusers.loaders.PeftAdapterMixin[[diffusers.loaders.PeftAdapterMixin]]

diffusers.loaders.PeftAdapterMixin()

Kaynak

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[[diffusers.loaders.PeftAdapterMixin.active_adapters]]

active_adapters()

Kaynak

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[[diffusers.loaders.PeftAdapterMixin.add_adapter]]

add_adapter(adapter_config, adapter_name: str = 'default')

Kaynak

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[[diffusers.loaders.PeftAdapterMixin.delete_adapters]]

delete_adapters(adapter_names: list[str] | str)

Kaynak

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[[diffusers.loaders.PeftAdapterMixin.disable_adapters]]

disable_adapters()

Kaynak

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[[diffusers.loaders.PeftAdapterMixin.disable_lora]]

disable_lora()

Kaynak

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[[diffusers.loaders.PeftAdapterMixin.enable_adapters]]

enable_adapters()

Kaynak

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[[diffusers.loaders.PeftAdapterMixin.enable_lora]]

enable_lora()

Kaynak

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[[diffusers.loaders.PeftAdapterMixin.enable_lora_hotswap]]

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

Kaynak

Parametreler:

target_rank (int, isteğe bağlı, varsayılan 128) : Yüklenecek tüm adaptörler arasındaki en yüksek rütbe.

check_compiled (str, isteğe bağlı, varsayılan "error") : Model zaten derlenmişse bu durumun nasıl ele alınacağı, ki bu genellikle kaçınılması gereken bir durumdur. Seçenekler: - "error" (varsayılan): bir hata fırlat - "warn": bir uyarı ver - "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[[diffusers.loaders.PeftAdapterMixin.load_lora_adapter]]

load_lora_adapter(pretrained_model_name_or_path_or_dict, prefix = 'transformer', hotswap: bool = False, **kwargs)

Kaynak

Parametreler:

pretrained_model_name_or_path_or_dict (str veya os.PathLike veya dict) : Şunlardan biri olabilir: - Hub'da barındırılan önceden eğitilmiş bir modelin model kimliği (örneğin google/ddpm-celebahq-256) olan bir dize. - ModelMixin.save_pretrained() ile kaydedilmiş model ağırlıklarını içeren bir dizin yolu (örneğin ./my_model_directory). - Bir torch state dict.

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ı) : Protokol veya uç nokta bazında 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) : Sadece yerel model ağırlıklarının 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ı) : Uzaktaki 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 altı (underflow) durumunu önleyen ağ alfası değeri. Bu değer, kohya-ss eğitim betiğindeki --network_alpha seçeneğiyle aynı anlama gelir. 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 (LoRA) adaptörün, yerinde yeni yüklenen adaptörle 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ştirileceği anlamına gelir. Bu işlem daha hızlı ve bellek açısından daha verimli olabilir. Ancak, hotswap'ın (sıcak değiştirme) 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 parametresi, zaten yüklenmiş bir adaptörün adı olmalıdır. Yeni adaptör ile eski adaptörün farklı rank ve/veya LoRA alfa (yani ölçekleme) değerlerine sahip olması durumunda, adaptörü yüklemekten önce ek bir metot çağırmanız gerekir: 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 Metin kodlayıcısının (text encoder) adaptörlerinin hotswap'ının henüz desteklenmediğini unutmayın. Bu tekniğin, burada belgelenen bazı ek kısıtlamaları vardır: https://huggingface.co/docs/peft/main/en/package_reference/hotswap

metadata : LoRA adaptör meta verileri. Sağlandığında, durum sözlüğü (state dict) üzerinden çıkarılan meta veriler LoraConfig başlatmak için kullanılmaz.

LoRA adaptörünü alttaki modele yükler.

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)

Kaynak

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) : Seri hale getirmeden önce alttaki modelin torch.float32'ye 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[[diffusers.loaders.PeftAdapterMixin.set_adapter]]

set_adapter(adapter_name: str | list[str])

Kaynak

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[[diffusers.loaders.PeftAdapterMixin.set_adapters]]

set_adapters(adapter_names: list[str] | str, weights: float | dict | list[float] | list[dict] | list[None] | None = None)

Kaynak

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

Xet Storage Details

Size:
15.1 kB
·
Xet hash:
ad3b96c420cf3d997edb17f5cb2eca16840e472db77b9f63df1c7cf5e54622cd

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.