PEFT documentation

WaveFT: Wavelet İnce Ayarı

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

WaveFT: Wavelet İnce Ayarı

WaveFT, art matrislerinin wavelet alanındaki seyrek güncellemeler tanıtan yeni bir parametre-verimli ince ayar (PEFT) yöntemidir. LoRA'nın ayrık düşük-rank seçimleriyle sınırlı kalmasının aksine WaveFT, dönüştürülmüş uzayda doğrudan seyrek bir katsayı kümesi öğrenerek eğitilebilir parametre sayısı üzerinde ince taneli kontrol sağlar. Bu katsayılar daha sonra Ters Ayrık Wavelet Dönüşümü (IDWT) aracılığıyla ağırlık alanına geri eşlenir ve çıkarım maliyeti oluşturmadan yüksek-rank güncellemeler üretir.

WaveFT şu anda aşağıdaki kısıtlamaya sahiptir:

  • Yalnızca nn.Linear katmanları desteklenir.

Makalenin özeti şudur:

Büyük temel modellerin verimli bir şekilde uyarlanması, özellikle sıkı hesaplama ve bellek bütçeleri söz konusu olduğunda kritik öneme sahiptir. LoRA gibi Parametre Verimli İnce Ayar (PEFT) yöntemleri, düşük parametreli ortamlarda sınırlı bir granülerlik ve etkililik sunar. Biz, Wavelet İnce Ayar (WaveFT) adını verdiğimiz, kalıntı matrislerinin wavelet alanında son derece seyrek güncellemeler öğrenen yeni bir PEFT yöntemi öneriyoruz. WaveFT, eğitilebilir parametrelerin hassas kontrolüne olanak tanıyarak ince taneli kapasite ayarlaması sağlar ve şaşırtıcı derecede düşük parametre sayısıyla üstün performans gösterir; bu sayı, LoRA'nın minimumundan çok daha düşük olabilir—bu da aşırı parametre verimli senaryolar için idealdir. Stable Diffusion XL taban olarak kullanılarak kişiselleştirilmiş metinden görüntüye üretimde değerlendirilen WaveFT, özellikle düşük parametre sayılarında LoRA ve diğer PEFT yöntemlerini önemli ölçüde geride bırakarak üstün konu sadakati, istem uyumu ve görüntü çeşitliliği elde eder.

Karma performans değerlendirmesi genel bakış

API

WaveFTConfig

sınıf peft.WaveFTConfig

< >

( task_type: Optional[Union[str, TaskType]] = Nonepeft_type: Optional[Union[str, PeftType]] = Noneauto_mapping: Optional[dict] = Nonepeft_version: Optional[str] = Nonebase_model_name_or_path: Optional[str] = Nonerevision: Optional[str] = Noneinference_mode: bool = Falsen_frequency: int = 2592scaling: float = 25.0wavelet_family: str = 'db1'use_idwt: bool = Truerandom_loc_seed: int = 777fan_in_fan_out: bool = Falsetarget_modules: Optional[Union[list[str], str]] = Noneexclude_modules: Optional[Union[list[str], str]] = Nonebias: str = 'none'modules_to_save: Optional[list[str]] = Nonelayers_to_transform: Optional[Union[list[int], int]] = Nonelayers_pattern: Optional[Union[list[str], str]] = Nonen_frequency_pattern: Optional[dict] = <factory>proportional_parameters: bool = Falseinit_weights: bool = True )

Parametreler

  • n_frequency (int) — Discrete Wavelet Transform (DWT) için öğrenilebilir wavelet katsayılarının sayısı. ‘n_frequency’, 0'dan büyük ve orijinal ağırlık matrisindeki (d_out * d_in) toplam eleman sayısına eşit veya ondan küçük olan bir tam sayıdır. Bu parametre, her uyarlanmış katman için eğitilebilir parametre sayısını doğrudan kontrol eder. Daha yüksek bir ‘n_frequency’ genellikle daha iyi performans sağlar ancak GPU bellek kullanımını da artırır; eğitim hızı üzerindeki etkisi ise önemsizdir.
  • scaling (float) — Yeniden oluşturulan delta W matrisine uygulanan ölçekleme faktörü. Bu, LoRA'daki lora_alpha'ya benzer şekilde kritik bir hiperparametredir. Hiperparametre araması sırasında ayarlanabilir. SDXL kişiselleştirme için varsayılan değerimiz 25'tir.
  • wavelet_family (str) — DWT ve Ters DWT (IDWT) için kullanılacak dalgalet ailesi (ör. ‘db1’, ‘sym2’, ‘coif1’). Varsayılan değer ‘db1’ (Haar dalgaleti)dir. Farklı dalgalet ailelerinin değişken filtre uzunlukları vardır ve bu durum eğitim süresini önemli ölçüde etkiler
  • use_idwt (bool) — Verimli uyarlama için False olarak ayarlayın. Öğrenilen wavelet katsayılarından delta ağırlıklarını yeniden oluşturmak için Ters Ayrık Wavelet Dönüşümü'nün (IDWT) kullanılıp kullanılmayacağını belirtir. True (varsayılan) ise IDWT uygulanır. False ise öğrenilen katsayılar, SDXL kişiselleştirme görevinde daha yavaş ama daha kötü performans gösteren seyrek bir delta ağırlık matrisi oluşturmak için doğrudan kullanılır.
  • random_loc_seed (int) — Tam wavelet katsayı matrisi içindeki n_frequency öğrenilebilir wavelet katsayılarının rastgele konumlarını belirlemek için kullanılan tohum.
  • target_modules (Union[list[str],str]) — WaveFT ile uyarlanacak modülleri belirleyen modül adlarının listesi veya bir regex ifadesi. Örneğin, ['q_proj', 'v_proj'] veya '.*decoder.*(SelfAttention|EncDecAttention).*(q|v)$'. Şu anda yalnızca lineer katmanlar (torch.nn.Linear) desteklenmektedir.
  • exclude_modules (Optional[Union[List[str], str]]) — WaveFT uyarlama işleminden hariç tutulacak modüllerin adlarının listesi veya bir regex ifadesi.
  • fan_in_fan_out (bool) — Değiştirilecek katmanın ağırlıkları (fan_in, fan_out) biçiminde saklanıyorsa True olarak ayarlayın. Varsayılan değer False'tür.
  • bias (str) — WaveFT için bias türü. ‘none’, ‘all’ veya ‘waveft_only’ olabilir. (‘fourier_only’ büyük olasılıkla bir yazım hatasıdır ve yalnızca uyarlanan parametrelere bias eklendiğini ima ediyorsa ‘waveft_only’ olarak düzeltilmiştir) ‘waveft_only’ seçilirse, bias'lar yalnızca WaveFT bileşenlerine eklenir. ‘all’ seçilirse, bias'lar hem temel hem de WaveFT bileşenlerine eklenir. ‘none’ seçilirse, yeni bias eklenmez.
  • modules_to_save (list[str]) — WaveFT katmanlarının yanı sıra, eğitilebilir olarak işaretlenmesi ve nihai checkpoint'te kaydedilmesi gereken modüllerin listesi. Rastgele başlatılan ve eğitim gerektiren, örneğin dizi veya token sınıflandırma görevlerindeki sınıflandırıcılar gibi katmanlar için faydalıdır.
  • layers_to_transform (Union[list[int],int]) — Dönüştürülecek belirli katman indeksleri. Verildiğinde, PEFT yalnızca bu indekslerdeki katmanları uyarlar. Tek bir tamsayı verilirse, yalnızca o katman dönüştürülür.
  • layers_pattern (Optional[Union[List[str], str]]) — Katman adları için desen, layers_to_transform belirtildiğinde ve katman deseni standart değilse (ör. ‘layers’ veya ‘h’ değilse) kullanılır. Bu, modeldeki nn.ModuleList öznitelğine yönelik olmalıdır.
  • n_frequency_pattern (dict) — Katman adlarını (veya regex) belirli n_frequency değerlerine eşleyen, küresel n_frequency değerini geçersiz kılan bir sözlük. Örnek: {"model.decoder.layers.0.encoder_attn.k_proj": 1000}.
  • init_weights (bool) — Öğrenilebilir wavelet katsayılarının (spektrum) başlatma stratejisi. True (varsayılan) ise, katsayılar sıfıra başlatılır. False ise, katsayılar küçük bir çarpanla ölçeklenmiş standart normal dağılımdan başlatılır.
  • proportional_parameters (bool) — True ise, n_frequency her katmanın input_dim * output_dim değerine orantılı olarak atanır. Varsayılan değer False'tir. Not: Bu seçenek, pratik bir fayda sağlamak için değil, faydalı senaryolar belirlenmemiş olsa da araştırmacıların makale sonuçlarını yeniden üretebilmesine olanak tanımak amacıyla deneysel kapsamlılık için dahil edilmiştir.

Bu, WaveFTModel yapılandırmasını depolamak için kullanılan yapılandırma sınıfıdır. Wavelet tabanlı İnce Ayar (WaveFT) parametreleri için kullanılır; bu yaklaşım, önceden eğitilmiş modellerin parametre verimli ince ayarı için wavelet dönüşümlerinin seyrekliğini (sparsity) kullanır.

WaveFTModel

sınıf peft.WaveFTModel

< >

( modelpeft_config: Union[PeftConfig, dict[str, PeftConfig]]adapter_name: strlow_cpu_mem_usage: bool = Falsestate_dict: Optional[dict[str, torch.Tensor]] = None )

Update on GitHub