PEFT documentation

Tuners

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

Tuners

Tuner (atau adapter) adalah modul yang dapat disambungkan ke torch.nn.Module. Kelas dasar BaseTuner untuk tuner lainnya dan menyediakan metode serta atribut bersama untuk menyiapkan konfigurasi adapter dan mengganti modul target dengan modul adapter. BaseTunerLayer adalah kelas dasar untuk lapisan adapter. Kelas ini menawarkan metode dan atribut untuk mengelola adapter, seperti mengaktifkan dan menonaktifkan adapter.

BaseTuner

kelas peft.tuners.tuners_utils.BaseTuner

< >

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

Parameter

  • model (torch.nn.Module) β€” Model tempat lapisan tuner adapter akan dilampirkan.
  • forward (Callable) β€” Metode forward dari model.
  • peft_config (Union[PeftConfig, dict[str, PeftConfig]]) β€” Objek konfigurasi adapter, seharusnya berupa kamus dari str ke objek PeftConfig. Anda juga dapat melewati objek PeftConfig dan adapter baru akan dibuat dengan nama default adapter atau membuat kamus baru dengan kunci adapter_name dan nilai berupa peft config tersebut.
  • config (dict[str, Any]) β€” Objek konfigurasi model, seharusnya berupa kamus dari objek str ke Any.
  • targeted_module_names (list[str]) β€” Daftar nama modul yang benar-benar diadaptasi. Dapat berguna untuk memeriksa jika Anda ingin dengan cepat memastikan bahwa config.target_modules telah ditentukan dengan benar.
  • targeted_parameter_names (list[str]) β€” Daftar nama parameter yang benar-benar diadaptasi. Dapat berguna untuk memeriksa jika Anda ingin dengan cepat memastikan bahwa config.target_parameters telah ditentukan dengan benar.
  • prefix (str) β€” Prefiks unik yang spesifik untuk metode PEFT. Misalnya, "lora_" untuk LoRA.

Model tuner dasar yang menyediakan metode dan atribut umum untuk semua tuner yang dapat disuntikkan ke dalam torch.nn.Module

Untuk menambahkan kelas Tuner baru, Anda perlu menimpa metode-metode berikut:

  • _prepare_adapter_config: Metode privat untuk menyiapkan konfigurasi adapter, misalnya jika field target_modules tidak ada.
  • _create_and_replace: Metode privat untuk membuat dan mengganti modul target dengan modul adapter.
  • _check_target_module_exists: Metode helper privat untuk memeriksa apakah nama kunci modul yang diteruskan cocok dengan salah satu modul target dalam adapter_config.

Cara termudah adalah memeriksa apa yang dilakukan di kelas peft.tuners.lora.LoraModel.

delete_adapter

< >

( adapter_name: str )

Parameter

  • adapter_name (str) β€” Nama adapter yang akan dihapus.

Menghapus adapter yang sudah ada.

disable_adapter_layers

< >

( )

Nonaktifkan semua adapter secara in-place.

Saat semua adapter dinonaktifkan, output model sesuai dengan output model dasar.

enable_adapter_layers

< >

( )

Aktifkan semua adapter di tempat

get_model_config

< >

( model: nn.Module )

Parameter

  • model (nn.Module) β€” Model untuk mengambil konfigurasinya.
  • default (dict|None, opsional) β€”: Apa yang akan dikembalikan jika model tidak memiliki atribut config.

Metode ini mengambil konfigurasi dari model dalam bentuk kamus. Jika model tidak memiliki atribut config, maka metode ini mengembalikan konfigurasi default.

inject_adapter

< >

( model: nn.Moduleadapter_name: strautocast_adapter_dtype: bool = Truelow_cpu_mem_usage: bool = Falsestate_dict: Optional[dict[str, torch.Tensor]] = None )

Parameter

  • model (nn.Module) β€” Model yang akan disetel.
  • adapter_name (str) β€” Nama adapter.
  • autocast_adapter_dtype (bool, opsional) β€” Apakah akan melakukan autocast pada dtype adapter. Defaultnya adalah True.
  • low_cpu_mem_usage (bool, optional, defaults to False) β€” Membuat bobot adapter kosong pada perangkat meta. Berguna untuk mempercepat proses pemuatan.
  • state_dict (dict, opsional, default None) β€” Jika state_dict diberikan di sini, adapter akan disuntikkan berdasarkan entri dari state_dict. Hal ini dapat berguna ketika target_modules yang tepat dari metode PEFT tidak diketahui, misalnya karena checkpoint dibuat tanpa meta data. Perhatikan bahwa nilai dari state_dict tidak digunakan, hanya kuncinya yang digunakan untuk menentukan lapisan yang benar yang harus diadaptasi.

Membuat lapisan adapter dan mengganti modul target dengan lapisan adapter. Metode ini dipanggil di balik layar oleh peft.mapping.get_peft_model jika kelas adapter non-prompt tuning dilewatkan.

Konfigurasi PEFT yang sesuai diambil langsung dari atribut peft_config dari kelas BaseTuner.

merge_adapter

< >

( adapter_names: Optional[list[str]] = Nonesafe_merge: bool = False )

Parameter

  • adapter_names (list[str], opsional) β€” Daftar nama adapter yang harus digabungkan. Jika None, semua adapter aktif akan digabungkan. Nilai defaultnya adalah None.
  • safe_merge (bool, opsional) β€” Jika True, operasi penggabungan akan dilakukan pada salinan bobot asli dan memeriksa NaN sebelum menggabungkan bobot. Ini berguna jika Anda ingin memeriksa apakah operasi penggabungan akan menghasilkan NaN. Bawaan adalah False.

Metode ini menggabungkan lapisan adapter ke dalam model dasar.

Menggabungkan adapter dapat mempercepat proses forward pass. Salinan bobot adapter tetap disimpan di memori, yang diperlukan untuk memisahkan kembali adapter. Untuk menggabungkan bobot adapter tanpa menyimpannya di memori, silakan panggil merge_and_unload.

Setelah sebuah layer menggabungkan bobot adapter, jalur maju (forward pass) layer tersebut hanya menggunakan bobot yang telah digabungkan tersebut. Oleh karena itu, jika adapter_names tidak mencakup semua adapter yang aktif, adapter aktif yang tersisa akan secara diam-diam tidak diterapkan, meskipun mereka masih dilaporkan sebagai aktif. Gabungkan semua adapter yang aktif atau panggil unmerge_adapter terlebih dahulu. Perhatikan bahwa perilaku ini direncanakan untuk diubah dalam rilis v1.0.

merge_and_unload

< >

( progressbar: bool = Falsesafe_merge: bool = Falseadapter_names: Optional[list[str]] = None )

Parameter

  • progressbar (bool) β€” apakah menampilkan progressbar yang menunjukkan proses unload dan merge (default: False).
  • safe_merge (bool) β€” apakah mengaktifkan pemeriksaan penggabungan aman untuk memeriksa apakah ada potensi Nan pada bobot adapter.
  • adapter_names (List[str], opsional) β€” Daftar nama adapter yang harus digabungkan. Jika None, semua adapter aktif akan digabungkan. Defaultnya adalah None.

Metode ini menggabungkan lapisan adapter ke dalam model dasar.

Hal ini diperlukan jika seseorang ingin menggunakan model dasar sebagai model mandiri. Model yang dikembalikan memiliki arsitektur yang sama dengan model dasar aslinya.

Penting untuk menugaskan model yang dikembalikan ke sebuah variabel dan menggunakannya, karena ini bukan operasi in-place!

Contoh:

>>> from transformers import AutoModelForCausalLM
>>> from peft import PeftModel

>>> model_id = ...
>>> base_model = AutoModelForCausalLM.from_pretrained(model_id)
>>> peft_model_id = ...
>>> model = PeftModel.from_pretrained(base_model, peft_model_id)
>>> merged_model = model.merge_and_unload()

set_adapter

< >

( adapter_name: str | list[str]inference_mode: bool = False )

Parameter

  • adapter_name (str, list[str]) β€” Nama adapter yang akan disetel sebagai aktif
  • inference_mode (bool, opsional) β€” Apakah adapter yang diaktifkan harus dibekukan (yaitu requires_grad=False). Default adalah False.

Atur adapter yang aktif.

set_requires_grad

< >

( adapter_names: str | Sequence[str]requires_grad: bool = True )

Parameter

  • adapter_names (str atau Sequence[str]) β€” Nama adapter yang gradiennya harus diaktifkan/dinonaktifkan.
  • requires_grad (bool, opsional) β€” Apakah akan mengaktifkan (True, default) atau menonaktifkan (False).

Aktifkan atau nonaktifkan gradien pada adapter yang diberikan.

mendukung_konversi_lora

< >

( adapter_name: str = 'default' )

Apakah adapter dari model ini dapat dikonversi ke LoRA.

Biasanya, ini berfungsi jika metode PEFT bersifat aditif, yaitu W’ = W_base + delta_weight.

unload

< >

( )

Kembalikan model dasar dengan menghapus semua modul PEFT.

Penting untuk menugaskan model yang dikembalikan ke sebuah variabel dan menggunakannya, karena ini bukan operasi in-place!

unmerge_adapter

< >

( )

Metode ini memisahkan semua lapisan adapter yang telah digabungkan dari model dasar.

BaseTunerLayer

kelas peft.tuners.tuners_utils.BaseTunerLayer

< >

( )

Parameter

  • is_pluggable (bool, opsional) β€” Apakah lapisan adapter dapat disambungkan ke modul pytorch mana pun
  • active_adapters (Union[Liststr, str], opsional) β€” Nama adapter yang aktif.

Mixin lapisan tuner yang menyediakan metode dan atribut umum untuk semua tuner.

delete_adapter

< >

( adapter_name: str )

Parameter

  • adapter_name (str) β€” Nama adapter yang akan dihapus

Hapus adapter dari layer

Ini harus dipanggil di semua lapisan adapter, atau kita akan mendapatkan keadaan yang tidak konsisten.

Metode ini juga akan mengatur adapter aktif baru jika adapter yang dihapus merupakan adapter aktif. Penting bahwa adapter baru dipilih secara deterministik, sehingga adapter yang sama dipilih di semua lapisan.

enable_adapters

< >

( enabled: bool )

Parameter

  • enabled (bool) β€” True untuk mengaktifkan adapter, False untuk menonaktifkan adapter

Beralihkan pengaktifan dan penonaktifan adapter

Menangani pengaturan flag requires_grad untuk bobot adapter.

get_base_layer

< >

( )

(Resursif) dapatkan base_layer.

Hal ini diperlukan untuk kasus di mana lapisan tuner membungkus lapisan tuner lainnya.

get_base_weight

< >

( )

Kembalikan bobot dari lapisan dasar.

Hal ini menangani kemungkinan dekuantisasi bobot jika bobot tersebut terkuantisasi.

set_adapter

< >

( adapter_names: str | list[str]inference_mode: bool = False )

Parameter

  • adapter_names (str atau list[str]) β€” Nama adapter yang akan diaktifkan.
  • inference_mode (bool, opsional) β€” Apakah adapter yang diaktifkan harus dibekukan (yaitu requires_grad=False). Default adalah False.

Atur adapter yang aktif.

Selain itu, fungsi ini akan mengatur adapter yang ditentukan agar dapat dilatih (yaitu, requires_grad=True) kecuali inference_mode bernilai True.

set_base_weight

< >

( weight_data: torch.Tensor )

Menetapkan bobot dasar dari lapisan dasar ke tensor baru

Ini juga berfungsi dengan bobot terkuantisasi.

set_requires_grad

< >

( adapter_names: str | Sequence[str]requires_grad: bool = True )

Parameter

  • adapter_names (str atau Sequence[str]) β€” Nama adapter yang gradiennya harus diaktifkan/dinonaktifkan.
  • requires_grad (bool, opsional) β€” Apakah akan mengaktifkan (True, default) atau menonaktifkan (False).

Aktifkan atau nonaktifkan gradien pada adapter yang diberikan.

set_training

< >

( adapter_names: str | Sequence[str]training: bool = True )

Parameter

  • adapter_names (str atau Sequence[str]) β€” Nama adapter yang mode pelatihannya harus diperbarui.
  • training (bool, opsional) β€” Apakah akan mengaktifkan (True, default) atau menonaktifkan (False) mode pelatihan.

Aktifkan atau nonaktifkan mode pelatihan pada modul adapter yang diberikan.

mendukung_konversi_lora

< >

( adapter_name: str = 'default' )

Apakah tipe layer ini dapat dikonversi ke LoRA.

Biasanya, ini berfungsi jika metode PEFT bersifat aditif, yaitu W’ = W_base + delta_weight.

Update on GitHub