PEFT documentation

Model

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

Model

PeftModel adalah kelas model dasar untuk menentukan model Transformer dasar dan konfigurasinya agar metode PEFT dapat diterapkan. PeftModel dasar berisi metode untuk memuat dan menyimpan model dari Hub.

PeftModel

kelas peft.PeftModel

< >

( model: torch.nn.Modulepeft_config: PeftConfigadapter_name: str = 'default'autocast_adapter_dtype: bool = Truelow_cpu_mem_usage: bool = False )

Parameter

  • model (torch.nn.Module) β€” Model dasar yang akan diadaptasi, biasanya model Transformers.
  • peft_config (PeftConfig) β€” Konfigurasi dari model Peft.
  • adapter_name (str, opsional) β€” Nama adapter, secara default "default".
  • autocast_adapter_dtype (bool, opsional, defaultnya True) β€” Apakah akan melakukan autocast pada dtype adapter. Defaultnya True. Saat ini, ini hanya akan meng-cast bobot adapter menggunakan float16 dan bfloat16 menjadi float32, karena hal ini biasanya diperlukan untuk pelatihan yang stabil, dan hanya memengaruhi beberapa tuner PEFT. Jika diatur ke False, dtype akan tetap sama dengan dtype dari layer yang sesuai.
  • low_cpu_mem_usage (bool, optional, defaultnya False) β€” Membuat bobot adapter kosong di meta device. Berguna untuk mempercepat proses loading.

    > Jangan gunakan low_cpu_mem_usage=True saat membuat adapter PEFT baru untuk pelatihan.

Model dasar yang mencakup berbagai metode Peft.

Atribut:

  • base_model (torch.nn.Module) β€” Model transformer dasar yang digunakan untuk Peft.
  • peft_config (PeftConfig) β€” Konfigurasi dari model Peft.
  • modules_to_save (list dari str) β€” Daftar nama sub-modul yang akan disimpan saat menyimpan model.
  • prompt_encoder (PromptEncoder) β€” Prompt encoder yang digunakan untuk Peft jika menggunakan PromptLearningConfig.
  • prompt_tokens (torch.Tensor) β€” Token prompt virtual yang digunakan untuk Peft jika menggunakan PromptLearningConfig.
  • transformer_backbone_name (str) β€” Nama transformer backbone pada model dasar jika menggunakan PromptLearningConfig.
  • word_embeddings (torch.nn.Embedding) β€” Embedding kata dari backbone transformer pada model dasar jika menggunakan PromptLearningConfig.

add_adapter

< >

( adapter_name: strpeft_config: PeftConfiglow_cpu_mem_usage: bool = Falseautocast_adapter_dtype: bool = True )

Parameter

  • adapter_name (str) β€” Nama adapter yang akan ditambahkan.
  • peft_config (PeftConfig) β€” Konfigurasi adapter yang akan ditambahkan.
  • low_cpu_mem_usage (bool, optional, defaultnya False) β€” Membuat bobot adapter kosong pada meta device. Berguna untuk mempercepat proses saat memuat adapter yang disimpan. Jangan gunakan opsi ini saat membuat adapter PEFT baru untuk pelatihan.
  • autocast_adapter_dtype (bool, opsional, defaultnya True) β€” Apakah akan melakukan autocast pada dtype adapter. Defaultnya True. Saat ini, ini hanya akan meng-cast bobot adapter yang menggunakan float16 dan bfloat16 menjadi float32, karena hal ini biasanya diperlukan untuk pelatihan yang stabil, dan hanya memengaruhi tuner PEFT tertentu. Jika diatur ke False, dtype akan tetap sama dengan dtype lapisan yang sesuai.

Tambahkan adapter ke model berdasarkan konfigurasi yang diteruskan.

Adapter ini tidak dilatih. Untuk memuat adapter yang telah dilatih, lihat PeftModel.load_adapter().

Nama untuk adapter baru harus unik.

Adapter baru tidak secara otomatis diset sebagai adapter aktif. Gunakan PeftModel.set_adapter() untuk mengatur adapter aktif.

create_or_update_model_card

< >

( output_dir: str )

Perbarui atau buat kartu model untuk menyertakan informasi tentang peft:

  1. Menambahkan tag pustaka peft
  2. Menambahkan versi peft
  3. Menambahkan informasi model dasar
  4. Menambahkan informasi kuantisasi jika digunakan

delete_adapter

< >

( adapter_name: str )

Parameter

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

Menghapus adapter yang sudah ada.

disable_adapter

< >

( )

Manajer konteks yang menonaktifkan modul adapter. Gunakan ini untuk menjalankan inferensi pada model dasar.

Contoh:

>>> with model.disable_adapter():
...     model(inputs)

forward

< >

( *args: Any**kwargs: Any )

Forward pass dari model.

from_pretrained

< >

( model: torch.nn.Modulemodel_id: Union[str, os.PathLike]adapter_name: str = 'default'is_trainable: bool = Falseconfig: Optional[PeftConfig] = Noneautocast_adapter_dtype: bool = Trueephemeral_gpu_offload: bool = Falselow_cpu_mem_usage: bool = Falsekey_mapping: Optional[dict[str, str]] = None**kwargs: Any )

Parameter

  • model (torch.nn.Module) β€” Model yang akan diadaptasi. Untuk model πŸ€— Transformers, model harus diinisialisasi dengan from_pretrained.
  • model_id (str atau os.PathLike) β€” Nama konfigurasi PEFT yang akan digunakan. Bisa berupa:
    • String, model id dari konfigurasi PEFT yang dihosting di dalam repositori model di Hugging Face Hub.
    • Path ke direktori yang berisi file konfigurasi PEFT yang disimpan menggunakan metode save_pretrained (./my_peft_config_directory/).
  • adapter_name (str, opsional, default "default") β€” Nama adapter yang akan dimuat. Ini berguna untuk memuat beberapa adapter.
  • is_trainable (bool, opsional, default False) β€” Apakah adapter harus dapat dilatih atau tidak. Jika False, adapter akan dibekukan dan hanya dapat digunakan untuk inferensi.
  • config (PeftConfig, opsional) β€” Objek konfigurasi yang akan digunakan sebagai pengganti konfigurasi yang dimuat secara otomatis. Objek konfigurasi ini saling eksklusif dengan model_id dan kwargs. Hal ini berguna ketika konfigurasi sudah dimuat sebelum memanggil from_pretrained.
  • autocast_adapter_dtype (bool, opsional, defaultnya True) β€” Apakah akan melakukan autocast pada dtype adapter. Defaultnya True. Saat ini, ini hanya akan meng-cast bobot adapter yang menggunakan float16 dan bfloat16 menjadi float32, karena hal ini biasanya diperlukan untuk pelatihan yang stabil, dan hanya memengaruhi tuner PEFT tertentu. Jika diatur ke False, dtype akan tetap sama dengan dtype lapisan yang sesuai.
  • ephemeral_gpu_offload (bool, opsional) β€” Apakah akan menggunakan ephemeral GPU offloading untuk modul yang dimuat sebagian. Nilainya secara default adalah False. Hal ini berguna ketika sebagian model dan/atau komponen (seperti adapter) disimpan di memori CPU sampai dibutuhkan. Alih-alih melakukan operasi yang mahal pada data kecil, data dipindahkan ke GPU sesuai kebutuhan, operasi dilakukan, dan hasilnya dipindahkan kembali ke memori CPU. Hal ini menimbulkan sedikit overhead VRAM sesaat tetapi memberikan peningkatan kecepatan berorde magnitudo dalam kasus tertentu.
  • low_cpu_mem_usage (bool, optional, defaults to False) β€” Buat bobot adapter kosong pada perangkat meta sebelum memuat bobot yang disimpan. Berguna untuk mempercepat proses.
  • key_mapping (dict, opsional, default None) β€” Pemetaan tambahan untuk kunci state_dict PEFT yang diterapkan sebelum memuat state_dict. Ketika pemetaan ini diterapkan, awalan "base_model.model" yang spesifik untuk PEFT dihapus terlebih dahulu dan nama adapter (mis. "default") belum disisipkan. Hanya berikan argumen ini jika Anda tahu apa yang Anda lakukan.
  • kwargs β€” (optional): Argumen kata kunci tambahan yang diteruskan ke kelas konfigurasi PEFT tertentu. Ini mencakup torch_device (str, optional): perangkat untuk memuat adapter (diteruskan ke load_adapter[PeftModel.load_adapter]); jika None, perangkat akan disimpulkan.

Instansiasi model PEFT dari model pretrained dan bobot PEFT yang dimuat.

Perhatikan bahwa model yang diteruskan dapat dimodifikasi secara inplace.

get_base_model

< >

( )

Mengembalikan model dasar.

get_layer_status

< >

( ) β†’ listpeft.peft_model.TunerLayerStatus

Mengembalikan

listpeft.peft_model.TunerLayerStatus

Daftar dataclasses, masing-masing berisi status dari lapisan adapter yang sesuai.

Dapatkan status setiap lapisan adapter dalam model.

Metode ini mengembalikan daftar instance dataclass TunerLayerStatus, di mana masing-masing berisi atribut berikut:

  • name (str): Nama dari lapisan adapter, misalnya model.encoder.block.0.layer.0.SelfAttention.q.
  • module_type (str): Jenis dari lapisan adapter, misalnya lora.Linear.
  • enabled (bool): Apakah lapisan adapter diaktifkan.
  • active_adapters (list[str]): Nama-nama adapter yang aktif, jika ada, misalnya ["default"].
  • merged_adapters (list[str]): Nama-nama adapter yang digabungkan, jika ada, misalnya ["default"].
  • available_adapters (list[str]): Nama-nama adapter yang tersedia, misalnya ["default"].
  • quantization_backend (str atau None): Nama backend kuantisasi, misalnya "bnb 4bit", atau None jika tidak dikuantisasi.

get_model_status

< >

( ) β†’ peft.peft_model.TunerModelStatus

Mengembalikan

peft.peft_model.TunerModelStatus

Dataclass yang berisi status model.

Dapatkan status tuner dari model.

Metode ini mengembalikan instance dataclass TunerModelStatus, yang berisi atribut-atribut berikut:

  • base_model_type (str): Jenis model dasar, misalnya T5Model.
  • adapter_model_type (str): Jenis model adapter, misalnya LoraModel.
  • peft_types (dict[str, str]): Pemetaan dari nama adapter ke tipe adapter, misalnya {"default": "LORA"}.
  • trainable_params (int): Jumlah parameter yang dapat dilatih dalam model.
  • total_params (int): Jumlah total parameter dalam model.
  • num_adapter_layers (int): Jumlah lapisan adapter dalam model.
  • enabled (bool, Literal["irregular"]): Apakah semua lapisan adapter diaktifkan. Jika sebagian diaktifkan dan sebagian tidak, nilai ini akan menjadi "irregular". Ini berarti model Anda berada dalam keadaan tidak konsisten dan mungkin tidak berfungsi sesuai harapan.
  • active_adapters (list[str], Literal["irregular"]): Nama-nama adapter yang aktif. Jika adapter yang aktif tidak konsisten di semua lapisan, nilai ini akan menjadi "irregular", yang berarti model Anda berada dalam keadaan tidak konsisten dan mungkin tidak berfungsi sesuai harapan.
  • merged_adapters (list[str], Literal["irregular"]): Nama-nama adapter yang digabungkan. Jika adapter yang digabungkan tidak konsisten di semua lapisan, nilai ini akan menjadi "irregular", yang berarti model Anda berada dalam keadaan tidak konsisten dan mungkin tidak berfungsi sesuai harapan.
  • available_adapters (list[str]): Nama-nama adapter yang tersedia, misalnya ["default"].
  • quantization_backend (str, None, Literal["irregular"]): Nama dari backend kuantisasi, misalnya "bnb 4bit", atau None jika tidak dikuantisasi. Jika backend tidak konsisten di semua lapisan, nilai ini akan menjadi "irregular".

get_nb_trainable_parameters

< >

( )

Mengembalikan jumlah parameter yang dapat dilatih dan jumlah seluruh parameter dalam model.

get_prompt

< >

( batch_size: inttask_ids: Optional[torch.Tensor] = Nonemax_cache_len: Optional[int] = None )

Mengembalikan virtual prompt yang akan digunakan untuk Peft. Hanya berlaku saat menggunakan metode pembelajaran prompt.

get_prompt_embedding_to_save

< >

( adapter_name: str )

Mengembalikan prompt embedding untuk disimpan saat menyimpan model. Hanya berlaku saat menggunakan metode pembelajaran prompt.

healthcheck

< >

( min_trainable_params: int = 1max_trainable_params_percent = 50 )

Parameter

  • min_trainable_params (int, opsional, default=1) β€” Jumlah parameter minimum yang diharapkan. Jika jumlah yang ditemukan kurang dari itu, hal ini dilaporkan sebagai kesalahan.
  • max_trainable_params_percent (int, opsional, default=50) β€” Persentase maksimum parameter yang harus dapat dilatih. Jika ditemukan lebih dari itu, hal ini dilaporkan sebagai peringatan.

Periksa model ini untuk status adapter yang mencurigakan sebelum pelatihan.

Fungsi ini merangkum API status model dan layer, serta mencakup temuan untuk status adapter yang tidak konsisten, adapter yang telah digabungkan, dan jumlah parameter yang dapat dilatih yang tidak masuk akal. Fungsi ini tidak memvalidasi loop pelatihan, optimizer, atau dataset. Status akan dilaporkan sebagai "irregular" jika ditemukan inkonsistensi pada model, misalnya ketika untuk adapter yang sama, beberapa layer diaktifkan dan beberapa layer dinonaktifkan. Hal ini hampir selalu berarti bahwa ada sesuatu yang salah dan Anda harus memeriksa bahwa Anda tidak secara tidak sengaja mengubah beberapa atribut pada model dengan cara yang salah.

Jika pemeriksaan menemukan sesuatu yang mencurigakan, hal tersebut akan dilaporkan di bidang "findings". Daftar "findings"" yang kosong berarti tidak ada status adapter yang mencurigakan yang terdeteksi, bukan berarti jalannya pelatihan dijamin akan berhasil.

load_adapter

< >

( model_id: Union[str, os.PathLike]adapter_name: stris_trainable: bool = Falsetorch_device: Optional[str] = Noneautocast_adapter_dtype: bool = Trueephemeral_gpu_offload: bool = Falselow_cpu_mem_usage: bool = Falsekey_mapping: Optional[dict[str, str]] = None**kwargs: Any )

Parameter

  • model_id (str atau os.PathLike) β€” Nama konfigurasi PEFT yang akan digunakan. Bisa berupa:
    • String, model id dari konfigurasi PEFT yang dihosting di dalam repositori model di Hugging Face Hub.
    • Path ke direktori yang berisi file konfigurasi PEFT yang disimpan menggunakan metode save_pretrained (./my_peft_config_directory/).
  • adapter_name (str) β€” Nama adapter yang akan ditambahkan.
  • is_trainable (bool, opsional, default False) β€” Apakah adapter harus dapat dilatih atau tidak. Jika False, adapter akan dibekukan dan hanya dapat digunakan untuk inferensi.
  • torch_device (str, opsional, defaultnya None) β€” Perangkat untuk memuat adapter. Jika None, perangkat akan disimpulkan.
  • autocast_adapter_dtype (bool, opsional, defaultnya True) β€” Apakah akan melakukan autocast pada dtype adapter. Defaultnya True. Saat ini, ini hanya akan meng-cast bobot adapter yang menggunakan float16 dan bfloat16 menjadi float32, karena hal ini biasanya diperlukan untuk pelatihan yang stabil, dan hanya memengaruhi tuner PEFT tertentu. Jika diatur ke False, dtype akan tetap sama dengan dtype lapisan yang sesuai.
  • ephemeral_gpu_offload (bool, opsional, defaultnya False) β€” Apakah akan menggunakan ephemeral GPU offloading untuk modul yang dimuat sebagian. Defaultnya False.
  • low_cpu_mem_usage (bool, optional, defaults to False) β€” Buat bobot adapter kosong pada perangkat meta sebelum memuat bobot yang disimpan. Berguna untuk mempercepat proses.
  • key_mapping (dict, opsional, default None) β€” Pemetaan tambahan untuk kunci state_dict PEFT yang diterapkan sebelum memuat state_dict. Ketika pemetaan ini diterapkan, awalan "base_model.model" yang spesifik untuk PEFT dihapus terlebih dahulu dan nama adapter (mis. "default") belum disisipkan. Hanya berikan argumen ini jika Anda tahu apa yang Anda lakukan.
  • kwargs β€” (optional): Argumen tambahan untuk memodifikasi cara adapter dimuat, misalnya token untuk Hugging Face Hub.

Muat adapter yang telah dilatih ke dalam model.

Nama untuk adapter baru harus unik.

Adapter baru tidak secara otomatis diset sebagai adapter aktif. Gunakan PeftModel.set_adapter() untuk mengatur adapter aktif.

prepare_model_for_gradient_checkpointing

< >

( model: PreTrainedModel )

Menyiapkan model untuk gradient checkpointing jika diperlukan

print_healthcheck

< >

( sink = <built-in function print>min_trainable_params: int = 1max_trainable_params_percent = 50**kwargs )

Parameter

  • sink (callable, opsional, default=print) β€” Fungsi yang dipanggil untuk mencetak output. Secara default, hanya fungsi bawaan print, tetapi juga bisa berupa hal lain seperti logger.info.
  • min_trainable_params (int, opsional, default=1) β€” Jumlah parameter minimum yang diharapkan. Jika jumlah yang ditemukan kurang dari itu, hal ini dilaporkan sebagai kesalahan.
  • max_trainable_params_percent (int, opsional, default=50) β€” Persentase maksimum parameter yang harus dapat dilatih. Jika ditemukan lebih dari itu, hal ini dilaporkan sebagai peringatan.
  • kwargs β€” Argumen kata kunci tambahan diteruskan ke format_healthcheck.

Cetak laporan pemeriksaan kesehatan yang ringkas dan mudah dibaca manusia.

Output merangkum status model PEFT Anda dan mencakup temuan untuk status adapter yang tidak konsisten, adapter yang digabungkan, dan jumlah parameter yang dapat dilatih yang tidak masuk akal. Output ini tidak memvalidasi loop pelatihan, optimizer, atau dataset. Status akan dilaporkan sebagai "irregular" jika ditemukan inkonsistensi pada model, misalnya ketika untuk adapter yang sama, beberapa layer diaktifkan dan beberapa layer dinonaktifkan. Hal ini hampir selalu berarti bahwa ada sesuatu yang salah dan Anda harus memeriksa bahwa Anda tidak secara tidak sengaja mengubah beberapa atribut pada model dengan tidak benar.

Jika masalah terdeteksi, masalah tersebut akan ditampilkan di bagian terakhir di bawah β€œfindings”. Jika tidak ada masalah yang terdeteksi, hal itu tidak berarti bahwa proses pelatihan dijamin akan berhasil.

print_trainable_parameters

< >

( )

Menampilkan jumlah parameter yang dapat dilatih dalam model.

Catatan: print_trainable_parameters() menggunakan get_nb_trainable_parameters() yang berbeda dari num_parameters(only_trainable=True) dari huggingface/transformers. get_nb_trainable_parameters() mengembalikan (parameter yang dapat dilatih, semua parameter) dari Model Peft yang mencakup model transformer backbone yang dimodifikasi. Untuk teknik seperti LoRA, model transformer backbone dimodifikasi di tempatnya dengan modul LoRA. Namun, untuk prompt tuning, model transformer backbone tidak dimodifikasi. num_parameters(only_trainable=True) mengembalikan jumlah parameter yang dapat dilatih dari model transformer backbone yang dapat berbeda.

save_pretrained

< >

( save_directory: strsafe_serialization: bool = Trueselected_adapters: Optional[list[str]] = Nonesave_embedding_layers: Union[str, bool] = 'auto'is_main_process: bool = Truepath_initial_model_for_weight_conversion: Optional[str] = None**kwargs: Any )

Parameter

  • save_directory (str) β€” Direktori tempat model adapter dan file konfigurasi akan disimpan (akan dibuat jika tidak ada).
  • safe_serialization (bool, opsional) β€” Apakah menyimpan file adapter dalam format safetensors, defaultnya True.
  • selected_adapters (List[str], opsional) β€” Daftar adapter yang akan disimpan. Jika None, akan secara default menggunakan semua adapter.
  • save_embedding_layers (Union[bool, str], opsional, defaultnya "auto") β€” Jika True, simpan lapisan embedding di samping bobot adapter. Jika auto, periksa lapisan embedding umum peft.utils.other.EMBEDDING_LAYER_NAMES di target_modules config jika tersedia, dan secara otomatis mengatur flag boolean. Ini hanya berfungsi untuk model πŸ€— transformers.
  • is_main_process (bool, opsional) β€” Apakah proses yang memanggil ini adalah proses utama atau tidak. Nilainya secara default adalah True. Checkpoint tidak akan disimpan jika tidak berada di proses utama, yang penting untuk setup multi perangkat (misalnya DDP).
  • path_initial_model_for_weight_conversion (str, opsional) β€” Path ke adapter yang diinisialisasi, yang diperoleh setelah menginisialisasi model dengan PiSSA/CorDA/OLoRA dan sebelum melakukan pelatihan apa pun. Ketika path_initial_model_for_weight_conversion bukan None, perbedaan adapter sebelum dan sesudah fine-tuning dihitung. Perbedaan ini dapat direpresentasikan sebagai parameter dari adapter LoRA standar. Berbeda dengan PiSSA dan sejenisnya, penggunaan adapter yang dikonversi ini tidak memerlukan perubahan pada model dasar, sehingga dengan nyaman memungkinkan penggunaan beberapa adapter PiSSA/CorDA/OLoRA bersama adapter LoRA, serta aktivasi atau deaktivasi adapter apa pun. Perhatikan bahwa konversi ini tidak didukung jika rslora digunakan dalam kombinasi dengan rank_pattern atau alpha_pattern. Lihat peft.tuners.lora.LoraModel.subtract_mutated_init() untuk informasi lebih lanjut.
  • kwargs (argumen kata kunci tambahan, opsional) β€” Argumen kata kunci tambahan yang diteruskan ke metode push_to_hub.

Fungsi ini menyimpan model adapter dan file konfigurasi adapter ke sebuah direktori, sehingga dapat dimuat ulang menggunakan metode kelas PeftModel.from_pretrained(), dan juga digunakan oleh metode PeftModel.push_to_hub().

set_adapter

< >

( adapter_name: strinference_mode: bool = False )

Parameter

  • adapter_name (str) β€” Nama adapter yang akan diset sebagai aktif. Adapter harus dimuat terlebih dahulu.
  • inference_mode (bool, opsional) β€” Apakah adapter yang diaktifkan harus dibekukan (yaitu requires_grad=False). Default adalah False.

Menetapkan adapter yang aktif.

Hanya satu adapter yang dapat aktif pada satu waktu karena tidak semua metode PEFT mendukung beberapa adapter aktif. Untuk mengaktifkan beberapa adapter pada metode yang didukung, gunakan model.base_model.set_adapter(adapter_names).

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

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.

Catatan: Tidak didukung untuk metode pembelajaran prompt seperti prompt tuning.

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.

PeftModelForSequenceClassification

PeftModel untuk tugas klasifikasi urutan.

kelas peft.PeftModelForSequenceClassification

< >

( model: torch.nn.Modulepeft_config: PeftConfigadapter_name: str = 'default'**kwargs )

Parameter

  • model (PreTrainedModel) β€” Model transformer dasar.
  • peft_config (PeftConfig) β€” Konfigurasi Peft.
  • adapter_name (str, opsional) β€” Nama adapter, secara default "default".
  • autocast_adapter_dtype (bool, opsional, defaultnya True) β€” Apakah akan melakukan autocast pada dtype adapter. Defaultnya True. Saat ini, ini hanya akan meng-cast bobot adapter menggunakan float16 dan bfloat16 menjadi float32, karena hal ini biasanya diperlukan untuk pelatihan yang stabil, dan hanya memengaruhi beberapa tuner PEFT. Jika diatur ke False, dtype akan tetap sama dengan dtype dari layer yang sesuai.

Model Peft untuk tugas klasifikasi urutan.

Atribut:

  • config (PretrainedConfig) β€” Objek konfigurasi dari model dasar.
  • cls_layer_name (str) β€” Nama dari lapisan klasifikasi.

Contoh:

>>> from transformers import AutoModelForSequenceClassification
>>> from peft import PeftModelForSequenceClassification, get_peft_config

>>> config = {
...     "peft_type": "PREFIX_TUNING",
...     "task_type": "SEQ_CLS",
...     "inference_mode": False,
...     "num_virtual_tokens": 20,
...     "token_dim": 768,
...     "num_transformer_submodules": 1,
...     "num_attention_heads": 12,
...     "num_layers": 12,
...     "encoder_hidden_size": 768,
...     "prefix_projection": False,
... }

>>> peft_config = get_peft_config(config)
>>> model = AutoModelForSequenceClassification.from_pretrained("bert-base-cased")
>>> peft_model = PeftModelForSequenceClassification(model, peft_config)
>>> peft_model.print_trainable_parameters()
trainable params: 370178 || all params: 108680450 || trainable%: 0.3406113979101117

PeftModelForTokenClassification

PeftModel untuk tugas klasifikasi token.

kelas peft.PeftModelForTokenClassification

< >

( model: torch.nn.Modulepeft_config: PeftConfig = Noneadapter_name: str = 'default'**kwargs )

Parameter

  • model (PreTrainedModel) β€” Model transformer dasar.
  • peft_config (PeftConfig) β€” Konfigurasi Peft.
  • adapter_name (str, opsional) β€” Nama adapter, secara default "default".
  • autocast_adapter_dtype (bool, opsional, defaultnya True) β€” Apakah akan melakukan autocast pada dtype adapter. Defaultnya True. Saat ini, ini hanya akan meng-cast bobot adapter menggunakan float16 dan bfloat16 menjadi float32, karena hal ini biasanya diperlukan untuk pelatihan yang stabil, dan hanya memengaruhi beberapa tuner PEFT. Jika diatur ke False, dtype akan tetap sama dengan dtype dari layer yang sesuai.

Model Peft untuk tugas klasifikasi token.

Atribut:

  • config (PretrainedConfig) β€” Objek konfigurasi dari model dasar.
  • cls_layer_name (str) β€” Nama dari lapisan klasifikasi.

Contoh:

>>> from transformers import AutoModelForTokenClassification
>>> from peft import PeftModelForTokenClassification, get_peft_config

>>> config = {
...     "peft_type": "PREFIX_TUNING",
...     "task_type": "TOKEN_CLS",
...     "inference_mode": False,
...     "num_virtual_tokens": 20,
...     "token_dim": 768,
...     "num_transformer_submodules": 1,
...     "num_attention_heads": 12,
...     "num_layers": 12,
...     "encoder_hidden_size": 768,
...     "prefix_projection": False,
... }

>>> peft_config = get_peft_config(config)
>>> model = AutoModelForTokenClassification.from_pretrained("bert-base-cased")
>>> peft_model = PeftModelForTokenClassification(model, peft_config)
>>> peft_model.print_trainable_parameters()
trainable params: 370178 || all params: 108680450 || trainable%: 0.3406113979101117

add_adapter

< >

( adapter_name: strpeft_config: PeftConfiglow_cpu_mem_usage: bool = Falseautocast_adapter_dtype: bool = True )

Parameter

  • adapter_name (str) β€” Nama adapter yang akan ditambahkan.
  • peft_config (PeftConfig) β€” Konfigurasi adapter yang akan ditambahkan.
  • low_cpu_mem_usage (bool, optional, defaultnya False) β€” Membuat bobot adapter kosong pada meta device. Berguna untuk mempercepat proses saat memuat adapter yang disimpan. Jangan gunakan opsi ini saat membuat adapter PEFT baru untuk pelatihan.
  • autocast_adapter_dtype (bool, opsional, defaultnya True) β€” Apakah akan melakukan autocast pada dtype adapter. Defaultnya True. Saat ini, ini hanya akan meng-cast bobot adapter yang menggunakan float16 dan bfloat16 menjadi float32, karena hal ini biasanya diperlukan untuk pelatihan yang stabil, dan hanya memengaruhi tuner PEFT tertentu. Jika diatur ke False, dtype akan tetap sama dengan dtype lapisan yang sesuai.

Tambahkan adapter ke model berdasarkan konfigurasi yang diteruskan.

Adapter ini tidak dilatih. Untuk memuat adapter yang telah dilatih, lihat PeftModel.load_adapter().

Nama untuk adapter baru harus unik.

Adapter baru tidak secara otomatis diset sebagai adapter aktif. Gunakan PeftModel.set_adapter() untuk mengatur adapter aktif.

PeftModelForCausalLM

PeftModel untuk pemodelan bahasa kausal.

kelas peft.PeftModelForCausalLM

< >

( model: torch.nn.Modulepeft_config: PeftConfigadapter_name: str = 'default'**kwargs )

Parameter

  • model (PreTrainedModel) β€” Model transformer dasar.
  • peft_config (PeftConfig) β€” Konfigurasi Peft.
  • adapter_name (str, opsional) β€” Nama adapter, secara default "default".
  • autocast_adapter_dtype (bool, opsional, defaultnya True) β€” Apakah akan melakukan autocast pada dtype adapter. Defaultnya True. Saat ini, ini hanya akan meng-cast bobot adapter menggunakan float16 dan bfloat16 menjadi float32, karena hal ini biasanya diperlukan untuk pelatihan yang stabil, dan hanya memengaruhi beberapa tuner PEFT. Jika diatur ke False, dtype akan tetap sama dengan dtype dari layer yang sesuai.

Model Peft untuk pemodelan bahasa kausal.

Contoh:

>>> from transformers import AutoModelForCausalLM
>>> from peft import PeftModelForCausalLM, get_peft_config

>>> config = {
...     "peft_type": "PREFIX_TUNING",
...     "task_type": "CAUSAL_LM",
...     "inference_mode": False,
...     "num_virtual_tokens": 20,
...     "token_dim": 1280,
...     "num_transformer_submodules": 1,
...     "num_attention_heads": 20,
...     "num_layers": 36,
...     "encoder_hidden_size": 1280,
...     "prefix_projection": False,
... }

>>> peft_config = get_peft_config(config)
>>> model = AutoModelForCausalLM.from_pretrained("gpt2-large")
>>> peft_model = PeftModelForCausalLM(model, peft_config)
>>> peft_model.print_trainable_parameters()
trainable params: 1843200 || all params: 775873280 || trainable%: 0.23756456724479544

PeftModelForSeq2SeqLM

PeftModel untuk pemodelan bahasa berurutan-ke-berurutan.

Catatan: ini akan secara otomatis menghasilkan token input decoder dengan menggeser token input satu langkah ke kanan menggunakan shift_tokens_right() jika Anda menyediakan token input tetapi tidak menyediakan token input decoder secara eksplisit.

kelas peft.PeftModelForSeq2SeqLM

< >

( model: torch.nn.Modulepeft_config: PeftConfigadapter_name: str = 'default'**kwargs )

Parameter

  • model (PreTrainedModel) β€” Model transformer dasar.
  • peft_config (PeftConfig) β€” Konfigurasi Peft.
  • adapter_name (str, opsional) β€” Nama adapter, secara default "default".
  • autocast_adapter_dtype (bool, opsional, defaultnya True) β€” Apakah akan melakukan autocast pada dtype adapter. Defaultnya True. Saat ini, ini hanya akan meng-cast bobot adapter menggunakan float16 dan bfloat16 menjadi float32, karena hal ini biasanya diperlukan untuk pelatihan yang stabil, dan hanya memengaruhi beberapa tuner PEFT. Jika diatur ke False, dtype akan tetap sama dengan dtype dari layer yang sesuai.

Model Peft untuk pemodelan bahasa sequence-to-sequence.

Contoh:

>>> from transformers import AutoModelForSeq2SeqLM
>>> from peft import PeftModelForSeq2SeqLM, get_peft_config

>>> config = {
...     "peft_type": "LORA",
...     "task_type": "SEQ_2_SEQ_LM",
...     "inference_mode": False,
...     "r": 8,
...     "target_modules": ["q", "v"],
...     "lora_alpha": 32,
...     "lora_dropout": 0.1,
...     "fan_in_fan_out": False,
...     "bias": "none",
... }

>>> peft_config = get_peft_config(config)
>>> model = AutoModelForSeq2SeqLM.from_pretrained("t5-base")
>>> peft_model = PeftModelForSeq2SeqLM(model, peft_config)
>>> peft_model.print_trainable_parameters()
trainable params: 884736 || all params: 223843584 || trainable%: 0.3952474242013566

PeftModelForQuestionAnswering

PeftModel untuk menjawab pertanyaan.

kelas peft.PeftModelForQuestionAnswering

< >

( model: torch.nn.Modulepeft_config: PeftConfigadapter_name: str = 'default'**kwargs )

Parameter

  • model (PreTrainedModel) β€” Model transformer dasar.
  • peft_config (PeftConfig) β€” Konfigurasi Peft.
  • adapter_name (str, opsional) β€” Nama adapter, secara default "default".
  • autocast_adapter_dtype (bool, opsional, defaultnya True) β€” Apakah akan melakukan autocast pada dtype adapter. Defaultnya True. Saat ini, ini hanya akan meng-cast bobot adapter menggunakan float16 dan bfloat16 menjadi float32, karena hal ini biasanya diperlukan untuk pelatihan yang stabil, dan hanya memengaruhi beberapa tuner PEFT. Jika diatur ke False, dtype akan tetap sama dengan dtype dari layer yang sesuai.

Model Peft untuk menjawab pertanyaan ekstraktif.

Atribut:

  • config (PretrainedConfig) β€” Objek konfigurasi dari model dasar.
  • cls_layer_name (str) β€” Nama dari lapisan klasifikasi.

Contoh:

>>> from transformers import AutoModelForQuestionAnswering
>>> from peft import PeftModelForQuestionAnswering, get_peft_config

>>> config = {
...     "peft_type": "LORA",
...     "task_type": "QUESTION_ANS",
...     "inference_mode": False,
...     "r": 16,
...     "target_modules": ["query", "value"],
...     "lora_alpha": 32,
...     "lora_dropout": 0.05,
...     "fan_in_fan_out": False,
...     "bias": "none",
... }

>>> peft_config = get_peft_config(config)
>>> model = AutoModelForQuestionAnswering.from_pretrained("bert-base-cased")
>>> peft_model = PeftModelForQuestionAnswering(model, peft_config)
>>> peft_model.print_trainable_parameters()
trainable params: 592900 || all params: 108312580 || trainable%: 0.5473971721475013

add_adapter

< >

( adapter_name: strpeft_config: PeftConfiglow_cpu_mem_usage: bool = Falseautocast_adapter_dtype: bool = True )

Parameter

  • adapter_name (str) β€” Nama adapter yang akan ditambahkan.
  • peft_config (PeftConfig) β€” Konfigurasi adapter yang akan ditambahkan.
  • low_cpu_mem_usage (bool, optional, defaultnya False) β€” Membuat bobot adapter kosong pada meta device. Berguna untuk mempercepat proses saat memuat adapter yang disimpan. Jangan gunakan opsi ini saat membuat adapter PEFT baru untuk pelatihan.
  • autocast_adapter_dtype (bool, opsional, defaultnya True) β€” Apakah akan melakukan autocast pada dtype adapter. Defaultnya True. Saat ini, ini hanya akan meng-cast bobot adapter yang menggunakan float16 dan bfloat16 menjadi float32, karena hal ini biasanya diperlukan untuk pelatihan yang stabil, dan hanya memengaruhi tuner PEFT tertentu. Jika diatur ke False, dtype akan tetap sama dengan dtype lapisan yang sesuai.

Tambahkan adapter ke model berdasarkan konfigurasi yang diteruskan.

Adapter ini tidak dilatih. Untuk memuat adapter yang telah dilatih, lihat PeftModel.load_adapter().

Nama untuk adapter baru harus unik.

Adapter baru tidak secara otomatis diset sebagai adapter aktif. Gunakan PeftModel.set_adapter() untuk mengatur adapter aktif.

PeftModelForFeatureExtraction

PeftModel untuk mengekstrak fitur/embedding dari model transformer.

kelas peft.PeftModelForFeatureExtraction

< >

( model: torch.nn.Modulepeft_config: PeftConfigadapter_name: str = 'default'**kwargs )

Parameter

  • model (PreTrainedModel) β€” Model transformer dasar.
  • peft_config (PeftConfig) β€” Konfigurasi Peft.
  • adapter_name (str, opsional) β€” Nama adapter, secara default "default".
  • autocast_adapter_dtype (bool, opsional, defaultnya True) β€” Apakah akan melakukan autocast pada dtype adapter. Defaultnya True. Saat ini, ini hanya akan meng-cast bobot adapter menggunakan float16 dan bfloat16 menjadi float32, karena hal ini biasanya diperlukan untuk pelatihan yang stabil, dan hanya memengaruhi beberapa tuner PEFT. Jika diatur ke False, dtype akan tetap sama dengan dtype dari layer yang sesuai.

Model Peft untuk mengekstrak fitur/embedding dari model transformer

Atribut:

  • config (PretrainedConfig) β€” Objek konfigurasi dari model dasar.

Contoh:

>>> from transformers import AutoModel
>>> from peft import PeftModelForFeatureExtraction, get_peft_config

>>> config = {
...     "peft_type": "LORA",
...     "task_type": "FEATURE_EXTRACTION",
...     "inference_mode": False,
...     "r": 16,
...     "target_modules": ["query", "value"],
...     "lora_alpha": 32,
...     "lora_dropout": 0.05,
...     "fan_in_fan_out": False,
...     "bias": "none",
... }
>>> peft_config = get_peft_config(config)
>>> model = AutoModel.from_pretrained("bert-base-cased")
>>> peft_model = PeftModelForFeatureExtraction(model, peft_config)
>>> peft_model.print_trainable_parameters()

PeftMixedModel

PeftModel untuk mencampur berbagai jenis adapter (misalnya LoRA dan LoHa).

kelas peft.PeftMixedModel

< >

( model: nn.Modulepeft_config: PeftConfigadapter_name: str = 'default' )

Parameter

  • model (torch.nn.Module) β€” Model yang akan disetel.
  • config (PeftConfig) β€” Konfigurasi model yang akan disetel. Jenis adapter harus kompatibel.
  • adapter_name (str, optional, defaultnya "default") β€” Nama adapter pertama.
  • low_cpu_mem_usage (bool, optional, defaults to False) β€” Membuat bobot adapter kosong pada perangkat meta. Berguna untuk mempercepat proses pemuatan.

PeftMixedModel untuk memuat campuran berbagai jenis adapter untuk inferensi.

Kelas ini tidak mendukung pemuatan/penyimpanan, dan biasanya tidak seharusnya diinisialisasi secara langsung. Sebagai gantinya, gunakan get_peft_model dengan argumen mixed=True.

> Baca panduan Jenis adapter campuran untuk mempelajari > lebih lanjut tentang penggunaan jenis adapter yang berbeda.

Contoh:

>>> base_model = ...  # load the base model, e.g. from transformers
>>> peft_model = PeftMixedModel.from_pretrained(base_model, path_to_adapter1, "adapter1").eval()
>>> peft_model.load_adapter(path_to_adapter2, "adapter2")
>>> peft_model.set_adapter(["adapter1", "adapter2"])  # activate both adapters
>>> peft_model(data)  # forward pass using both adapters

add_adapter

< >

( adapter_name: strpeft_config: PeftConfiglow_cpu_mem_usage: bool = Falseautocast_adapter_dtype: bool = True )

Parameter

  • adapter_name (str) β€” Nama adapter yang akan ditambahkan.
  • peft_config (PeftConfig) β€” Konfigurasi adapter yang akan ditambahkan.
  • low_cpu_mem_usage (bool, optional, defaultnya False) β€” Membuat bobot adapter kosong pada perangkat meta. Berguna untuk mempercepat proses saat memuat adapter yang disimpan.

    > Jangan gunakan low_cpu_mem_usage=True saat membuat adapter PEFT baru untuk pelatihan (pelatihan belum diuji > dan tidak disarankan untuk PeftMixedModel secara umum).

  • autocast_adapter_dtype (bool, opsional, defaultnya True) β€” Apakah akan melakukan autocast pada dtype adapter. Defaultnya True. Saat ini, ini hanya akan meng-cast bobot adapter yang menggunakan float16 dan bfloat16 menjadi float32, karena hal ini biasanya diperlukan untuk pelatihan yang stabil, dan hanya memengaruhi tuner PEFT tertentu. Jika diatur ke False, dtype akan tetap sama dengan dtype lapisan yang sesuai.

Tambahkan adapter ke model berdasarkan konfigurasi yang diteruskan.

Adapter ini tidak dilatih. Untuk memuat adapter yang telah dilatih, lihat PeftModel.load_adapter().

Nama untuk adapter baru harus unik.

Adapter baru tidak secara otomatis diset sebagai adapter aktif. Gunakan PeftModel.set_adapter() untuk mengatur adapter aktif.

disable_adapter

< >

( )

Menonaktifkan modul adapter.

forward

< >

( *args: Any**kwargs: Any )

Forward pass dari model.

from_pretrained

< >

( model: nn.Modulemodel_id: str | os.PathLikeadapter_name: str = 'default'is_trainable: bool = Falseconfig: Optional[PeftConfig] = None**kwargs: Any )

Parameter

  • model (nn.Module) β€” Model yang akan diadaptasi.
  • model_id (str atau os.PathLike) β€” Nama konfigurasi PEFT yang akan digunakan. Bisa berupa:
    • String, model id dari konfigurasi PEFT yang dihosting di dalam repositori model di Hugging Face Hub.
    • Path ke direktori yang berisi file konfigurasi PEFT yang disimpan menggunakan metode save_pretrained (./my_peft_config_directory/).
  • adapter_name (str, opsional, default "default") β€” Nama adapter yang akan dimuat. Ini berguna untuk memuat beberapa adapter.
  • is_trainable (bool, opsional, default False) β€” Apakah adapter harus dapat dilatih atau tidak. Jika False, adapter akan dibekukan dan digunakan untuk inferensi
  • config (PeftConfig, opsional) β€” Objek konfigurasi yang akan digunakan sebagai pengganti konfigurasi yang dimuat secara otomatis. Objek konfigurasi ini saling eksklusif dengan model_id dan kwargs. Hal ini berguna ketika konfigurasi sudah dimuat sebelum memanggil from_pretrained.
  • low_cpu_mem_usage (bool, optional, defaults to False) β€” Buat bobot adapter kosong pada perangkat meta sebelum memuat bobot yang disimpan. Berguna untuk mempercepat proses.
  • kwargs — (optional): Additional keyword arguments passed along to the specific PEFT configuration class.

Instansiasi model PEFT campuran dari model pretrained dan bobot PEFT yang dimuat.

Perhatikan bahwa model yang diteruskan dapat dimodifikasi secara inplace.

generate

< >

( *args: Any**kwargs: Any )

Generate output.

get_nb_trainable_parameters

< >

( )

Mengembalikan jumlah parameter yang dapat dilatih dan jumlah seluruh parameter dalam model.

load_adapter

< >

( model_id: stradapter_name: str*args: Any**kwargs: Any )

Parameter

  • adapter_name (str) β€” Nama adapter yang akan ditambahkan.
  • peft_config (PeftConfig) β€” Konfigurasi adapter yang akan ditambahkan.
  • is_trainable (bool, opsional, default False) β€” Apakah adapter harus dapat dilatih atau tidak. Jika False, adapter akan dibekukan dan hanya dapat digunakan untuk inferensi.
  • torch_device (str, opsional, defaultnya None) β€” Perangkat untuk memuat adapter. Jika None, perangkat akan disimpulkan.
  • autocast_adapter_dtype (bool, opsional, defaultnya True) β€” Apakah akan melakukan autocast pada dtype adapter. Defaultnya True. Saat ini, ini hanya akan meng-cast bobot adapter menggunakan float16 dan bfloat16 menjadi float32, karena hal ini biasanya diperlukan untuk pelatihan yang stabil, dan hanya memengaruhi beberapa tuner PEFT.
  • ephemeral_gpu_offload (bool, opsional, defaultnya False) β€” Apakah akan menggunakan ephemeral GPU offloading untuk modul yang dimuat sebagian. Defaultnya False.
  • low_cpu_mem_usage (bool, optional, defaults to False) β€” Buat bobot adapter kosong pada perangkat meta sebelum memuat bobot yang disimpan. Berguna untuk mempercepat proses.
  • kwargs β€” (optional): Argumen tambahan untuk memodifikasi cara adapter dimuat, misalnya token untuk Hugging Face Hub.

Muat adapter yang telah dilatih ke dalam model.

Nama untuk adapter baru harus unik.

Adapter baru tidak secara otomatis diset sebagai adapter aktif. Gunakan PeftModel.set_adapter() untuk mengatur adapter aktif.

merge_and_unload

< >

( *args: Any**kwargs: Any )

Parameter

  • progressbar (bool) β€” apakah menampilkan progressbar yang menunjukkan proses unload dan merge
  • 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.

print_trainable_parameters

< >

( )

Menampilkan jumlah parameter yang dapat dilatih dalam model.

Catatan: print_trainable_parameters() menggunakan get_nb_trainable_parameters() yang berbeda dari num_parameters(only_trainable=True) dari huggingface/transformers. get_nb_trainable_parameters() mengembalikan (parameter yang dapat dilatih, semua parameter) dari Model Peft yang mencakup model transformer backbone yang dimodifikasi. Untuk teknik seperti LoRA, model transformer backbone dimodifikasi di tempatnya dengan modul LoRA. Namun, untuk prompt tuning, model transformer backbone tidak dimodifikasi. num_parameters(only_trainable=True) mengembalikan jumlah parameter yang dapat dilatih dari model transformer backbone yang dapat berbeda.

set_adapter

< >

( adapter_name: Union[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.

Menetapkan adapter aktif untuk model.

Perhatikan bahwa urutan penerapan adapter selama forward pass mungkin tidak sama dengan urutan penyampaian adapter ke fungsi ini. Sebaliknya, urutan selama forward pass ditentukan oleh urutan pemuatan adapter ke dalam model. Adapter yang aktif hanya menentukan adapter mana yang aktif selama forward pass, tetapi tidak menentukan urutan penerapannya.

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

unload

< >

( *args: Any**kwargs: Any )

Mengambil kembali model dasar dengan menghapus semua modul adapter tanpa penggabungan. Ini mengembalikan model dasar aslinya.

Utilitas

peft.cast_mixed_precision_params

< >

( model: torch.nn.Moduledtype: torch.dtype )

Parameter

  • model (torch.nn.Module) β€” Model yang parameter non-trainable-nya akan di-cast.
  • dtype (torch.dtype) β€” Dtype untuk meng-cast parameter yang tidak dapat dilatih. dtype dapat berupa torch.float16 atau

Cast semua parameter model yang tidak dapat dilatih ke dtype yang diberikan. dtype dapat berupa torch.float16 atau torch.bfloat16 sesuai dengan pelatihan mixed-precision yang Anda lakukan. Parameter yang dapat dilatih di-cast ke presisi penuh. Hal ini dimaksudkan untuk mengurangi penggunaan memori GPU saat menggunakan metode PEFT dengan menggunakan dtype half-precision untuk parameter yang tidak dapat dilatih. Mempertahankan parameter yang dapat dilatih dalam presisi penuh menjaga stabilitas pelatihan saat menggunakan pelatihan automatic mixed-precision.

torch.bfloat16 sesuai dengan pelatihan presisi campuran yang Anda lakukan.

peft.get_peft_model

< >

( model: nn.Modulepeft_config: PeftConfigadapter_name: str = 'default'mixed: bool = Falseautocast_adapter_dtype: bool = Truerevision: Optional[str] = Nonelow_cpu_mem_usage: bool = False )

Parameter

  • model (torch.nn.Module) β€” Model yang akan dibungkus. Biasanya ini adalah model Transformers, tetapi nn.Module apa pun dapat digunakan, dengan catatan bahwa fitur spesifik tugas (peft_config.task_type) mengharuskan model untuk mengikuti konvensi Transformers.
  • peft_config (PeftConfig) β€” Objek konfigurasi yang berisi parameter dari model Peft.
  • adapter_name (str, optional, defaultnya "default") β€” Nama adapter yang akan disuntikkan; jika tidak diberikan, nama adapter default (β€œdefault”) akan digunakan.
  • mixed (bool, optional, defaultnya False) β€” Apakah memungkinkan pencampuran berbagai tipe adapter (yang kompatibel).
  • autocast_adapter_dtype (bool, opsional) β€” Apakah akan melakukan autocast pada dtype adapter. Nilainya secara default adalah True. Saat ini, ini hanya akan meng-cast bobot adapter yang menggunakan float16 atau bfloat16 menjadi float32, karena hal ini umumnya diperlukan untuk pelatihan yang stabil, dan hanya memengaruhi beberapa tuner PEFT.
  • revision (str, optional, defaultnya main) β€” Revisi dari model dasar. Jika ini tidak diatur, model peft yang disimpan akan memuat revisi main untuk model dasar
  • low_cpu_mem_usage (bool, optional, defaults to False) — Create empty adapter weights on meta device. Useful to speed up the loading process. Leave this setting as False if you intend on training the model, unless the adapter weights will be replaced by different weights before training starts.

Mengembalikan objek model Peft dari sebuah model dan konfigurasi, di mana model akan dimodifikasi secara in-place.

peft.inject_adapter_in_model

< >

( peft_config: PeftConfigmodel: torch.nn.Moduleadapter_name: str = 'default'low_cpu_mem_usage: bool = Falsestate_dict: Optional[dict[str, torch.Tensor]] = None )

Parameter

  • peft_config (PeftConfig) β€” Objek konfigurasi yang berisi parameter model PEFT.
  • model (torch.nn.Module) β€” Model input tempat adapter akan disuntikkan.
  • adapter_name (str, optional, defaultnya "default") β€” Nama adapter yang akan disuntikkan; jika tidak diberikan, nama adapter default (β€œdefault”) akan digunakan.
  • 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.

Buat lapisan PEFT dan suntikkan ke dalam model secara in-place.

Saat ini, API tidak mendukung metode pembelajaran prompt, adaption prompt, atau tuner yang mempertahankan status adapter yang dibagikan di antara beberapa lapisan target. Gunakan get_peft_model() untuk yang terakhir.

Fungsi ini mirip dengan get_peft_model() tetapi tidak mengembalikan instance PeftModel. Sebagai gantinya, fungsi ini mengembalikan instance asli dari model yang diberikan, yang telah dimodifikasi.

peft.get_peft_model_state_dict

< >

( modelstate_dict = Noneadapter_name: str = 'default'unwrap_compiled: bool = Falsesave_embedding_layers: bool | Literal['auto'] = 'auto' )

Parameter

  • model (PeftModel) β€” Model Peft. Saat menggunakan torch.nn.DistributedDataParallel, DeepSpeed, atau FSDP, model harus berupa model dasar/model yang tidak dibungkus (yaitu model.module).
  • state_dict (dict, opsional, default None) β€” State dict dari model. Jika tidak disediakan, state dict dari model yang diberikan akan digunakan.
  • adapter_name (str, opsional, defaultnya "default") β€” Nama adapter yang state dict-nya harus dikembalikan.
  • unwrap_compiled (bool, opsional, defaultnya False) β€” Apakah akan membuka bungkus model jika torch.compile digunakan.
  • save_embedding_layers (Union[bool, str], , opsional, defaultnya auto) β€” Jika True, simpan lapisan embedding di samping bobot adapter. Jika auto, periksa lapisan embedding umum peft.utils.other.EMBEDDING_LAYER_NAMES di target_modules config jika tersedia. Berdasarkan itu, set flag boolean. Ini hanya berfungsi untuk model πŸ€— transformers.

Dapatkan state dict dari adapter tertentu dari model PEFT.

Ini hanya mencakup parameter PEFT, bukan parameter dari model dasar. Dengan demikian, state_dict yang dikembalikan umumnya kecil dibandingkan dengan ukuran model penuh. Untuk mengambil state_dict penuh, cukup panggil model.state_dict().

Perhatikan bahwa nama adapter dihapus dari state_dict, karena ini hanyalah nama sewenang-wenang yang dapat diubah saat memuat adapter. Jadi, misalnya, jika nama adapter adalah 'default' dan kunci aslinya adalah 'model.q_proj.lora_A.default.weight', kunci yang dikembalikan akan menjadi 'model.q_proj.lora_A.weight'. Gunakan fungsi ini bersama dengan set_peft_model_state_dict() untuk menangani nama adapter saat memuat bobot.

peft.prepare_model_for_kbit_training

< >

( modeluse_gradient_checkpointing = Truegradient_checkpointing_kwargs = Noneauto_clear_cache = True )

Parameter

  • model (transformers.PreTrainedModel) β€” Model yang dimuat dari transformers
  • use_gradient_checkpointing (bool, opsional, default True) β€” Jika True, gunakan gradient checkpointing untuk menghemat memori dengan mengorbankan kecepatan backward pass.
  • gradient_checkpointing_kwargs (dict, opsional, default None) β€” Argumen kata kunci untuk diteruskan ke fungsi gradient checkpointing, silakan lihat dokumentasi torch.utils.checkpoint.checkpoint untuk detail lebih lanjut tentang argumen yang dapat Anda teruskan ke metode tersebut. Perhatikan bahwa ini hanya tersedia di versi transformers terbaru (> 4.34.1).
  • auto_clear_cache (bool, opsional, default True) β€” Apakah akan mengosongkan cache accelerator setelah upcasting parameter ke fp32. Ini melepaskan memori yang dipegang oleh caching allocator, yang sangat membantu pada perangkat yang berbagi memori host dan accelerator. Atur ke False untuk melewati langkah ini.

Perhatikan bahwa metode ini hanya berfungsi untuk model transformers.

Metode ini membungkus seluruh protokol untuk menyiapkan model sebelum menjalankan pelatihan. Ini mencakup: 1- Mengubah layernorm ke fp32 2- membuat lapisan output embedding memerlukan grads 3- Menambahkan upcasting dari lm head ke fp32 4- Membekukan lapisan model dasar untuk memastikan mereka tidak diperbarui selama pelatihan

peft.get_layer_status

< >

( model: torch.nn.Module ) β†’ listpeft.peft_model.TunerLayerStatus

Parameter

  • model ([Union[~PeftModel, ~transformers.PreTrainedModel, nn.Module]]) β€” Model untuk mendapatkan status lapisan adapter.

Mengembalikan

listpeft.peft_model.TunerLayerStatus

Daftar dataclasses, masing-masing berisi status dari lapisan adapter yang sesuai.

Dapatkan status setiap lapisan adapter dalam model.

Fungsi ini mengembalikan daftar instance dataclass TunerLayerStatus, di mana masing-masing berisi atribut berikut:

  • name (str): Nama dari lapisan adapter, misalnya model.encoder.block.0.layer.0.SelfAttention.q.
  • module_type (str): Jenis dari lapisan adapter, misalnya lora.Linear.
  • enabled (bool): Apakah lapisan adapter diaktifkan.
  • active_adapters (list[str]): Nama-nama adapter yang aktif, jika ada, misalnya ["default"].
  • merged_adapters (list[str]): Nama-nama adapter yang digabungkan, jika ada, misalnya ["default"].
  • requires_grad : dict[str, bool | Literal[β€œirregular”]] Status requires_grad dari parameter untuk setiap modul adapter. Idealnya, nilainya harus True atau False. Jika status requires_grad tidak konsisten di antara semua parameter, nilainya akan diatur menjadi "irregular".
  • available_adapters (list[str]): Nama-nama adapter yang tersedia, misalnya ["default"].
  • devices (dict[str, list[str]]): Perangkat tempat parameter adapter yang diberikan disimpan, misalnya ["cuda","xpu"].
  • quantization_backend (str atau None): Nama backend kuantisasi, misalnya "bnb 4bit", atau None jika tidak dikuantisasi.

peft.get_model_status

< >

( model: torch.nn.Module ) β†’ peft.peft_model.TunerModelStatus

Parameter

  • model ([Union[~PeftModel, ~transformers.PreTrainedModel, nn.Module]]) β€” Model untuk mendapatkan status lapisan adapter.

Mengembalikan

peft.peft_model.TunerModelStatus

Dataclass yang berisi status model.

Dapatkan status tuner dari model.

Fungsi ini mengembalikan instance dataclass TunerModelStatus, yang berisi atribut-atribut berikut:

  • base_model_type (str): Jenis model dasar, misalnya T5Model.
  • adapter_model_type (str): Jenis model adapter, misalnya LoraModel.
  • peft_types (dict[str, str]): Pemetaan dari nama adapter ke tipe adapter, misalnya {"default": "LORA"}.
  • trainable_params (int): Jumlah parameter yang dapat dilatih dalam model.
  • total_params (int): Jumlah total parameter dalam model.
  • num_adapter_layers (int): Jumlah lapisan adapter dalam model.
  • enabled (bool, Literal["irregular"]): Apakah semua lapisan adapter diaktifkan. Jika sebagian diaktifkan dan sebagian tidak, nilai ini akan menjadi "irregular". Ini berarti model Anda berada dalam keadaan tidak konsisten dan mungkin tidak berfungsi sesuai harapan.
  • active_adapters (list[str], Literal["irregular"]): Nama-nama adapter yang aktif. Jika adapter yang aktif tidak konsisten di semua lapisan, nilai ini akan menjadi "irregular", yang berarti model Anda berada dalam keadaan tidak konsisten dan mungkin tidak berfungsi sesuai harapan.
  • merged_adapters (list[str], Literal["irregular"]): Nama-nama adapter yang digabungkan. Jika adapter yang digabungkan tidak konsisten di semua lapisan, nilai ini akan menjadi "irregular", yang berarti model Anda berada dalam keadaan tidak konsisten dan mungkin tidak berfungsi sesuai harapan.
  • requires_grad (dict[str, bool | Literal["irregular"]]): Apakah untuk adapter yang diberikan, semua lapisan adapter memiliki requires_grad yang diatur ke True atau False. Jika ada campuran, nilai ini akan diatur ke "irregular", yang berarti model Anda berada dalam keadaan tidak konsisten dan mungkin tidak berfungsi sesuai harapan.
  • available_adapters (list[str]): Nama-nama adapter yang tersedia, misalnya ["default"].
  • devices (dict[str, list[str]]): Perangkat tempat parameter adapter yang diberikan disimpan, misalnya ["cuda","xpu"].
  • quantization_backend (str, None, Literal["irregular"]): Nama dari backend kuantisasi, misalnya "bnb 4bit", atau None jika tidak dikuantisasi. Jika backend tidak konsisten di semua lapisan, nilai ini akan menjadi "irregular".
Update on GitHub