PEFT documentation

Super-Tuning

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

Super-Tuning

Super-Tuning, taban ağırlıkları dondurarak ve ağırlık büyüklüğüne göre seçilen seyrek skaler girişlerin seyrek desteğini eğiten bir seyrek ince ayar yöntemidir. r ayarlandığında, seyrek desteğin üzerine eklenerek birleştirilen LoRA tarzı düşük rütbeli bir adaptör daha tahsis edilir (makalenin “Supra” hibriti).

Varsayılan puanlama yalnızca büyüklüğe dayalıdır ve veri gerektirmez. Makalenin 8B ablasyonu, kalibrasyon adımı gerektirmeden magnitude-topk'ın ortalama %79,02 ile Wanda-ağırlıklı öne çıkma puanlamasının %78,66'sını geride bıraktığını raporluyor. Wanda tarzı aktivasyon-ağırlıklı puanlama bu uygulama tarafından sunulmamaktadır.

Super-Tuning şu anda aşağıdaki kısıtlamaya sahiptir:

  • Yalnızca nn.Linear katmanları desteklenir.

Makalenin özeti şudur:

Parametre-verimli yöntemlerle büyük dil modellerinin ince ayarının yapılması standart bir uygulama haline gelmiş olsa da, LoRA gibi mevcut yaklaşımlar eğitilebilir alt uzayı düşük-rank bir ayrıştırmayla sınırlar. Biz, sabit bir parametre bütçesiyle sınırsız-rank bir eğitilebilir küme olan, bireysel skaler ağırlık girdilerinden oluşan küçük bir destek kümesini seçen Super-Tuning adlı seyrek ince ayar yaklaşımını sunuyoruz. Seçim, budamadan ilham alan öne çıkma sinyalleriyle yönlendirilir: yalnızca büyüklük tabanlı puanlama (PaFi tarzı) veya aktivasyon-ağırlıklı puanlama (Wanda tarzı). Math17K üzerinde değerlendirilen Llama-3.2-1B ve Meta-Llama-3-8B ince ayarlarında, büyüklük tabanlı Super-Tuning'in karşılaştırılabilir parametre bütçelerinde LoRA'yı yakaladığını veya aştığını ve seyrek desteği düşük-rank bir bileşenle birleştiren "Supra" adlı hibrit bir varyantın aşağı akış doğruluğunu daha da artırdığını gösteriyoruz.

Karma performans değerlendirmesi genel bakış

Kullanım

Saf Süper (büyüklük puanlaması, veri gerektirmeyen):

from peft import SupertuningConfig, get_peft_model

config = SupertuningConfig(target_modules=["q_proj", "v_proj"], sparsity=0.99)
model = get_peft_model(base_model, config)

Supra hibrit (seyrek destek + LoRA, toplanarak birleştirilir):

config = SupertuningConfig(
    target_modules=["q_proj", "v_proj"], sparsity=0.99,
    r=8, lora_alpha=16,   # lora_alpha defaults to 2 * r when omitted
)
model = get_peft_model(base_model, config)

SupertuningConfig

sınıf peft.SupertuningConfig

< >

( 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 = Falsetarget_modules: Optional[Union[list[str], str]] = Nonemodules_to_save: Optional[list[str]] = Nonesparsity: float = 0.99select_top: bool = Truer: Optional[int] = Nonelora_alpha: Optional[float] = Nonelora_dropout: float = 0.0init_weights: bool = Truesave_precomputed_indices: bool = True )

Parametreler

  • target_modules (Optional[Union[List[str], str]]) — Uyarlamanın (adapter) uygulanacağı modüllerin adları. String → regex eşleşmesi; list → sonek / tam eşleşme; None → model mimarisi varsayılanı.
  • modules_to_save (Optional[List[str]]) — Supertuning katmanlarının dışında, ayrıca eğitilebilir olması ve nihai checkpoint'te kaydedilmesi gereken modüller (ör. rastgele başlatılmış sınıflandırıcı başlıkları).
  • sparsity (float) — [0.0, 1.0) aralığında hedeflenen seyreklik oranı. 0.99 = ağırlık girdilerinin %1'i eğitilebilir. Varsayılan değer 0.99'dur.
  • select_top (bool) — Büyüklük puanının hangi ucunun eğitilebilir destek olarak korunacağı. True, en büyük büyüklüğe sahip girdileri (makaledeki Super / Supra) korur; False, en küçükleri (makaledeki -bottom varyantları) korur. Makale, en iyi yönün modele ve göreve bağlı olduğunu bildirmektedir. Varsayılan değer True'dir.
  • r (Optional[int]) — “Supra” hibrit için LoRA rank. None (varsayılan) olduğunda, yalnızca seyrek destek eğitilebilir (Super modu). Pozitif bir tamsayı olarak ayarlandığında, ileri geçişte seyrek desteğe eklenen katkısı olan LoRA A ([r, in_features]) ve B ([out_features, r]) parametreleri ayrıca tahsis edilir.
  • lora_alpha (Optional[float]) — Supra modu için LoRA ölçekleme faktörü. None ise ve r ayarlanmışsa, varsayılan olarak 2 * r olur. r is None olduğunda yok sayılır.
  • lora_dropout (float) — Supra modu için LoRA dropout olasılığı. Varsayılan değeri 0.0'dır. r is None olduğunda yok sayılır.
  • init_weights (bool) — True olduğunda (varsayılan), seyrek values sıfır ile başlatılır ve LoRA B sıfır ile başlatılır — adaptör, inşada bir kimlik güncellemesidir. False olduğunda, her ikisi de Kaiming-uniform kullanır (testlerde triviyal olmayan bir adaptörü denemek için kullanılır). LoRA A her iki durumda da Kaiming-uniform kullanır.
  • save_precomputed_indices (bool) — State dict içinde seyrek destek indekslerinin kaydedilip kaydedilmeyeceğini belirtir. Varsayılan değer True'dir. Kontrol noktası boyutunu küçültmek için False olarak ayarlayın — indeksler, yükleme sırasında taban ağırlık büyüklüklerinden deterministik olarak yeniden oluşturulacaktır. Yeniden oluşturma, taban model ağırlıklarının eğitim sırasında kullanılanlarla aynı olduğunu varsayar; küçük sayısal sapmalar, topk eşitlik kırma sonuçlarının farklılaşmasına neden olabilir.

SupertuningModel için yapılandırma sınıfı.

Super-Tuning (arXiv:2607.09287) taban ağırlığı dondurur ve yalnızca ağırlık büyüklüğüne göre seçilen seyrek bir skaler giriş desteğini eğitir. r ayarlandığında, seyrek desteğin üzerine LoRA tarzı düşük rütbeli bir adaptör daha atanır (makalenin “Supra” hibriti).

Varsayılan (büyüklük puanlaması, r=None), makalenin en iyi raporlanan tek mekanizma yapılandırmasını yeniden üretir: Meta-Llama-3-8B üzerinde, %79,02 ortalama ile magnitude-topk, %78,66 ile Wanda'yı geride bırakır VE kalibrasyon geçişi gerektirmez. Wanda tarzı aktivasyon ağırlıklı puanlama, bu uygulama tarafından sunulmamaktadır.

Makale: https://arxiv.org/abs/2607.09287

SupertuningModel

sınıf peft.SupertuningModel

< >

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

Parametreler

  • model (PreTrainedModel) — Uyarlanacak temel model.
  • config (SupertuningConfig) — Supertuning yapılandırması.
  • adapter_name (str) — Adaptör adı. Varsayılan olarak "default".
  • low_cpu_mem_usage (bool, isteğe bağlı) — Yüklemeyi hızlandırmak için boş adaptör ağırlıklarını meta cihazında oluşturur.

Dönüş değeri

torch.nn.Module

Supertuning ile sarılmış model.

Super-Tuning ayarlayıcısı (arXiv:2607.09287).

Taban ağırlıkları dondurur ve yalnızca ağırlık büyüklüğüne göre seçilen seyrek bir skaler giriş desteğini eğitir (makalenin en iyi tek mekanizma yapılandırması; veri gerektirmez). config.r ayarlandığında, seyrek destekle toplanarak birleştirilen LoRA A/B parametreleri ek olarak tahsis edilir — makalenin Supra hibriti.

Örnek (saf Super):

>>> from transformers import AutoModelForCausalLM
>>> from peft import SupertuningConfig, get_peft_model

>>> base = AutoModelForCausalLM.from_pretrained("meta-llama/Llama-3.2-1B")
>>> config = SupertuningConfig(target_modules=["q_proj", "v_proj"], sparsity=0.99)
>>> model = get_peft_model(base, config)

Örnek (Supra hibrit):

>>> config = SupertuningConfig(
...     target_modules=["q_proj", "v_proj"],
...     sparsity=0.99,
...     r=8,
...     lora_alpha=16,
... )
>>> model = get_peft_model(base, config)

Makale: https://arxiv.org/abs/2607.09287

Update on GitHub