# PEFT[[transformers.integrations.PeftAdapterMixin]]

[PeftAdapterMixin](/docs/transformers/main/id/main_classes/peft#transformers.integrations.PeftAdapterMixin) menyediakan fungsi dari pustaka [PEFT](https://huggingface.co/docs/peft/index) 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.

#### transformers.integrations.PeftAdapterMixin[[transformers.integrations.PeftAdapterMixin]]

```python
transformers.integrations.PeftAdapterMixin()
```

[Sumber](https://github.com/huggingface/transformers/blob/main/src/transformers/integrations/peft.py#L57)

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 dan prompt learning berada di luar cakupan karena adapter tersebut tidak dapat "disuntikkan" ke dalam modul torch. Untuk menggunakan metode-metode ini, silakan merujuk pada 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[[transformers.integrations.PeftAdapterMixin.load_adapter]]

```python
load_adapter(peft_model_id: str | None = None, adapter_name: str | None = None, peft_config: dict[str, typing.Any] | None = None, adapter_state_dict: dict[str, 'torch.Tensor'] | None = None, low_cpu_mem_usage: bool = False, is_trainable: bool = False, hotswap: typing.Union[bool, typing.Literal['auto']] = 'auto', local_files_only: bool = False, adapter_kwargs: dict[str, typing.Any] | None = None, load_config: typing.Optional[ForwardRef('LoadStateDictConfig')] = None, **kwargs)
```

[Sumber](https://github.com/huggingface/transformers/blob/main/src/transformers/integrations/peft.py#L80)

**Parameter:**

peft_model_id (`str`, *opsional*) : Pengidentifikasi model yang akan dicari di Hub, atau jalur lokal ke file konfigurasi adapter dan bobot adapter yang disimpan.

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*, defaultnya `False`) : Mengurangi penggunaan memori saat memuat adapter PEFT. Hal ini juga seharusnya mempercepat proses pemuatan.

is_trainable (`bool`, *opsional*, defaultnya `False`) : Apakah adapter harus dapat dilatih atau tidak. Jika `False`, adapter akan dibekukan dan hanya dapat digunakan untuk inferensi.

hotswap : (`"auto"` atau `bool`, *opsional*, defaultnya `"auto"`) Apakah akan mengganti adapter (LoRA) yang sudah ada dengan adapter yang baru dimuat secara in-place. Artinya, 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, keunggulan utama dari hotswapping adalah ketika model dikompilasi dengan torch.compile, pemuatan adapter baru tidak memerlukan kompilasi ulang model. Saat menggunakan hotswapping, `adapter_name` yang diteruskan 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: ```py model = AutoModel.from_pretrained(...) max_rank = ...  # the highest rank among all LoRAs that you want to load # call *before* compiling and loading the LoRA adapter model.enable_peft_hotswap(target_rank=max_rank) model.load_adapter(file_name_1, adapter_name="default") # optionally compile the model now model = torch.compile(model, ...) output_1 = model(...) # now you can hotswap the 2nd adapter, use the same name as for the 1st # hotswap is activated by default since enable_peft_hotswap was called model.load_adapter(file_name_2, adapter_name="default") output_2 = model(...) ``` Secara default, hotswap dinonaktifkan dan memerlukan pengaliran `hotswap=True`. Jika Anda telah memanggil `enable_peft_hotswap` terlebih dahulu, maka hotswap diaktifkan. Anda tetap dapat menonaktifkannya secara manual dalam kasus tersebut dengan mengalirkan `hotswap=False`. Perhatikan bahwa hotswapping memiliki beberapa keterbatasan yang didokumentasikan di sini: https://huggingface.co/docs/peft/main/en/package_reference/hotswap

adapter_kwargs (`dict[str, Any]`, *opsional*) : Argumen kata kunci tambahan yang diteruskan ke metode `from_pretrained` dari konfigurasi adapter dan metode `find_adapter_config_file`.

Muat bobot adapter dari file atau folder Hub jarak jauh. 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

Memerlukan PEFT yang terinstal sebagai backend untuk memuat bobot adapter.

#### add_adapter[[transformers.integrations.PeftAdapterMixin.add_adapter]]

```python
add_adapter(adapter_config, adapter_name: str | None = None)
```

[Sumber](https://github.com/huggingface/transformers/blob/main/src/transformers/integrations/peft.py#L390)

**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 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[[transformers.integrations.PeftAdapterMixin.set_adapter]]

```python
set_adapter(adapter_name: list[str] | str)
```

[Sumber](https://github.com/huggingface/transformers/blob/main/src/transformers/integrations/peft.py#L430)

**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[[transformers.integrations.PeftAdapterMixin.disable_adapters]]

```python
disable_adapters()
```

[Sumber](https://github.com/huggingface/transformers/blob/main/src/transformers/integrations/peft.py#L471)

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[[transformers.integrations.PeftAdapterMixin.enable_adapters]]

```python
enable_adapters()
```

[Sumber](https://github.com/huggingface/transformers/blob/main/src/transformers/integrations/peft.py#L490)

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[[transformers.integrations.PeftAdapterMixin.enable_peft_hotswap]]

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

[Sumber](https://github.com/huggingface/transformers/blob/main/src/transformers/integrations/peft.py#L353)

**Parameter:**

target_rank (`int`, *opsional*, defaultnya `128`) : Rank tertinggi di antara semua adapter yang akan dimuat.

check_compiled (`str`, *opsional*, defaultnya `"error"`) : Cara menangani kasus ketika model sudah dikompilasi, yang umumnya sebaiknya dihindari. Opsinya adalah: - "error" (default): lempar error - "warn": terbitkan 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[[transformers.integrations.PeftAdapterMixin.active_adapters]]

```python
active_adapters()
```

[Sumber](https://github.com/huggingface/transformers/blob/main/src/transformers/integrations/peft.py#L508)

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[[transformers.integrations.PeftAdapterMixin.get_adapter_state_dict]]

```python
get_adapter_state_dict(adapter_name: str | None = None, state_dict: dict | None = None)
```

[Sumber](https://github.com/huggingface/transformers/blob/main/src/transformers/integrations/peft.py#L537)

**Parameter:**

adapter_name (`str`, *opsional*) : Nama adapter untuk mengambil state dict. Jika tidak ada nama yang diberikan, adapter aktif akan digunakan.

state_dict (nested dictionary of `torch.Tensor`, *opsional*) : state dictionary dari model. Secara default akan menggunakan `self.state_dict()`, tetapi dapat digunakan jika perlu tindakan pencegahan khusus saat memulihkan state dictionary dari sebuah 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 akan digunakan.

#### delete_adapter[[transformers.integrations.PeftAdapterMixin.delete_adapter]]

```python
delete_adapter(adapter_names: list[str] | str)
```

[Sumber](https://github.com/huggingface/transformers/blob/main/src/transformers/integrations/peft.py#L622)

**Parameter:**

adapter_names (`Union[list[str], str]`) : Nama adapter yang akan dihapus.

Hapus adapter PEFT dari model dasarnya.

