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 cung cấp các hàm từ thư viện PEFT để quản lý các adapter với Transformers. Mixin này hỗ trợ tất cả các phương pháp PEFT không dựa trên prompt-learning (LoRA, IA3, AdaLoRA và các phương pháp khác). Các phương pháp prefix tuning (prompt tuning, prompt learning) không được hỗ trợ vì chúng không thể được tiêm vào một module torch.

lớp transformers.integrations.PeftAdapterMixin

< >

( )

Một class chứa tất cả các hàm để tải và sử dụng trọng số adapter được hỗ trợ trong thư viện PEFT. Để biết thêm chi tiết về adapter và cách tiêm chúng vào một mô hình dựa trên transformer, hãy xem tài liệu của thư viện PEFT: https://huggingface.co/docs/peft/index

Các phương pháp PEFT hiện được hỗ trợ đều là các phương pháp không dựa trên prompt (LoRA, IA³, v.v.). Các mô hình PEFT khác như prompt tuning, prompt learning nằm ngoài phạm vi vì các adapter này không thể “tiêm” vào một module torch. Để sử dụng các phương pháp này, vui lòng tham khảo hướng dẫn sử dụng của thư viện PEFT.

Với mixin này, nếu phiên bản PEFT chính xác được cài đặt (>= 0.20.0), bạn có thể:

  • Tải một adapter được lưu trữ trên đường dẫn cục bộ hoặc trong kho Hub từ xa, và tiêm nó vào mô hình
  • Gắn các adapter mới vào mô hình và huấn luyện chúng bằng Trainer hoặc theo cách riêng của bạn.
  • Gắn nhiều adapter và kích hoạt / vô hiệu hóa chúng theo từng lần
  • Kích hoạt / tắt tất cả các adapter từ mô hình.
  • Lấy state_dict của adapter đang hoạt động.

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 )

Tham số

  • peft_model_id (str, tùy chọn) — Định danh của model cần tìm trên Hub, hoặc đường dẫn cục bộ đến tệp cấu hình adapter đã lưu và trọng số adapter.
  • adapter_name (str, tùy chọn) — Tên adapter cần sử dụng. Nếu không được đặt, sẽ sử dụng tên “default”.
  • load_config (LoadStateDictConfig, tùy chọn) — Một cấu hình tải để tái sử dụng khi lấy trọng số adapter, thường từ from_pretrained.
  • kwargs (dict[str, Any], tùy chọn) — Các trường LoadStateDictConfig bổ sung được truyền dưới dạng các đối số từ khóa.
  • peft_config (dict[str, Any], tùy chọn) — Cấu hình của adapter cần thêm, các adapter được hỗ trợ bao gồm tất cả các cấu hình học không dùng prompt (LoRA, IA³, v.v.). Tham số này được sử dụng trong trường hợp người dùng truyền trực tiếp các state dict của PEFT.
  • adapter_state_dict (dict[str, torch.Tensor], optional) — State dict của adapter cần nạp. Tham số này được sử dụng trong trường hợp người dùng trực tiếp truyền các state dict của PEFT.
  • low_cpu_mem_usage (bool, tùy chọn, mặc định là False) — Giảm mức sử dụng bộ nhớ khi tải bộ thích ứng PEFT. Điều này cũng nên giúp tăng tốc quá trình tải.
  • is_trainable (bool, tùy chọn, mặc định là False) — Xác định xem adapter có nên được huấn luyện hay không. Nếu False, adapter sẽ bị đóng băng và chỉ có thể được sử dụng để suy luận.
  • hotswap — ("auto" hoặc bool, tuỳ chọn, mặc định là "auto") Có nên thay thế adapter (LoRA) hiện có bằng adapter mới được nạp vào tại chỗ hay không. Điều này có nghĩa là, thay vì nạp thêm một adapter, phương thức này sẽ lấy trọng số của adapter hiện có và thay thế chúng bằng trọng số của adapter mới. Cách này có thể nhanh hơn và tiết kiệm bộ nhớ hơn. Tuy nhiên, lợi ích chính của hotswap là khi mô hình được biên dịch bằng torch.compile, việc nạp adapter mới không yêu cầu biên dịch lại mô hình. Khi sử dụng hotswap, adapter_name phải là tên của một adapter đã được nạp trước đó.

    Nếu adapter mới và adapter cũ có rank và/hoặc alpha LoRA (tức là hệ số scale) khác nhau, bạn cần gọi thêm một phương thức trước khi nạp adapter:

Tải trọng số adapter từ tệp hoặc thư mục Hub từ xa. Nếu bạn chưa quen thuộc với adapter và các phương pháp PEFT, chúng tôi mời bạn đọc thêm về chúng trong tài liệu chính thức của PEFT: https://huggingface.co/docs/peft

Yêu cầu PEFT phải được cài đặt như một backend để tải trọng số adapter.

add_adapter

< >

( adapter_configadapter_name: str | None = None )

Tham số

  • adapter_config (~peft.PeftConfig) — Cấu hình của adapter cần thêm, các adapter được hỗ trợ là các phương pháp học không dùng prompt (LoRA, IA³, v.v.).
  • adapter_name (str, tùy chọn, mặc định là "default") — Tên của adapter cần thêm. Nếu không truyền tên, một tên mặc định sẽ được gán cho adapter.

Nếu bạn chưa quen thuộc với adapter và các phương pháp PEFT, chúng tôi mời bạn đọc thêm về chúng trong tài liệu chính thức của PEFT: https://huggingface.co/docs/peft

Thêm một adapter mới vào mô hình hiện tại cho mục đích huấn luyện. Nếu không truyền tên adapter, một tên mặc định sẽ được gán cho adapter để tuân theo quy ước của thư viện PEFT (trong PEFT, chúng tôi sử dụng “default” làm tên adapter mặc định).

Lưu ý rằng adapter mới thêm không được kích hoạt tự động. Để kích hoạt nó, hãy sử dụng model.set_adapter.

set_adapter

< >

( adapter_name: list[str] | str )

Tham số

  • adapter_name (Union[list[str], str]) — Tên của adapter cần thiết lập. Cũng có thể là một danh sách các chuỗi để thiết lập nhiều adapter.

Nếu bạn chưa quen thuộc với adapter và các phương pháp PEFT, chúng tôi mời bạn đọc thêm về chúng trong tài liệu chính thức của PEFT: https://huggingface.co/docs/peft

Đặt một adapter cụ thể bằng cách buộc mô hình sử dụng adapter đó và vô hiệu hóa các adapter khác.

disable_adapters

< >

( )

Nếu bạn chưa quen thuộc với adapter và các phương pháp PEFT, chúng tôi mời bạn đọc thêm về chúng trong tài liệu chính thức của PEFT: https://huggingface.co/docs/peft

Tắt tất cả các adapter được gắn vào mô hình. Điều này dẫn đến việc suy luận chỉ với mô hình cơ sở.

enable_adapters

< >

( )

Nếu bạn chưa quen thuộc với adapter và các phương pháp PEFT, chúng tôi mời bạn đọc thêm về chúng trong tài liệu chính thức của PEFT: https://huggingface.co/docs/peft

Bật các adapter được gắn vào mô hình.

enable_peft_hotswap

< >

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

Tham số

  • target_rank (int, tuỳ chọn, mặc định là 128) — Rank cao nhất trong số tất cả các adapter sẽ được nạp.
  • check_compiled (str, tuỳ chọn, mặc định là "error") — Cách xử lý khi mô hình đã được biên dịch, điều này thường nên tránh. Các tùy chọn là:
    • “error” (mặc định): gây ra một lỗi
    • “warn”: phát ra cảnh báo
    • “ignore”: không làm gì

Cho phép khả năng thay đổi nóng (hotswap) các bộ thích ứng PEFT có bậc (rank) khác nhau, hoặc, nếu mô hình đã được biên dịch, mà không gây ra việc biên dịch lại.

Hiện tại, hotswapping chỉ được hỗ trợ cho LoRA.

Việc gọi phương thức này chỉ bắt buộc khi hotswap các adapter và nếu mô hình đã được biên dịch hoặc nếu các rank của các adapter được nạp khác nhau. Nếu tất cả các rank đều giống nhau và mô hình chưa được biên dịch, hotswap sẽ hoạt động mà không cần gọi phương thức này trước.

active_adapters

< >

( )

Nếu bạn chưa quen thuộc với adapter và các phương pháp PEFT, chúng tôi mời bạn đọc thêm về chúng trong tài liệu chính thức của PEFT: https://huggingface.co/docs/peft

Lấy các adapter đang hoạt động hiện tại của mô hình. Trong trường hợp suy luận đa adapter (kết hợp nhiều adapter để suy luận), trả về danh sách tất cả các adapter đang hoạt động để người dùng có thể xử lý tương ứng.

Với các phiên bản PEFT trước đó (không hỗ trợ suy luận đa adapter), module.active_adapter sẽ trả về một chuỗi duy nhất.

get_adapter_state_dict

< >

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

Tham số

  • adapter_name (str, tùy chọn) — Tên của adapter để lấy state dict từ đó. Nếu không truyền tên nào, adapter đang hoạt động sẽ được sử dụng.
  • state_dict (từ điển lồng nhau của torch.Tensor, tuỳ chọn) — Từ điển trạng thái của mô hình. Mặc định sẽ là self.state_dict(), nhưng có thể được sử dụng nếu cần thực hiện các biện pháp phòng ngừa đặc biệt khi khôi phục từ điển trạng thái của một mô hình (ví dụ khi sử dụng song song hóa mô hình).

Nếu bạn chưa quen thuộc với adapter và các phương pháp PEFT, chúng tôi mời bạn đọc thêm về chúng trong tài liệu chính thức của PEFT: https://huggingface.co/docs/peft

Lấy adapter state dict chỉ chứa các tensor trọng số của adapter có tên adapter_name được chỉ định. Nếu không truyền adapter_name, adapter đang hoạt động sẽ được sử dụng.

delete_adapter

< >

( adapter_names: list[str] | str )

Tham số

  • adapter_names (Union[list[str], str]) — Tên của adapter cần xóa.

Xóa một bộ thích ứng PEFT khỏi mô hình cơ bản.

Update on GitHub