PEFT documentation

PEFT entegrasyonu için işlevler

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v0.21.0).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

PEFT entegrasyonu için işlevler

PeftModel olmayan modeller için, örneğin transformers veya diffusers entegrasyonu için faydalı olabilecek fonksiyonların bir koleksiyonu

Burada sağlanan işlevler PEFT'nin “genel API”si olarak kabul edilebilir ve bu nedenle PEFT entegrasyonları sunan paketler tarafından güvenle kullanılabilir.

Adaptör ağırlık veri türlerini dönüştürün

peft.tuners.tuners_utils.cast_adapter_dtype

< >

( model: nn.Moduleadapter_name: strautocast_adapter_dtype: bool = True )

Parametreler

  • adapter_name (str) — Adaptör adı.
  • autocast_adapter_dtype (bool, isteğe bağlı) — Adapter veri türünün otomatik olarak dönüştürülüp dönüştürülmeyeceğini belirtir. Varsayılan değeri True'dür.

Adapter ağırlıklarını doğru dtype'e dönüştürmek için yardımcı bir yöntemdir. Adapter katmanlarına yeni parametreler atar; bazı nesneler eski parametrelere referans veriyorsa, bunlar güncellenmez.

Şu anda bu, yalnızca float veri türlerini float32'ye yükseltir.

Modelden PEFT adaptörünü sil

peft.tuners.tuners_utils.delete_adapter

< >

( model: nn.Moduleadapter_name: strprefix: strlayer_cls: type[BaseTunerLayer] = <class 'peft.tuners.tuners_utils.BaseTunerLayer'> ) → new_adapter (list[str] | None)

Parametreler

  • model (nn.Module) — Uyarlamanın silinmesi gereken model.
  • adapter_name (str) — Silinecek adaptörün adı.
  • prefix (str) — PEFT yönteminin öneki, örneğin LoRA için “lora_”.
  • layer_cls (type, isteğe bağlı) — Uyarlama katmanının sınıfı. Varsayılan olarak BaseTunerLayer'dir.

Dönüş değeri

new_adapter (list[str] | None)

Silme işleminden sonra kalan adaptör(ler)in adı, aktif adaptör kalmadıysa None. Gerekirse modelin yeni aktif adaptörünü ayarlamak için bunu kullanın.

Mevcut bir PEFT adaptörünü silin.

Not: Bu işlev, modelde bir PEFT yapılandırması varsa onu silmez. Son PEFT adaptörü silinse bile PEFT katmanlarını tamamen temizlemez. Bunun için, bir PEFT model örneği kullanıyorsanız model.unload() kullanmayı veya yalnızca temel modeli yeniden yüklemeyi düşünün.

PEFT adaptörünün durum sözlüğünü (state dict) alın

peft.get_peft_model_state_dict

< >

( modelstate_dict = Noneadapter_name: str = 'default'unwrap_compiled: bool = Falsesave_embedding_layers: bool | Literal['auto'] = 'auto' )

Parametreler

  • model (PeftModel) — Peft modeli. torch.nn.DistributedDataParallel, DeepSpeed veya FSDP kullanıldığında, modelin alttaki model/sarmalanan model olması gerekir (yani model.module).
  • state_dict (dict, isteğe bağlı, varsayılan None) — Modelin state dict'i. Sağlanmazsa, iletilen modelin state dict'i kullanılır.
  • adapter_name (str, isteğe bağlı, varsayılan "default") — Durum sözlüğünün (state dict) döndürüleceği adaptörün adı.
  • unwrap_compiled (bool, isteğe bağlı, varsayılan False) — torch.compile kullanıldıysa modelin sarmalayıcısının kaldırılıp kaldırılmayacağı.
  • save_embedding_layers (Union[bool, str], , isteğe bağlı, varsayılan auto) — True ise, adaptör ağırlıklarının yanı sıra gömme katmanları da kaydedilir. auto ise, config’deki target_modules içinde mevcut olduğunda peft.utils.other.EMBEDDING_LAYER_NAMES adlı yaygın gömme katmanlarını kontrol eder. Buna göre boolean bayrağını ayarlar. Bu yalnızca 🤗 transformers modelleri için çalışır.

PEFT modelinin belirtilen adaptörünün durum sözlüğünü (state dict) alın.

Bu, yalnızca PEFT parametrelerini içerir, temel modelin parametrelerini değil. Bu nedenle döndürülen state_dict, tam model boyutuyla karşılaştırıldığında genellikle küçüktür. Tam state_dict'i almak için yalnızca model.state_dict() çağrısını yapmanız yeterlidir.

Adaptör adının, yüklenirken değiştirilebilecek keyfi bir ad olduğu için state_dict içinden kaldırıldığını unutmayın. Dolayısıyla örneğin adaptör adı 'default' ve orijinal anahtar 'model.q_proj.lora_A.default.weight' ise, döndürülen anahtar 'model.q_proj.lora_A.weight' olacaktır. Ağırlıkları yüklerken adaptör adıyla ilgilenmek için bu işlevi set_peft_model_state_dict() ile birlikte kullanın.

PEFT yapılandırmasına dayalı olarak modele bir PEFT adaptörü enjekte edin

peft.inject_adapter_in_model

< >

( peft_config: PeftConfigmodel: torch.nn.Moduleadapter_name: str = 'default'low_cpu_mem_usage: bool = Falsestate_dict: Optional[dict[str, torch.Tensor]] = None )

Parametreler

  • peft_config (PeftConfig) — PEFT modelinin parametrelerini içeren yapılandırma nesnesi.
  • model (torch.nn.Module) — Adaptörün enjekte edileceği girdi modeli.
  • adapter_name (str, optional, varsayılan "default") — Enjekte edilecek adaptörün adı; belirtilmezse varsayılan adaptör adı (“default”) kullanılır.
  • low_cpu_mem_usage (bool, optional, defaults to False) — Meta cihazda boş adaptör ağırlıkları oluşturur. Yükleme sürecini hızlandırmak için faydalıdır.
  • state_dict (dict, isteğe bağlı, varsayılan None) — Buraya bir state_dict geçirilirse, adaptörler state_dict girdilerine göre enjekte edilir. PEFT yönteminin tam target_modules değerlerinin bilinmediği durumlarda, örneğin checkpoint meta veri olmadan oluşturulduğunda bu işe yarayabilir. Not: state_dict içindeki değerler kullanılmaz, yalnızca uyarlanacak doğru katmanları belirlemek için anahtarlar kullanılır.

PEFT katmanlarını oluşturun ve bunları modele yerinde enjekte edin.

Şu anda API, prompt öğrenme yöntemlerini, adaption prompt'u veya adaptör durumunu birden çok hedef katman arasında paylaşan tuner'ları desteklememektedir. Sonuncusu için get_peft_model() kullanın.

Bu fonksiyon get_peft_model() ile benzerdir ancak bir PeftModel örneği döndürmez. Bunun yerine, geçirilen modelin değiştirilmiş orijinal örneğini döndürür.

Modelin aktif PEFT adaptör(ler)ini ayarlayın

peft.tuners.tuners_utils.set_adapter

< >

( modeladapter_name: str | list[str]inference_mode: bool = Falselayer_cls: type[BaseTunerLayer] = <class 'peft.tuners.tuners_utils.BaseTunerLayer'> )

Parametreler

  • model (nn.Module) — Uyarlamanın (uyarlamaların) ayarlanacağı model.
  • adapter_name (str, list[str]) — Aktif olarak ayarlanacak adaptör(ler)in adı(ları)
  • inference_mode (bool, isteğe bağlı) — Aktif olan adaptörün dondurulup dondurulmayacağı (yani requires_grad=False). Varsayılan değer False'tur.
  • layer_cls (type, isteğe bağlı) — Uyarlama katmanının sınıfı. Varsayılan olarak BaseTunerLayer'dir.

Modelin aktif PEFT adaptörünü/adaptörlerini ayarlayın.

Aktif adaptörler, ileri geçişe (forward pass) katılan adaptörlerdir. Birden fazla PEFT adaptörü arasında geçiş yapmak istiyorsanız bu işlevi kullanın.

Belirtilen adaptörlerin eğitim modunu ayarlayın

peft.tuners.tuners_utils.set_training

< >

( modeladapter_names: str | Sequence[str]training: bool = True )

Parametreler

  • model (nn.Module) — Adapter modülünün eğitim modlarının güncellenmesi gereken model.
  • adapter_names (str veya Sequence[str]) — Eğitim modunun güncellenmesi gereken adaptör(ler)in adı.
  • training (bool, isteğe bağlı) — Eğitim modunun etkinleştirilip (True, varsayılan) etkinleştirilmeyeceğini (False) belirtir.

Verilen adaptör modüllerinde eğitim modunu etkinleştirin veya devre dışı bırakın.

Belirtilen adaptörlerin requires_grad öznitelğini ayarlayın

peft.tuners.tuners_utils.set_requires_grad

< >

( modeladapter_names: str | Sequence[str]requires_grad: bool = True )

Parametreler

  • model (nn.Module) — Adaptör gradyan gereksinimlerinin güncellenmesi gereken model.
  • adapter_names (str veya Sequence[str]) — Gradyanları etkinleştirilecek/devre dışı bırakılacak adaptör(ler)in adı.
  • requires_grad (bool, isteğe bağlı) — Etkinleştirilecek (True, varsayılan) veya devre dışı bırakılacak (False).

Verilen adaptör(ler) için gradyanları etkinleştirin veya devre dışı bırakın.

PEFT durum sözlüğünün ağırlıklarını modele yükleyin

peft.set_peft_model_state_dict

< >

( modelpeft_model_state_dictadapter_name = 'default'ignore_mismatched_sizes: bool = Falselow_cpu_mem_usage: bool = False )

Parametreler

  • model (PeftModel) — Peft modeli.
  • peft_model_state_dict (dict) — Peft modelinin state dict'i.
  • adapter_name (str, isteğe bağlı, varsayılan "default") — Durum sözlüğünün ayarlanacağı adaptörün adı.
  • ignore_mismatched_sizes (bool, isteğe bağlı, varsayılan False) — State dict içindeki boyut uyumsuzluklarını yok sayıp saymayacağı.
  • low_cpu_mem_usage (bool, optional, defaults to False) — model meta cihazda adaptör ağırlıklarıyla yüklendiyse, örneğin low_cpu_mem_usage=True ile inject_adapter_in_model çağrıldıysa, bu argüman True olmalıdır. Aksi takdirde False olarak bırakın.

PEFT modelinin state dict'ini ayarlayın.

PEFT state_dict verildiğinde (get_peft_model_state_dict() tarafından döndürüldüğü gibi), ağırlıkları modele yerleştirir. Modelde PEFT adaptörlerinin zaten yerinde olması gerekir (ör. inject_adapter_in_model() ile).

Adaptör ağırlıklarını ayarlamak, adaptör adının yeniden eklenmesini de halleder. Bu ad, adaptörün eğitiminde orijinal olarak kullanılan adın farklı bir adı olabilir.

Update on GitHub