PEFT documentation

Polytropon

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

Polytropon

Polytropon là một mô hình đa nhiệm với một số adapter LoRA khác nhau trong “kho” của nó. Mô hình học được tổ hợp adapter đúng từ kho bằng một hàm định tuyến để chọn ra tập con các module tốt nhất cho một tác vụ cụ thể. PEFT cũng hỗ trợ Multi-Head Adapter Routing (MHR) cho Polytropon, xây dựng và cải thiện hàm định tuyến bằng cách kết hợp các đầu adapter một cách chi tiết hơn. Các đầu adapter được tách thành các khối rời rạc và một hàm định tuyến khác nhau được học cho từng khối, cho phép khả năng biểu đạt cao hơn.

Kết hợp các kỹ năng mô-đun trong học đa nhiệm
Định tuyến Adapter đa đầu cho khả năng tổng quát hóa liên tác vụ

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

Thiết kế mô-đun khuyến khích các mô hình nơ-ron tách rời và tái tổ hợp các khía cạnh khác nhau của kiến thức để tổng quát hóa một cách có hệ thống hơn sang các tác vụ mới. Trong công việc này, chúng tôi giả định rằng mỗi tác vụ được liên kết với một tập con các kỹ năng rời rạc tiềm ẩn từ một kho (có thể nhỏ). Ngược lại, các kỹ năng tương ứng với các tham số hóa mô hình hiệu quả về mặt tham số (sparser / bậc thấp). Bằng cách đồng thời học các kỹ năng này và một ma trận phân bổ tác vụ-kỹ năng, mạng cho mỗi tác vụ được khởi tạo là trung bình các tham số của các kỹ năng đang hoạt động. Để ưu tiên các phân vùng mềm không tầm thường của kỹ năng giữa các tác vụ, chúng tôi thử nghiệm với một loạt các thiên kiến cảm ứng, chẳng hạn như tiên nghiệm Indian Buffet Process và tốc độ học hai tốc độ. Chúng tôi đánh giá mô hình kỹ năng tiềm ẩn của mình trên hai cài đặt chính: 1) học tăng cường đa tác vụ cho việc tuân theo chỉ dẫn có cơ sở trên 8 cấp độ của nền tảng BabyAI; và 2) thích ứng ít mẫu của các mô hình sinh văn bản-từ-văn-bản được huấn luyện trước trên CrossFit, một bộ chuẩn bao gồm 160 tác vụ NLP. Chúng tôi phát hiện ra rằng thiết kế mô-đun của một mạng tăng đáng kể hiệu quả mẫu trong học tăng cường và khả năng tổng quát hóa ít mẫu trong học có giám sát, so với các đường cơ sở có tham số chia sẻ hoàn toàn, cụ thể cho tác vụ, hoặc được sinh có điều kiện, trong đó kiến thức bị vướng víu giữa các tác vụ. Ngoài ra, chúng tôi chỉ ra cách các kỹ năng rời rạc hỗ trợ khả năng diễn giải, vì chúng tạo ra một hệ phân cấp rõ ràng của các tác vụ.

Nếu bạn muốn thử nghiệm routing mà không cần huấn luyện trước, bạn có thể xem biến thể Arrow LoRA.

API

PolyConfig

lớp peft.PolyConfig

< >

( 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 = Falser: int = 8target_modules: Optional[Union[list[str], str]] = Noneexclude_modules: Optional[Union[list[str], str]] = Nonemodules_to_save: Optional[list[str]] = Noneinit_weights: bool = Truepoly_type: Literal['poly'] = 'poly'n_tasks: int = 1n_skills: int = 4n_splits: int = 1 )

Tham số

  • r (int) — Kích thước attention của mỗi Lora trong Poly.
  • target_modules (Union[List[str],str]) — Tên của các module cần áp dụng Poly.
  • exclude_modules (Optional[Union[List[str], str]]) — Tên của các module không áp dụng adapter. 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 vào hay không.
  • modules_to_save (List[str]) — Danh sách các module ngoài các lớp Poly cần được đặt là có thể huấn luyện và lưu trong checkpoint cuối cùng.
  • init_weights (bool) — Có thực hiện khởi tạo trọng số Poly hay không.
  • poly_type (Literal["poly"]) — Biến thể của module Poly cần sử dụng. Hiện tại, chỉ hỗ trợ “poly”.
  • n_tasks (int) — Số lượng tác vụ trong một kịch bản đa nhiệm.
  • n_skills (int) — Số lượng kỹ năng (LoRA) trong mỗi lớp Poly.
  • n_splits (int) — Số lượng phần chia trong mỗi LoRA của một lớp Poly. Giá trị lớn hơn 1 cho thấy việc sử dụng Multi-Head Routing (MHR).

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

PolyModel

lớp peft.PolyModel

< >

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

Update on GitHub