PEFT documentation
Polytropon
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.
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ụ.
Tóm tắt từ bài báo là:
Việc tinh chỉnh hiệu quả tham số (PEFT) cho khả năng tổng quát hóa liên nhiệm vụ bao gồm việc tiền huấn luyện các adapter trên một tập huấn luyện đa nhiệm vụ trước khi thích ứng few-shot sang các nhiệm vụ kiểm tra. Polytropon [Ponti et al., 2023] (Poly) đồng thời học một danh mục các adapter và một hàm định tuyến chọn một tập con (kích thước thay đổi) các adapter cho mỗi nhiệm vụ trong cả giai đoạn tiền huấn luyện và thích ứng few-shot. Trong bài báo này, chúng tôi nghiên cứu vai trò của việc định tuyến adapter đóng góp vào thành công của nó và thiết kế các biến thể mới dựa trên những phát hiện của chúng tôi. Trước tiên, chúng tôi xây dựng dựa trên trực giác rằng định tuyến ở mức độ chi tiết hơn cung cấp khả năng biểu diễn cao hơn. Do đó, chúng tôi đề xuất MHR (Multi-Head Routing), kết hợp các tập con tham số adapter và vượt trội hơn Poly với ngân sách tham số tương đương; bằng cách chỉ tinh chỉnh hàm định tuyến mà không tinh chỉnh các adapter (MHR-z), chúng tôi đạt được hiệu suất cạnh tranh với hiệu quả tham số cực cao. Thứ hai, chúng tôi phát hiện thấy rằng hiệu suất của Poly/MHR là kết quả của việc tối ưu hóa đa nhiệm vụ tốt hơn, chứ không phải là các thiên kiến cảm ứng mô-đun giúp tái tổ hợp adapter và thích ứng cục bộ, như đã được giả định trước đó. Thực tế, chúng tôi phát hiện thấy MHR thể hiện sự căn chỉnh gradient cao hơn giữa các nhiệm vụ so với bất kỳ phương pháp nào khác. Vì điều này ngụ ý rằng định tuyến chỉ quan trọng trong giai đoạn tiền huấn luyện đa nhiệm vụ, chúng tôi đề xuất MHR-mu, loại bỏ định tuyến và tinh chỉnh trung bình của các adapter đã tiền huấn luyện trong quá trình thích ứng few-shot. Điều này xác lập MHR-mu như một phương pháp hiệu quả cho việc tinh chỉnh đơn adapter..
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
< source >( 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
< source >( modelpeft_config: Union[PeftConfig, dict[str, PeftConfig]]adapter_name: strlow_cpu_mem_usage: bool = Falsestate_dict: Optional[dict[str, torch.Tensor]] = None )