Transformers documentation

PEFT

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v5.22.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

PEFT

PeftAdapterMixin menyediakan fungsi dari pustaka PEFT untuk mengelola adapter dengan Transformers. Mixin ini mendukung semua metode PEFT non-prompt-learning (LoRA, IA3, AdaLoRA, dan lainnya). Metode prefix tuning (prompt tuning, prompt learning) tidak didukung karena tidak dapat disuntikkan ke dalam modul torch.

kelas transformers.integrations.PeftAdapterMixin

< >

( )

Kelas yang berisi semua fungsi untuk memuat dan menggunakan bobot adapter yang didukung di pustaka PEFT. Untuk detail lebih lanjut tentang adapter dan cara menyuntikkannya ke model berbasis transformer, lihat dokumentasi pustaka PEFT: https://huggingface.co/docs/peft/index

Metode PEFT yang saat ini didukung semuanya adalah metode non-prompt learning (LoRA, IA³, dll.). Model PEFT lainnya seperti prompt tuning, prompt learning berada di luar cakupan karena adapter tersebut tidak dapat “diinjeksikan” ke dalam modul torch. Untuk menggunakan metode-metode ini, silakan merujuk ke panduan penggunaan pustaka PEFT.

Dengan mixin ini, jika versi PEFT yang benar terpasang (>= 0.20.0), Anda dapat:

  • Muat adapter yang disimpan di jalur lokal atau di repositori Hub jarak jauh, lalu suntikkan ke dalam model
  • Lampirkan adapter baru pada model dan latih mereka dengan Trainer atau secara mandiri.
  • Lampirkan beberapa adapter dan aktifkan / nonaktifkan secara iteratif
  • Aktifkan / nonaktifkan semua adapter dari model.
  • Dapatkan state_dict dari adapter yang aktif.

load_adapter

< >

( peft_model_id: str | None = Noneadapter_name: str | None = Nonepeft_config: dict[str, typing.Any] | None = Noneadapter_state_dict: dict[str, 'torch.Tensor'] | None = Nonelow_cpu_mem_usage: bool = Falseis_trainable: bool = Falsehotswap: typing.Union[bool, typing.Literal['auto']] = 'auto'local_files_only: bool = Falseadapter_kwargs: dict[str, typing.Any] | None = Noneload_config: typing.Optional[ForwardRef('LoadStateDictConfig')] = None**kwargs )

Parameter

  • peft_model_id (str, opsional) — Pengidentifikasi model yang akan dicari di Hub, atau jalur lokal ke file konfigurasi adapter yang disimpan dan bobot adapter.
  • adapter_name (str, opsional) — Nama adapter yang akan digunakan. Jika tidak diatur, akan menggunakan nama “default”.
  • load_config (LoadStateDictConfig, opsional) — Konfigurasi pemuatan untuk digunakan kembali saat menarik bobot adapter, biasanya dari from_pretrained.
  • kwargs (dict[str, Any], opsional) — Bidang LoadStateDictConfig tambahan yang diteruskan sebagai argumen kata kunci.
  • peft_config (dict[str, Any], opsional) — Konfigurasi adapter yang akan ditambahkan; adapter yang didukung adalah semua konfigurasi pembelajaran non-prompt (LoRA, IA³, dll). Argumen ini digunakan jika pengguna langsung meneruskan state dict PEFT.
  • adapter_state_dict (dict[str, torch.Tensor], opsional) — State dict dari adapter yang akan dimuat. Argumen ini digunakan jika pengguna langsung meneruskan state dict PEFT.
  • low_cpu_mem_usage (bool, opsional, default False) — Mengurangi penggunaan memori saat memuat adapter PEFT. Hal ini juga seharusnya mempercepat proses pemuatan.
  • is_trainable (bool, opsional, default False) — Apakah adapter harus dapat dilatih atau tidak. Jika False, adapter akan dibekukan dan hanya dapat digunakan untuk inferensi.
  • hotswap — ("auto" atau bool, opsional, default ke "auto") Apakah akan mengganti adapter (LoRA) yang sudah ada dengan adapter yang baru dimuat secara in-place. Ini berarti, alih-alih memuat adapter tambahan, proses ini akan mengambil bobot adapter yang ada dan menggantinya dengan bobot dari adapter baru. Hal ini bisa lebih cepat dan lebih efisien dalam penggunaan memori. Namun, keuntungan utama dari hotswapping adalah ketika model dikompilasi dengan torch.compile, pemuatan adapter baru tidak memerlukan kompilasi ulang model. Saat menggunakan hotswapping, adapter_name harus berupa nama dari adapter yang sudah dimuat. Jika adapter baru dan adapter lama memiliki rank dan/atau LoRA alpha (yaitu scaling) yang berbeda, Anda perlu memanggil metode tambahan sebelum memuat adapter:

    Jika adapter baru dan adapter lama memiliki rank dan/atau alpha LoRA (yaitu scaling) yang berbeda, Anda perlu memanggil metode tambahan sebelum memuat adapter:

Muat bobot adapter dari file atau folder Hub jarak jauh. Jika Anda belum familiar dengan adapter dan metode PEFT, kami mengajak Anda untuk membaca lebih lanjut tentang hal tersebut di dokumentasi resmi PEFT: https://huggingface.co/docs/peft

Memerlukan PEFT yang terinstal sebagai backend untuk memuat bobot adapter.

add_adapter

< >

( adapter_configadapter_name: str | None = None )

Parameter

  • adapter_config (~peft.PeftConfig) — Konfigurasi adapter yang akan ditambahkan; adapter yang didukung adalah metode pembelajaran non-prompt (LoRA, IA³, dll.).
  • adapter_name (str, opsional, defaultnya "default") — Nama adapter yang akan ditambahkan. Jika tidak ada nama yang diberikan, nama default akan ditugaskan ke adapter tersebut.

Jika Anda belum familiar dengan adapter dan metode PEFT, kami mengundang Anda untuk membaca lebih lanjut tentang hal tersebut di dokumentasi resmi PEFT: https://huggingface.co/docs/peft

Menambahkan adapter baru ke model saat ini untuk keperluan pelatihan. Jika nama adapter tidak diberikan, nama default akan ditugaskan ke adapter tersebut untuk mengikuti konvensi dari pustaka PEFT (di PEFT, kami menggunakan “default” sebagai nama adapter default).

Perhatikan bahwa adapter yang baru ditambahkan tidak diaktifkan secara otomatis. Untuk mengaktifkannya, gunakan model.set_adapter.

set_adapter

< >

( adapter_name: list[str] | str )

Parameter

  • adapter_name (Union[list[str], str]) — Nama adapter yang akan disetel. Bisa juga berupa daftar string untuk menyetel beberapa adapter.

Jika Anda belum familiar dengan adapter dan metode PEFT, kami mengundang Anda untuk membaca lebih lanjut tentang hal tersebut di dokumentasi resmi PEFT: https://huggingface.co/docs/peft

Menetapkan adapter tertentu dengan memaksa model untuk menggunakan adapter tersebut dan menonaktifkan adapter lainnya.

disable_adapters

< >

( )

Jika Anda belum familiar dengan adapter dan metode PEFT, kami mengundang Anda untuk membaca lebih lanjut tentang hal tersebut di dokumentasi resmi PEFT: https://huggingface.co/docs/peft

Nonaktifkan semua adapter yang terpasang pada model. Hal ini menyebabkan inferensi hanya menggunakan model dasar.

enable_adapters

< >

( )

Jika Anda belum familiar dengan adapter dan metode PEFT, kami mengundang Anda untuk membaca lebih lanjut tentang hal tersebut di dokumentasi resmi PEFT: https://huggingface.co/docs/peft

Aktifkan adapter yang terpasang pada model.

enable_peft_hotswap

< >

( target_rank: int = 128check_compiled: typing.Literal['error', 'warn', 'ignore'] = 'error' )

Parameter

  • target_rank (int, opsional, default 128) — Rank tertinggi di antara semua adapter yang akan dimuat.
  • check_compiled (str, opsional, defaultnya "error") — Cara menangani kasus ketika model sudah dikompilasi, yang sebaiknya dihindari. Opsinya adalah:
    • “error” (default): lempar error
    • “warn”: mengeluarkan peringatan
    • “ignore”: tidak melakukan apa pun

Memungkinkan penggantian adapter PEFT dengan rank yang berbeda secara langsung, atau, jika model dikompilasi, tanpa memicu kompilasi ulang.

Saat ini, hotswapping hanya didukung untuk LoRA.

Pemanggilan metode ini hanya diperlukan saat melakukan hotswap adapter dan jika model dikompilasi atau jika rank dari adapter yang dimuat berbeda. Jika semua rank identik dan model tidak dikompilasi, hotswap berfungsi tanpa perlu memanggil metode ini terlebih dahulu.

active_adapters

< >

( )

Jika Anda belum familiar dengan adapter dan metode PEFT, kami mengundang Anda untuk membaca lebih lanjut tentang hal tersebut di dokumentasi resmi PEFT: https://huggingface.co/docs/peft

Mengambil adapter aktif saat ini dari model. Dalam kasus inferensi multi-adapter (menggabungkan beberapa adapter untuk inferensi), mengembalikan daftar semua adapter aktif sehingga pengguna dapat menanganinya sesuai kebutuhan.

Untuk versi PEFT sebelumnya (yang tidak mendukung inferensi multi-adapter), module.active_adapter akan mengembalikan satu string.

get_adapter_state_dict

< >

( adapter_name: str | None = Nonestate_dict: dict | None = None )

Parameter

  • adapter_name (str, opsional) — Nama adapter untuk mengambil state dict. Jika tidak ada nama yang diberikan, adapter aktif yang digunakan.
  • state_dict (nested dictionary of torch.Tensor, opsional) — Kamus status dari model. Secara default akan menggunakan self.state_dict(), tetapi dapat digunakan jika perlu kehati-hatian khusus saat memulihkan kamus status model (misalnya saat menggunakan model parallelism).

Jika Anda belum familiar dengan adapter dan metode PEFT, kami mengundang Anda untuk membaca lebih lanjut tentang hal tersebut di dokumentasi resmi PEFT: https://huggingface.co/docs/peft

Mengambil adapter state dict yang seharusnya hanya berisi tensor bobot dari adapter dengan adapter_name yang ditentukan. Jika adapter_name tidak diberikan, adapter aktif yang digunakan.

delete_adapter

< >

( adapter_names: list[str] | str )

Parameter

  • adapter_names (Union[list[str], str]) — Nama adapter yang akan dihapus.

Hapus adapter PEFT dari model dasarnya.

Update on GitHub