# WaveFT: Wavelet İnce Ayarı

[WaveFT](https://huggingface.co/papers/2505.12532), 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ış

<iframe src="https://peft-internal-testing-peft-method-comparison-embed.hf.space/?highlight[type]=WAVEFT" frameborder="0" width="850" height="1000"
>

# API

## WaveFTConfig[[peft.WaveFTConfig]]

#### peft.WaveFTConfig[[peft.WaveFTConfig]]

```python
peft.WaveFTConfig(task_type: Optional[Union[str, TaskType]] = None, peft_type: Optional[Union[str, PeftType]] = None, auto_mapping: Optional[dict] = None, peft_version: Optional[str] = None, base_model_name_or_path: Optional[str] = None, revision: Optional[str] = None, inference_mode: bool = False, n_frequency: int = 2592, scaling: float = 25.0, wavelet_family: str = 'db1', use_idwt: bool = True, random_loc_seed: int = 777, fan_in_fan_out: bool = False, target_modules: Optional[Union[list[str], str]] = None, exclude_modules: Optional[Union[list[str], str]] = None, bias: str = 'none', modules_to_save: Optional[list[str]] = None, layers_to_transform: Optional[Union[list[int], int]] = None, layers_pattern: Optional[Union[list[str], str]] = None, n_frequency_pattern: Optional[dict] = <factory>, proportional_parameters: bool = False, init_weights: bool = True)
```

[Kaynak](https://github.com/huggingface/peft/blob/main/src/peft/tuners/waveft/config.py#L27)

**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 uyarlama 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, 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, 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ı 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 doğrudan seyrek bir delta ağırlık matrisi oluşturmak için kullanılır; bu yöntem daha hızlıdır ancak SDXL kişiselleştirme görevinde daha düşük performans gösterir.

random_loc_seed (`int`) : `n_frequency` öğrenilebilir wavelet katsayılarının tam wavelet katsayı matrisi içindeki 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ı listesi veya modüller için 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 ayarlanır. Varsayılan değer `False`'tür.

bias (`str`) : WaveFT için sapma (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 sapma eklendiğini ima ediyorsa 'waveft_only' olarak düzeltilmiştir) 'waveft_only' seçilirse, sapmalar yalnızca WaveFT bileşenlerine eklenir. 'all' seçilirse, sapmalar hem temel hem de WaveFT bileşenlerine eklenir. 'none' seçilirse, yeni sapma 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. Sıralı veya token sınıflandırma görevlerindeki gibi rastgele başlatılan ve eğitim gerektiren sınıflandırıcı gibi katmanlar için faydalıdır.

layers_to_transform (`Union[list[int],int]`) : Dönüştürülecek belirli katman indeksleri. Verilirse, 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'leri) 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 dalgaç 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çeklendirilmiş 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 tahsis edilir. 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](/docs/peft/main/tr/package_reference/waveft#peft.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[[peft.WaveFTModel]]

#### peft.WaveFTModel[[peft.WaveFTModel]]

```python
peft.WaveFTModel(model, peft_config: Union[PeftConfig, dict[str, PeftConfig]], adapter_name: str, low_cpu_mem_usage: bool = False, state_dict: Optional[dict[str, torch.Tensor]] = None)
```

[Kaynak](https://github.com/huggingface/peft/blob/main/src/peft/tuners/waveft/model.py#L30)

