PEFT documentation
RoAd
RoAd
RoAd adalah teknik fine-tuning yang efisien secara parameter, yang menyesuaikan model bahasa besar dengan mempelajari seperangkat kecil matriks rotasi 2×2 (dan faktor penskalaan opsional) yang diterapkan pada pasangan dimensi tersembunyi. RoAd mencapai kinerja yang kompetitif atau lebih unggul dibandingkan metode PEFT lainnya dengan kurang dari 0,1% parameter yang dapat dilatih. Berbeda dengan pembaruan peringkat rendah yang di-batch pada LoRA, rotasi sparse pada RoAd dirumuskan ulang menjadi operasi element-wise sederhana, sehingga menghasilkan throughput serving yang jauh lebih tinggi saat menangani permintaan heterogen dalam batch yang sama, yaitu saat melayani beberapa adapter secara bersamaan. Selain itu, RoAd terintegrasi dengan mulus ke dalam kerangka intervensi pertukaran terdistribusi, dengan menafsirkan rotasi 2D sparse-nya sebagai intervensi spesifik tugas di dalam subruang yang dipelajari dari representasi tersembunyi. Subruang ortogonal ini dapat dikomposisikan untuk menggabungkan beberapa perilaku spesifik tugas—seperti kemampuan multibahasa atau kepatuhan terhadap instruksi—tanpa fine-tuning tambahan, sehingga memungkinkan adaptasi yang modular dan dapat diinterpretasikan pada LLM.
Finetuning dengan RoAd umumnya memerlukan learning rate yang lebih tinggi dibandingkan LoRA atau metode serupa, sekitar 1e-3. Saat ini RoAd hanya mendukung linear layers dan dapat digunakan pada model yang dikuantisasi dengan bitsandbytes (4-bit atau 8-bit).
Untuk menjalankan inferensi dengan adapter RoAd yang berbeda dalam batch yang sama, lihat Inferensi dengan adapter LoRA yang berbeda dalam batch yang sama.
Ikhtisar benchmark
API
RoadConfig
kelas peft.RoadConfig
< 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 = Falsevariant: Union[str, RoadVariant] = 'road_1'group_size: int = 64init_weights: bool = Truetarget_modules: Optional[Union[list[str], str]] = Nonemodules_to_save: Optional[list[str]] = None )
Parameter
- variant (Union[
RoadVariant,str]) — Varian model Road yang akan digunakan. Nilainya dapat berupa road_1, road_2, atau road_4. Lihat makalah untuk detail lebih lanjut.- road_1: Menggunakan skala dan sudut yang sama untuk semua pasangan elemen. Variasi ini memiliki jumlah parameter terendah, menyimpan sejumlah parameter yang sama dengan ukuran tersembunyi keluaran untuk setiap lapisan yang RoAd diterapkan.
- road_2: Menggunakan skala dan sudut yang sama untuk setiap elemen. Variasi ini memiliki 2x jumlah parameter dibandingkan road_1.
- road_4: Menggunakan dua skala dan sudut yang berbeda untuk setiap elemen. Variasi ini memiliki 4x jumlah parameter dibandingkan dengan road_1.
- group_size (
int) — Group size menentukan bagaimana elemen dikelompokkan menjadi vektor 2D untuk rotasi. Di dalam setiap grup, elemen 0 dipasangkan dengan elemen group_size/2, kemudian elemen 1 dipasangkan dengan elemen group_size/2+1, dan begitu seterusnya. Hal ini tidak memengaruhi kinerja model, karena elemen bersifat tidak berurutan, namun memiliki dampak tertentu pada kecepatan inferensi ketika digunakan, misalnya di VLLM. Untuk kecepatan terbaik, disarankan menggunakan group size minimal 32 atau 64 (nilai default). Perhatikan bahwa hidden size model (atau hidden size per partisi ketika digunakan dengan tensor parallelism) harus dapat dibagi habis oleh group_size, sehingga untuk model yang sangat kecil Anda mungkin perlu mengurangi parameter ini. - init_weights (
bool) — Apakah akan melakukan inisialisasi bobot RoAd. - target_modules (
Optional[Union[List[str], str]]) — Nama-nama modul yang akan diterapkan adapter-nya. Jika ini ditentukan, hanya modul dengan nama yang ditentukan yang akan diganti. Saat meneruskan string, pencocokan regex akan dilakukan. Saat meneruskan daftar string, pencocokan persis akan dilakukan atau diperiksa apakah nama modul diakhiri dengan salah satu string yang diteruskan. Jika ini ditentukan sebagai ‘all-linear’, maka semua modul linear/Conv1D akan dipilih (jika modelnya adalah PreTrainedModel, lapisan output dikecualikan). Jika ini tidak ditentukan, modul akan dipilih sesuai dengan arsitektur model. Jika arsitekturnya tidak diketahui, error akan dilempar — dalam kasus ini, Anda harus menentukan modul target secara manual. - modules_to_save (
List[str]) — Daftar modul selain lapisan Road yang akan diset sebagai trainable dan disimpan dalam checkpoint akhir.
Ini adalah kelas konfigurasi untuk menyimpan konfigurasi dari RoadModel. Adapter RoAd diusulkan dalam https://huggingface.co/papers/2409.00119.
RoadModel
kelas peft.RoadModel
< source >( modelpeft_config: Union[PeftConfig, dict[str, PeftConfig]]adapter_name: strlow_cpu_mem_usage: bool = Falsestate_dict: Optional[dict[str, torch.Tensor]] = None )