PEFT documentation
Super-Tuning
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.Linearkatmanları 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
< source >( 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ğer0.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-bottomvaryantları) korur. Makale, en iyi yönün modele ve göreve bağlı olduğunu bildirmektedir. Varsayılan değerTrue'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 LoRAA([r, in_features]) veB([out_features, r]) parametreleri ayrıca tahsis edilir. - lora_alpha (
Optional[float]) — Supra modu için LoRA ölçekleme faktörü.Noneise verayarlanmışsa, varsayılan olarak2 * rolur.r is Noneolduğunda yok sayılır. - lora_dropout (
float) — Supra modu için LoRA dropout olasılığı. Varsayılan değeri0.0'dır.r is Noneolduğunda yok sayılır. - init_weights (
bool) —Trueolduğunda (varsayılan), seyrekvaluessıfır ile başlatılır ve LoRABsıfır ile başlatılır — adaptör, inşada bir kimlik güncellemesidir.Falseolduğunda, her ikisi de Kaiming-uniform kullanır (testlerde triviyal olmayan bir adaptörü denemek için kullanılır). LoRAAher 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ğerTrue'dir. Kontrol noktası boyutunu küçültmek içinFalseolarak 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
< source >( 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