PEFT documentation

Metode penyesuaian halus yang efisien parameter

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

Metode penyesuaian halus yang efisien parameter

Metode PEFT melatih sebanyak mungkin parameter seminimal mungkin sambil menargetkan kinerja yang setara dengan fine-tuning penuh. Parameter yang dapat dilatih lebih sedikit memiliki daya ekspresi yang lebih rendah, sehingga kinerja yang sama tidak dijamin. Sebagai gantinya, Anda menggunakan memori lebih sedikit, sering kali komputasi lebih sedikit, dan mendapatkan fitur seperti hot-swapping cepat antar adapter ahli dan pengurangan lupa terhadap pengetahuan sebelumnya.

Memberikan saran umum untuk melatih model besar itu sulit, tetapi untuk model generatif, terutama model bahasa, Anda dapat mengikuti langkah-langkah berikut:

  1. gunakan prompting (misalnya contoh few-shot dalam prompt) untuk melihat apakah model sudah mampu menyelesaikan tugas tersebut. Jika model menyelesaikan masalah Anda, hebat! Anda sekarang dapat menggunakan Metode berbasis prompt untuk mempelajari prompt dan menghemat token yang berharga.
  2. Jika metode berbasis prompt tidak cukup, Anda dapat menggunakan penyetelan lapisan dan metode adapter. Metode-metode ini umumnya lebih ekspresif daripada metode berbasis prompt dan lebih mendekati penyetelan penuh.
  3. Pastikan untuk mengukur retensi pengetahuan yang sudah dipelajari karena setiap langkah fine-tuning berpotensi melupakan pengetahuan sebelumnya.

Suite perbandingan metode PEFT bertujuan untuk memberikan gambaran umum tentang (sebagian besar) metode yang diimplementasikan pada benchmark dan model tertentu.

Tidak semua metode PEFT diciptakan setara, dan terdapat perbedaan dalam kemampuannya:

  • Kuantisasi: tidak semua metode mendukung model dasar yang dikuantisasi
  • Fitur: tidak semua fitur didukung untuk semua metode (misalnya, beberapa adapter, inferensi adapter campuran, penggabungan/pemisahan)
  • Jenis layer: layer linear umumnya didukung, tetapi tidak semua metode adapter mendukung embedding (penting untuk memperluas kosakata) atau layer konvolusional (penting untuk beberapa model gambar)
  • Runtime: Metode PEFT umumnya menambah overhead runtime, tetapi sebagian dari itu dapat dimitigasi (misalnya, dengan menggabungkan bobot adapter)

Metode berbasis prompt

Prompting menyiapkan model pretrained yang dibekukan untuk tugas turunan tertentu dengan menyertakan prompt teks yang menjelaskan tugas tersebut atau bahkan mendemonstrasikan contoh tugasnya. Dengan prompting, Anda dapat menghindari pelatihan penuh model terpisah untuk setiap tugas turunan, dan sebaliknya menggunakan model pretrained yang dibekukan yang sama. Hal ini jauh lebih mudah karena Anda dapat menggunakan model yang sama untuk beberapa tugas yang berbeda, dan melatih serta menyimpan set parameter prompt yang lebih kecil jauh lebih efisien daripada melatih semua parameter model.

Ada dua kategori metode prompting:

  • hard prompts adalah prompt teks yang dibuat secara manual dengan token input diskrit; kekurangannya adalah dibutuhkan banyak usaha untuk membuat prompt yang baik
  • soft prompts adalah tensor yang dapat dipelajari dan digabungkan dengan input embeddings yang dapat dioptimalkan ke dataset; kekurangannya adalah bahwa soft prompts tidak dapat dibaca oleh manusia karena Anda tidak mencocokkan “virtual tokens” ini dengan embeddings dari kata yang sebenarnya

Perpustakaan PEFT mendukung beberapa jenis metode prompting (p-tuning, prefix tuning, prompt tuning, …), jelajahi daftar isi untuk daftar lengkap metode soft prompt. Jika Anda tertarik menerapkan metode-metode ini untuk tugas dan kasus penggunaan lainnya, lihatlah koleksi notebook kami!

Beberapa pemahaman tentang proses umum pelatihan model bahasa kausal akan sangat membantu dan memungkinkan Anda untuk fokus pada metode soft prompting. Jika Anda baru, kami merekomendasikan untuk melihat panduan Causal language modeling terlebih dahulu dari dokumentasi Transformers. Ketika Anda siap, kembali dan lihat betapa mudahnya memasukkan PEFT ke dalam pelatihan Anda!

Penyetelan Lapisan

Layer Tuning mengategorikan metode yang menargetkan satu jenis lapisan atau satu aspek lapisan secara spesifik, misalnya LayerNorm Tuning hanya menargetkan lapisan LayerNorm dan TrainableTokens hanya menargetkan token tertentu dalam matriks embedding. Hal ini berbeda dengan metode berbasis prompt yang bekerja dengan input model atau metode adapter yang memperluas bobot yang ada dan umumnya lebih independen dari jenis lapisan, dengan menargetkan lapisan linear atau konvolusional.

Metode adapter

Metode adapter dapat dipandang sebagai cara untuk menambahkan matriks yang relatif kecil dan dapat dilatih ke model yang sudah ada untuk fine-tuning. Tujuannya adalah memperkenalkan sedikit parameter yang dapat dilatih untuk mengarahkan model besar ke arah tugas yang memerlukan fine-tuning, guna menghemat sumber daya seperti memori atau komputasi.

Cara populer untuk mewujudkan adapter adalah dengan menyisipkan matriks yang lebih kecil dan dapat dilatih, yang merupakan dekomposisi rank rendah dari tata letak bobot yang diadaptasi, untuk menghemat memori. Ada beberapa cara berbeda untuk menyatakan matriks bobot sebagai dekomposisi rank rendah, tetapi Low-Rank Adaptation (LoRA) adalah metode yang paling umum. Perpustakaan PEFT mendukung beberapa variasi lain dari formulasi ini - beberapa adalah varian langsung dari LoRA dan didokumentasikan di bawah LoRA, beberapa cukup berbeda sehingga dihitung sebagai metode tersendiri, seperti Low-Rank Hadamard Product (LoHa), Low-Rank Kronecker Product (LoKr), dan Adaptive Low-Rank Adaptation (AdaLoRA). Jika Anda tertarik untuk menerapkan metode-metode ini ke tugas dan kasus penggunaan lain seperti segmentasi semantik dan klasifikasi token, lihatlah koleksi notebook kami!

LoRA adalah salah satu metode PEFT yang paling populer dan merupakan titik awal yang baik jika Anda baru mulai menggunakan PEFT. Metode ini awalnya dikembangkan untuk model bahasa besar, tetapi menjadi metode pelatihan yang sangat populer untuk model difusi karena efisiensi dan efektivitasnya.

Low-rank adapters hanyalah salah satu dari banyak formulasi adapter; PEFT juga mengimplementasikan berbagai jenis adapter lainnya. Misalnya, metode Orthogonal Fine-Tuning (OFT, BOFT, …) menggunakan dekomposisi ortogonal dari bobot adapter untuk mencapai ukuran yang kecil. Metode seperti MiSS memecah matriks menjadi shard dan membagikan shard tersebut untuk menghemat memori. IA3 memperkenalkan vektor yang dipelajari untuk menskalakan ulang aktivasi key, value, dan feed-forward.

Update on GitHub