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 adalah metode fine-tuning spars yang membekukan bobot dasar dan hanya melatih dukungan spars dari entri skalar yang dipilih berdasarkan magnitudo bobot. Pengaturan r secara tambahan mengalokasikan adapter low-rank bergaya LoRA yang dikomposisikan secara aditif di atas dukungan spars (hibrida β€œSupra” dari makalah tersebut).

Penilaian default hanya berdasarkan magnitudo dan bebas data. Ablasi 8B dalam makalah melaporkan bahwa magnitude-topk dengan rata-rata 79,02% melampaui saliency berbobot Wanda sebesar 78,66% tanpa memerlukan jalur kalibrasi. Penilaian berbobot aktivasi gaya Wanda tidak disediakan oleh implementasi ini.

Super-Tuning saat ini memiliki batasan berikut:

  • Hanya lapisan nn.Linear yang didukung.

Abstrak dari makalah tersebut adalah:

Fine-tuning model bahasa besar dengan metode yang efisien secara parameter telah menjadi praktik standar, tetapi pendekatan yang ada seperti LoRA membatasi subspace yang dapat dilatih pada dekomposisi ber-rank rendah. Kami memperkenalkan Super-Tuning, sebuah pendekatan fine-tuning spars yang memilih dukungan kecil dari entri bobot skalar individual β€” sebuah himpunan yang dapat dilatih dengan rank tak terbatas pada anggaran parameter yang tetap. Pemilihan dipandu oleh sinyal saliens yang terinspirasi dari pruning: penilaian berbasis magnitudo saja (gaya PaFi) atau penilaian yang berbobot aktivasi (gaya Wanda). Kami menunjukkan bahwa pada fine-tune Llama-3.2-1B dan Meta-Llama-3-8B yang dievaluasi pada Math17K, Super-Tuning berbasis magnitudo menyamai atau melampaui LoRA pada anggaran parameter yang sebanding, dan bahwa varian hibrida β€œSupra” β€” yang menggabungkan dukungan spars dengan komponen ber-rank rendah β€” lebih meningkatkan akurasi hilir.

Ikhtisar benchmark

Penggunaan

Pure Super (penilaian magnitudo, tanpa data):

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 hybrid (dukungan sparse + LoRA yang dikomposisi secara aditif):

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

kelas 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 )

Parameter

  • target_modules (Optional[Union[List[str], str]]) β€” Nama-nama modul yang akan diterapkan adapter-nya. String β†’ cocokan regex; list β†’ cocokan akhiran / persis; None β†’ default arsitektur model.
  • modules_to_save (Optional[List[str]]) β€” Modul di luar lapisan Supertuning yang juga harus dapat dilatih dan disimpan dalam checkpoint akhir (contohnya, kepala klasifikasi yang diinisialisasi secara acak).
  • sparsity (float) β€” Rasio sparsity target dalam [0.0, 1.0). 0.99 = 1% entri bobot yang dapat dilatih. Defaultnya adalah 0.99.
  • select_top (bool) β€” Ujung skor magnitudo mana yang akan dipertahankan sebagai dukungan yang dapat dilatih. True mempertahankan entri dengan magnitudo terbesar (Super / Supra dari makalah); False mempertahankan yang terkecil (varian -bottom dari makalah). Makalah melaporkan bahwa arah terbaik bergantung pada model dan tugas. Defaultnya adalah True.
  • r (Optional[int]) β€” Rank LoRA untuk hibrida β€œSupra”. Ketika None (default), hanya dukungan sparse yang dapat dilatih (mode Super). Ketika diset ke bilangan bulat positif, secara tambahan mengalokasikan parameter LoRA A ([r, in_features]) dan B ([out_features, r]) yang kontribusinya ditambahkan ke dukungan sparse pada forward pass.
  • lora_alpha (Optional[float]) β€” Faktor penskalaan LoRA untuk mode Supra. Jika None dan r diset, defaultnya adalah 2 * r. Diabaikan ketika r is None.
  • lora_dropout (float) β€” Probabilitas dropout LoRA untuk mode Supra. Bawaan adalah 0.0. Diabaikan ketika r is None.
  • init_weights (bool) β€” Ketika True (default), values sparse diinisialisasi nol dan LoRA B diinisialisasi nol β€” adapter adalah pembaruan identitas saat konstruksi. Ketika False, keduanya menggunakan Kaiming-uniform (digunakan oleh tes untuk menguji adapter yang tidak trivial). LoRA A menggunakan Kaiming-uniform dalam kedua kasus.
  • save_precomputed_indices (bool) β€” Apakah akan menyimpan indeks sparse-support dalam state dict. Defaultnya adalah True. Atur ke False untuk mengurangi ukuran checkpoint β€” indeks akan direkonstruksi secara deterministik dari magnitudo bobot dasar saat pemuatan. Rekonstruksi mengasumsikan bobot model dasar identik dengan yang digunakan saat pelatihan; pergeseran numerik kecil dapat menyebabkan perbedaan pada tie-break topk.

Kelas konfigurasi untuk SupertuningModel.

Super-Tuning (arXiv:2607.09287) membekukan bobot dasar dan hanya melatih dukungan sparsis dari entri skalar, yang dipilih berdasarkan magnitudo bobot. Pengaturan r secara tambahan mengalokasikan adapter low-rank bergaya LoRA di atas dukungan sparsis (hibrida β€œSupra” dari makalah tersebut).

Konfigurasi default (skoring magnitudo, r=None) mereproduksi konfigurasi mekanisme tunggal dengan hasil terbaik yang dilaporkan dalam makalah: pada Meta-Llama-3-8B, magnitude-topk dengan rata-rata 79,02% mengalahkan Wanda di 78,66% DAN tidak memerlukan jalur kalibrasi. Skoring berbobot aktivasi bergaya Wanda tidak disediakan oleh implementasi ini.

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

SupertuningModel

kelas 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

Parameter

  • model (PreTrainedModel) β€” Model dasar yang akan diadaptasi.
  • config (SupertuningConfig) β€” Konfigurasi Supertuning.
  • adapter_name (str) β€” Nama adapter. Defaultnya adalah "default".
  • low_cpu_mem_usage (bool, opsional) β€” Buat bobot adapter kosong pada perangkat meta untuk mempercepat pemuatan.

Mengembalikan

torch.nn.Module

Model yang dibungkus Supertuning.

Super-Tuning tuner (arXiv:2607.09287).

Membekukan bobot dasar dan hanya melatih dukungan sparsis dari entri skalar yang dipilih berdasarkan magnitudo bobot (konfigurasi mekanisme tunggal terbaik dari makalah; tanpa data). Ketika config.r disetel, secara tambahan mengalokasikan parameter LoRA A/B yang dikomposisikan secara aditif dengan dukungan sparsis β€” Supra hibrida dari makalah.

Contoh (Super murni):

>>> 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)

Contoh (Supra hybrid):

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

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

Update on GitHub