PEFT documentation

Polytropon

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

Polytropon

Polytropon adalah model multitask dengan sejumlah adapter LoRA yang berbeda dalam “inventaris”-nya. Model ini mempelajari kombinasi adapter yang tepat dari inventaris tersebut menggunakan fungsi routing untuk memilih subset modul terbaik untuk tugas tertentu. PEFT juga mendukung Multi-Head Adapter Routing (MHR) untuk Polytropon, yang membangun dan meningkatkan fungsi routing dengan menggabungkan kepala adapter secara lebih granular. Kepala-kepala adapter dipisahkan ke dalam blok-blok yang tidak tumpang tindih, dan fungsi routing yang berbeda dipelajari untuk masing-masing blok, sehingga memungkinkan ekspresivitas yang lebih besar.

Menggabungkan Keterampilan Modular dalam Pembelajaran Multi-Tugas
Routing Adapter Multi-Head untuk Generalisasi Lintas Tugas

Abstrak dari makalah tersebut adalah:

Desain modular mendorong model neural untuk memisahkan dan menggabungkan kembali berbagai aspek pengetahuan agar dapat digeneralisasi secara lebih sistematis ke tugas-tugas baru. Dalam karya ini, kami mengasumsikan bahwa setiap tugas terkait dengan subset dari kumpulan keterampilan diskrit laten (yang mungkin kecil). Sebaliknya, keterampilan tersebut berkorespondensi dengan parameterisasi model yang efisien secara parameter (sparse / low-rank). Dengan mempelajari secara bersama-sama parameterisasi ini dan matriks alokasi tugas-keterampilan, jaringan untuk setiap tugas diinstansiasi sebagai rata-rata dari parameter keterampilan yang aktif. Untuk mendorong partisi lunak keterampilan yang tidak sepele di antara tugas-tugas, kami bereksperimen dengan serangkaian bias induktif, seperti prior Indian Buffet Process dan learning rate dua kecepatan. Kami mengevaluasi model keterampilan laten kami pada dua pengaturan utama: 1) pembelajaran penguatan multitask untuk mengikuti instruksi yang berakar pada 8 level platform BabyAI; dan 2) adaptasi few-shot dari model generatif teks-ke-teks yang telah dilatih sebelumnya pada CrossFit, sebuah benchmark yang terdiri dari 160 tugas NLP. Kami menemukan bahwa desain modular dari jaringan secara signifikan meningkatkan efisiensi sampel dalam pembelajaran penguatan dan generalisasi few-shot dalam pembelajaran terawasi, dibandingkan dengan baseline yang menggunakan parameter yang sepenuhnya dibagikan, spesifik tugas, atau dihasilkan secara kondisional, di mana pengetahuan terjerat di antara tugas-tugas. Selain itu, kami menunjukkan bagaimana keterampilan diskrit membantu interpretabilitas, karena menghasilkan hierarki tugas yang eksplisit.

Jika Anda ingin mencoba routing terlebih dahulu tanpa pelatihan, Anda dapat melihat varian Arrow LoRA.

API

PolyConfig

kelas peft.PolyConfig

< >

( 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 = Falser: int = 8target_modules: Optional[Union[list[str], str]] = Noneexclude_modules: Optional[Union[list[str], str]] = Nonemodules_to_save: Optional[list[str]] = Noneinit_weights: bool = Truepoly_type: Literal['poly'] = 'poly'n_tasks: int = 1n_skills: int = 4n_splits: int = 1 )

Parameter

  • r (int) — Dimensi perhatian dari setiap Lora dalam Poly.
  • target_modules (Union[List[str],str]) — Nama-nama modul yang akan diterapkan Poly.
  • exclude_modules (Optional[Union[List[str], str]]) — Nama-nama modul yang tidak akan diterapkan adapter. Saat melewatkan string, pencocokan regex akan dilakukan. Saat melewatkan daftar string, pencocokan persis akan dilakukan atau diperiksa apakah nama modul berakhiran dengan salah satu string yang dilewatkan.
  • modules_to_save (List[str]) — Daftar modul selain lapisan Poly yang akan diatur sebagai dapat dilatih dan disimpan dalam checkpoint akhir.
  • init_weights (bool) — Apakah akan melakukan inisialisasi bobot Poly.
  • poly_type (Literal["poly"]) — Varian modul Poly yang akan digunakan. Saat ini, hanya “poly” yang didukung.
  • n_tasks (int) — Jumlah tugas dalam skenario multitasking.
  • n_skills (int) — Jumlah skill (LoRA) di setiap lapisan Poly.
  • n_splits (int) — Jumlah split di dalam setiap LoRA dari lapisan Poly. Nilai yang lebih besar dari 1 menunjukkan penggunaan Multi-Head Routing (MHR).

Ini adalah kelas konfigurasi untuk menyimpan konfigurasi dari PolyModel.

PolyModel

kelas peft.PolyModel

< >

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

Update on GitHub