PEFT documentation

BEFT: Tinh chỉnh hiệu quả độ lệch của các mô hình ngôn ngữ trong các chế độ dữ liệu thấp

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

BEFT: Tinh chỉnh hiệu quả độ lệch của các mô hình ngôn ngữ trong các chế độ dữ liệu thấp

BEFT là một thuật toán tinh chỉnh hiệu quả tham số (PEFT) chỉ tinh chỉnh các số hạng bias được thêm vào của các phép chiếu giá trị (value projections) từ các mô hình transformer được huấn luyện trước. BEFT cho thấy việc tinh chỉnh các số hạng bias được thêm vào của các phép chiếu giá trị từ các transformer được huấn luyện trước thường dẫn đến hiệu suất downstream cao hơn trong các chế độ dữ liệu thấp so với việc tinh chỉnh các số hạng bias được thêm vào của các phép chiếu truy vấn/khóa (query/key projections).

BEFT hiện có các đánh đổi sau:

Ưu điểm:

  • BEFT yêu cầu ít tham số hơn nhiều so với LoRA, trong khi vẫn duy trì hiệu suất cạnh tranh hoặc vượt trội trên các tác vụ trong các chế độ dữ liệu thấp.

Nhược điểm:

  • Trong các chế độ dữ liệu lớn, BEFT có thể cho thấy hiệu quả hạn chế so với LoRA và fine-tuning toàn bộ tham số.

Nếu trường hợp sử dụng của bạn thuộc về chế độ dữ liệu lớn, hãy cân nhắc các phương pháp PEFT khác như LoRA.

Tóm tắt từ bài báo là:

Việc tinh chỉnh các số hạng bias của các mô hình ngôn ngữ lớn (LLM) có tiềm năng đạt được hiệu quả tham số chưa từng có trong khi vẫn duy trì hiệu suất cạnh tranh, đặc biệt là trong các chế độ dữ liệu thấp. Tuy nhiên, mối liên hệ giữa việc tinh chỉnh các số hạng bias khác nhau (tức là bq, bk và bv trong các phép chiếu query, key hoặc value) với hiệu suất của các tác vụ hạ nguồn vẫn còn khá mơ hồ cho đến nay. Trong bài báo này, chúng tôi nghiên cứu mối liên hệ giữa việc tinh chỉnh bq, bk và bv với hiệu suất của tác vụ hạ nguồn. Phát hiện chính của chúng tôi là việc tinh chỉnh trực tiếp bv thường dẫn đến hiệu suất hạ nguồn cao hơn trong các chế độ dữ liệu thấp, so với bq và bk. Chúng tôi đánh giá rộng rãi đặc tính độc đáo này trên một phạm vi rộng các LLM trải dài từ kiến trúc chỉ có encoder đến chỉ có decoder với quy mô lên đến 6,7 tỷ tham số (bao gồm cả các LLM không có bias). Kết quả của chúng tôi cung cấp bằng chứng mạnh mẽ cho hiệu quả của việc tinh chỉnh trực tiếp bv trên nhiều tác vụ hạ nguồn khác nhau.

Tổng quan về benchmark

API

BeftConfig

lớp peft.BeftConfig

< >

( task_type: Optional[Union[str, TaskType]] = Nonepeft_type: Optional[Union[str, PeftType]] = Noneauto_mapping: Optional[dict] = Nonepeft_version: Optional[str] = Nonebase_model_name_or_path: Optional[str] = Nonerevision: Optional[str] = Noneinference_mode: bool = Falsetarget_modules: Optional[Union[list[str], str]] = Nonemodules_to_save: Optional[list[str]] = Noneinit_weights: bool = True )

Tham số

  • target_modules (Optional[Union[List[str], str]]) — Tên của các module cần áp dụng adapter. Nếu được chỉ định, chỉ các module có tên được chỉ định sẽ được thay thế. Khi truyền một chuỗi, một phép khớp regex sẽ được thực hiện. Khi truyền một danh sách các chuỗi, một phép khớp chính xác sẽ được thực hiện hoặc kiểm tra xem tên của module có kết thúc bằng bất kỳ chuỗi nào được truyền hay không. Nếu không được chỉ định, các module sẽ được chọn theo kiến trúc của model. Nếu kiến trúc không được biết đến, một lỗi sẽ được ném ra — trong trường hợp này, bạn nên chỉ định các module đích thủ công.
  • modules_to_save (Optional[List[str]]) — Danh sách các module ngoài các lớp BEFT cần được đặt là có thể huấn luyện và lưu trong checkpoint cuối cùng.
  • init_weights (bool) — Có nên khởi tạo các vector trong các lớp BEFT hay không, mặc định là True. Không khuyến khích đặt giá trị này thành False.

Đây là lớp cấu hình để lưu trữ cấu hình của một BeftModel.

BeftModel

lớp peft.BeftModel

< >

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

Tham số

  • model (PreTrainedModel) — Mô hình cần được thích ứng.
  • config (BeftConfig) — Cấu hình của mô hình (BEFT).
  • adapter_name (str) — Tên của adapter, mặc định là "default".
  • low_cpu_mem_usage (bool, optional, mặc định là False) — Tạo trọng số adapter rỗng trên thiết bị meta. Hữu ích để tăng tốc quá trình tải.

Trả về

torch.nn.Module

Mô hình (BEFT).

Tạo một Infused Adapter bằng cách chỉ tinh chỉnh các số hạng bias được thêm vào của các phép chiếu giá trị từ một mô hình transformers được huấn luyện trước trong các chế độ có ít dữ liệu huấn luyện (BEFT). Phương pháp này được mô tả chi tiết tại https://arxiv.org/abs/2509.15974

Ví dụ:

>>> from transformers import AutoModelForSeq2SeqLM
>>> from peft import BeftConfig, get_peft_model

>>> config = BeftConfig(
...     task_type="SEQ_2_SEQ_LM",
...     target_modules=["v"],
... )

>>> model = AutoModelForSeq2SeqLM.from_pretrained("t5-base")
>>> beft_model = get_peft_model(model, config)

Thuộc tính:

  • model (PreTrainedModel) — Mô hình cần được thích ứng.
  • peft_config (BeftConfig): Cấu hình của mô hình (BEFT).
Update on GitHub