PEFT- Các phương pháp tinh chỉnh hiệu quả tham số cho LLM
PEFT- Các phương pháp tinh chỉnh hiệu quả tham số cho LLM
- 50 min read
PEFT: Các phương pháp Tinh chỉnh Hiệu quả Tham số cho LLM
Giới thiệu
Trong bối cảnh LLM (Mô hình ngôn ngữ lớn) có những hạn chế và chi phí cao, nơi các tổ chức lớn sử dụng các khả năng tính toán cực kỳ phức tạp để tạo ra các mô hình ngôn ngữ đa mục đích, PEFT (Parameter-Efficient Fine-Tuning - Tinh chỉnh Hiệu quả Tham số) nổi lên như một giải pháp thay thế có giá trị — không chỉ để giảm chi phí mà còn để cho phép chỉ định và kiểm soát.
Bài viết này khám phá vũ trụ của các kỹ thuật Tinh chỉnh Hiệu quả Tham số (PEFT) — một bộ các phương pháp cho phép điều chỉnh các mô hình ngôn ngữ lớn (LLM) hiệu quả hơn về bộ nhớ và hiệu suất tính toán. Dựa trên bài báo “[2303.15647] Scaling Down to Scale Up: A Guide to Parameter-Efficient Fine-Tuning” và thư viện PEFT, tích hợp với Hugging Face’s Transformers, nghiên cứu này đi sâu vào các khái niệm và phương pháp chính tạo điều kiện thuận lợi cho việc tinh chỉnh các mô hình ngôn ngữ mà không cần huấn luyện tất cả hàng tỷ tham số của chúng.
Bài viết này cung cấp một giới thiệu về các kỹ thuật PEFT chính, mô tả cách chúng hoạt động và làm nổi bật các đặc điểm cũng như các ứng dụng tiềm năng của chúng để tinh chỉnh các mô hình ngôn ngữ, tập trung vào việc tối đa hóa hiệu quả bộ nhớ và hiệu suất thời gian huấn luyện.
Và cũng có một notebook thực hiện tinh chỉnh một mô hình để tóm tắt các cuộc trò chuyện dịch vụ khách hàng, sử dụng Tinh chỉnh Toàn bộ, LoRA, QLoRA và IA3.
Các loại phương pháp PEFT
Phương pháp Tinh chỉnh Hiệu quả Tham số (PEFT) có thể được phân loại theo hai khía cạnh chính: cấu trúc khái niệm của chúng (ví dụ: giới thiệu tham số mới hoặc điều chỉnh các tham số hiện có) và mục tiêu chính của chúng (giảm thiểu dấu chân bộ nhớ, cải thiện hiệu quả lưu trữ hoặc giảm chi phí tính toán).
Các phương pháp này được chia thành ba loại chính:
Phương pháp Cộng thêm
Các phương pháp cộng thêm giới thiệu các tham số mới vào mô hình cơ sở, thường thông qua các lớp bộ điều hợp nhỏ hoặc bằng cách điều chỉnh một phần các embedding đầu vào (được gọi là soft prompts). Các phương pháp này được sử dụng rộng rãi và bao gồm:
- Bộ điều hợp (Adapters): Các mạng dày đặc nhỏ (kết nối đầy đủ) được chèn sau các lớp phụ transformer cụ thể, cho phép điều chỉnh cho các tác vụ mới mà không cần huấn luyện tất cả các tham số của mô hình.
- Soft Prompts: Tinh chỉnh được áp dụng trực tiếp cho các embedding đầu vào của mô hình, cho phép điều chỉnh đặc hiệu tác vụ mà không cần sửa đổi các tham số nội bộ của mô hình.
Các phương pháp này thường hiệu quả về bộ nhớ vì chúng làm giảm kích thước của gradient và trạng thái bộ tối ưu hóa.
Phương pháp Lựa chọn
Các phương pháp lựa chọn chỉ điều chỉnh một phần các tham số hiện có của mô hình. Điều này có thể được thực hiện theo nhiều cách, chẳng hạn như:
- Tinh chỉnh Lớp trên cùng: Tập trung vào việc tinh chỉnh chỉ các lớp trên của mạng trong khi để yên các lớp dưới.
- Tinh chỉnh Tham số Cụ thể: Tinh chỉnh có chọn lọc các loại tham số nhất định, chẳng hạn như bias, trong khi đóng băng các tham số khác.
- Cập nhật Thưa thớt: Chọn một tập hợp con các tham số cụ thể để huấn luyện. Mặc dù có tiềm năng, cách tiếp cận này có thể tốn kém về mặt tính toán do cần xác định các tham số liên quan nhất.
Mặc dù giảm số lượng tham số được huấn luyện, các phương pháp lựa chọn có thể đòi hỏi chi phí tính toán cao, đặc biệt là trong các cấu hình thưa thớt.
Phương pháp dựa trên Tái tham số hóa
Các phương pháp dựa trên tái tham số hóa giảm số lượng tham số có thể huấn luyện bằng cách sử dụng các biểu diễn hạng thấp, tận dụng sự dư thừa có trong các mạng nơ-ron. Các phương pháp chính bao gồm:
- LoRa (Low-Rank Adaptation): Sử dụng phân rã ma trận hạng thấp để biểu diễn các cập nhật trọng số, cung cấp một cách hiệu quả để tinh chỉnh mô hình.
- Intrinsic SAID: Sử dụng phép biến đổi Fastfood, một kỹ thuật để biểu diễn hiệu quả các cập nhật hạng thấp.
Các phương pháp này làm giảm đáng kể số lượng tham số cần huấn luyện, làm cho chúng lý tưởng cho các tình huống mà hiệu quả lưu trữ và thời gian huấn luyện là rất quan trọng.
Điểm bổ sung
- Phương pháp Cộng thêm: Mặc dù chúng giới thiệu các tham số mới, chúng có thể hiệu quả về bộ nhớ hơn nói chung bằng cách giảm lượng gradient và trạng thái bộ tối ưu hóa cần được lưu trữ.
- Phương pháp Lựa chọn: Mặc dù có tiềm năng, chúng có thể đòi hỏi chi phí tính toán cao, đặc biệt là trong các trường hợp cập nhật thưa thớt.
- Phương pháp Lai: Sự kết hợp các ý tưởng từ các danh mục khác nhau thường được khám phá để tối đa hóa hiệu suất, tận dụng điểm mạnh của mỗi phương pháp.
| Phương pháp | Loại | Lưu trữ | Bộ nhớ | Backprop | Chi phí suy luận |
|---|---|---|---|---|---|
| Adapters (Houlsby et al., 2019) | A | có | có | không | FFN bổ sung |
| AdaMix (Wang et al., 2022) | A | có | có | không | FFN bổ sung |
| SparseAdapter (He et al., 2022b) | A, S | có | có | không | FFN bổ sung |
| Cross-Attn tuning (Gheini et al., 2021) | S | có | có | không | Không có chi phí |
| BitFit (Ben-Zaken et al., 2021) | S | có | có | không | Không có chi phí |
| DiffPruning (Guo et al., 2020) | S | có | không | không | Không có chi phí |
| Fish-Mask (Sung et al., 2021) | S | có | có thể | không | Không có chi phí |
| LT-SFT (Ansell et al., 2022) | S | có | có thể | không | Không có chi phí |
| Prompt Tuning (Lester et al., 2021) | A | có | có | không | Đầu vào bổ sung |
| Prefix-Tuning (Li and Liang, 2021) | A | có | có | không | Đầu vào bổ sung |
| Spot (Vu et al., 2021) | A | có | có | không | Đầu vào bổ sung |
| IPT (Qin et al., 2021) | A | có | có | không | FFN và đầu vào bổ sung |
| MAM Adapter (He et al., 2022a) | A | có | có | không | FFN và đầu vào bổ sung |
| Parallel Adapter (He et al., 2022a) | A | có | có | không | FFN bổ sung |
| Intrinsic SAID (Aghajanyan et al., 2020) | R | không | không | không | Không có chi phí |
| LoRa (Hu et al., 2021) | R | có | có | không | Không có chi phí |
| UniPELT (Mao et al., 2021) | A, R | có | có | không | FFN và đầu vào bổ sung |
| Compacter (Karimi Mahabadi et al., 2021) | A, R | có | có | không | FFN bổ sung |
| PHM Adapter (Karimi Mahabadi et al., 2021) | A, R | có | có | không | FFN bổ sung |
| KronA (Edalati et al., 2022) | R | có | có | không | Không có chi phí |
| KronA_Bres (Edalati et al., 2022) | A, R | có | có | không | Lớp tuyến tính bổ sung |
| (IA)³ (Liu et al., 2022) | A | có | có | không | Cổng bổ sung |
| Attention Fusion (Cao et al., 2022) | A | có | có | có | Bộ giải mã bổ sung |
| LeTS (Fu et al., 2021) | A | có | có | có | FFN bổ sung |
| Ladder Side-Tuning(Sung et al., 2022) | A | có | có | có | Bộ giải mã bổ sung |
| FAR (Vucetic et al., 2022) | S | có | có thể | không | Không có chi phí |
| S4-model (Chen et al., 2023) | A, R, S | có | có | không | FFN và đầu vào bổ sung |
Bảng trên trình bày một so sánh chi tiết các phương pháp PEFT về hiệu quả lưu trữ, hiệu quả bộ nhớ và hiệu quả tính toán. Nó xem xét việc giảm chi phí lan truyền ngược trong quá trình huấn luyện và chi phí suy luận liên quan đến mỗi phương pháp. Các kỹ thuật khác nhau được phân loại như sau:
- A (Cộng thêm): Các phương pháp giới thiệu các tham số mới vào mô hình.
- S (Lựa chọn): Các phương pháp chỉ tinh chỉnh một tập hợp con các tham số hiện có.
- R (Tái tham số hóa): Các phương pháp sử dụng các biểu diễn hạng thấp để giảm số lượng tham số có thể huấn luyện.
| Phương pháp | % Tham số có thể huấn luyện | % Tham số đã thay đổi | Đánh giá trên | ||
|---|---|---|---|---|---|
| <1B | <20B | >20B | |||
| Adapters (Houlsby et al., 2019) | 0.1 - 6 | 0.1 - 6 | có | có | có |
| AdaMix (Wang et al., 2022) | 0.1 - 0.2 | 0.1 - 0.2 | có | không | không |
| SparseAdapter (He et al., 2022b) | 2.0 | 2.0 | có | không | không |
| BitFit (Ben-Zaken et al., 2021) | 0.05 - 0.1 | 0.05 - 0.1 | có | có | có |
| DiffPruning (Guo et al., 2020) | 200 | 0.5 | có | không | không |
| Fish-Mask (Sung et al., 2021) | 0.01 - 0.5 | 0.01 - 0.5 | có | có | không |
| Prompt Tuning (Lester et al., 2021) | 0.1 | 0.1 | có | có | có |
| Prefix-Tuning (Li and Liang, 2021) | 0.1 - 4.0 | 0.1 - 4.0 | có | có | có |
| IPT (Qin et al., 2021) | 56.0 | 56.0 | có | không | không |
| MAM Adapter (He et al., 2022a) | 0.5 | 0.5 | có | không | không |
| Parallel Adapter (He et al., 2022a) | 0.5 | 0.5 | có | không | không |
| Intrinsic SAID (Aghajanyan et al., 2020) | 0.001 - 0.1 | ~0.1 hoặc 100 | có | có | không |
| LoRa (Hu et al., 2021) | 0.01 - 0.5 | ~0.5 hoặc ~30 | có | có | có |
| UniPELT (Mao et al., 2021) | 1.0 | 1.0 | có | không | không |
| Compacter (Karimi Mahabadi et al., 2021) | 0.05-0.07 | ~0.07 hoặc ~0.1 | có | có | không |
| PHM Adapter (Karimi Mahabadi et al., 2021) | 0.2 | ~0.2 hoặc ~1.0 | có | không | không |
| KronA (Edalati et al., 2022) | 0.07 | ~0.07 hoặc ~30.0 | có | không | không |
| KronA_Bres (Edalati et al., 2022) | 0.07 | ~0.07 hoặc ~1.0 | có | không | không |
| (IA)³ (Liu et al., 2022) | 0.02 | 0.02 | không | có | không |
| Ladder Side-Tuning(Sung et al., 2022) | 7.5 | 7.5 | có | có | không |
| FAR (Vucetic et al., 2022) | 6.6-26.4 | 6.6-26.4 | có | không | không |
| S4-model (Chen et al., 2023) | 0.5 | hơn 0.5 | có | có | không |
Bảng 2 cung cấp một phân tích về quy mô mô hình mà các phương pháp PEFT đã được đánh giá, làm nổi bật số lượng tham số có thể huấn luyện điển hình mà mỗi phương pháp sử dụng. Số lượng “tham số có thể huấn luyện” cụ thể đề cập đến các tham số được điều chỉnh bởi thuật toán tối ưu hóa gradient, phân biệt chúng với “tham số đã thay đổi”, chỉ ra sự thay đổi so với mô hình ban đầu. Đối với các phương pháp dựa trên tái tham số hóa, bảng báo cáo các tham số cả trước và sau khi tái tham số hóa.
Phương pháp Cộng thêm
Bộ điều hợp (Adapters)
Các phương pháp dựa trên bộ điều hợp thêm các tham số huấn luyện bổ sung sau các lớp chú ý và kết nối đầy đủ của một mô hình được đào tạo trước đã đóng băng để giảm mức sử dụng bộ nhớ và tăng tốc độ huấn luyện. Việc triển khai cụ thể của bộ điều hợp có thể khác nhau; nó có thể là một lớp bổ sung đơn giản hoặc liên quan đến việc biểu diễn các cập nhật trọng số ∆W dưới dạng phân rã hạng thấp của ma trận trọng số. Trong cả hai trường hợp, bộ điều hợp thường nhỏ nhưng cho thấy hiệu suất tương đương với các mô hình được tinh chỉnh đầy đủ, cho phép huấn luyện các mô hình lớn hơn với ít tài nguyên hơn.
Khái niệm về bộ điều hợp ban đầu được phát triển cho phân loại hình ảnh đa miền (Rebuffi et al., 2017, 2018) và liên quan đến việc thêm các lớp đặc trưng miền vào các mô-đun mạng nơ-ron. Houlsby et al. (2019) đã điều chỉnh ý tưởng này cho NLP. Họ đề xuất thêm các mạng kết nối đầy đủ sau các lớp chú ý và FFN trong kiến trúc Transformer.
Soft Prompts
Các phương pháp Prompt đã nổi lên như một cách hiệu quả để điều chỉnh các mô hình ngôn ngữ được đào tạo trước cho các tác vụ cụ thể mà không cần tinh chỉnh đầy đủ (Brown et al., 2020). Khái niệm này liên quan đến việc cung cấp các hướng dẫn hoặc ví dụ cho mô hình định hướng hành vi của nó cho tác vụ mong muốn.
Có hai loại phương pháp prompt chính:
- Hard Prompts: Bao gồm văn bản tự nhiên được tạo thủ công để hướng dẫn mô hình về tác vụ. Ví dụ: “Translate the following text to French:” hoặc “Classify the sentiment as positive or negative:”. Mặc dù trực quan, chúng đòi hỏi chuyên môn đáng kể để tạo ra các prompt hiệu quả.
- Soft Prompts: Sử dụng các vector liên tục và có thể huấn luyện được nối với các embedding đầu vào. Không giống như hard prompts, các “virtual tokens” này được tối ưu hóa tự động cho tác vụ nhưng không thể diễn giải được bằng con người vì chúng không tương ứng với các từ thực tế. (Li và Liang, 2021; Lester et al., 2021; Liu et al., 2021)
Prompt Tuning
Khái niệm: Prompt Tuning đề xuất thêm một tensor có thể huấn luyện, được gọi là “soft prompt”, vào các embedding đầu vào của mô hình. Tensor này được tối ưu hóa trực tiếp thông qua giảm thiểu gradient, cho phép mô hình điều chỉnh hành vi của nó mà không làm thay đổi các tham số mô hình cơ bản.
Triển khai:
- Prompt tokens được khởi tạo ngẫu nhiên hoặc từ các word embedding hiện có.
- Trong quá trình huấn luyện, chỉ các prompt tokens được cập nhật, giữ nguyên mô hình cơ sở.
- Kích thước prompt (số lượng token) là một siêu tham số có thể điều chỉnh.
- Prompts có thể được tái sử dụng cho các phiên bản khác nhau của cùng một tác vụ.
Hiệu quả:
- Nghiên cứu cho thấy rằng prompt tuning hiệu quả về tham số hơn khi kích thước mô hình tăng lên. Ví dụ, T5-11B đạt hiệu suất tương tự trên chuẩn đánh giá SuperGLUE với các soft prompt ngắn (5 token) và dài (150 token).
- Quy mô mô hình: Prompt tuning chỉ trở nên tương đương với tinh chỉnh toàn bộ trong các mô hình có hơn 10 tỷ tham số, cho thấy hiệu quả của nó chủ yếu ở các mô hình lớn.
- Chi phí suy luận bổ sung: Mặc dù soft prompts rất hiệu quả về tham số, chúng có thể dẫn đến tăng cường độ tính toán do có thêm token, đặc biệt trong các mô hình transformer có độ phức tạp bậc hai.
Ứng dụng và Hạn chế:
- Lý tưởng cho các tác vụ phân loại và sinh văn bản.
- Cho phép duy trì một bản sao duy nhất của mô hình cơ sở cho nhiều tác vụ.
- Hiệu suất có thể kém hơn tinh chỉnh truyền thống trong các mô hình nhỏ hơn.
- Khả năng diễn giải của prompt tokens bị hạn chế bởi bản chất liên tục của chúng.
Prefix Tuning
Khái niệm: Prefix Tuning là một phương pháp tinh chỉnh giới thiệu các tham số có thể huấn luyện (‘prefixes’) trên tất cả các lớp của mô hình, giữ nguyên các tham số ban đầu không thay đổi. Không giống như các phương pháp khác chỉ sửa đổi các embedding đầu vào, phương pháp này tối ưu hóa prefixes ở nhiều cấp độ kiến trúc, cho phép điều chỉnh tinh tế và hiệu quả hơn.
Trong hình trên, người ta chứng minh rằng chỉ các prefix (khối prefix màu đỏ) được tối ưu hóa, do đó chỉ cần lưu trữ prefix cho mỗi tác vụ, làm cho phương pháp này hiệu quả và mô-đun.
Triển khai:
- Một chuỗi các vector đặc trưng tác vụ (prefixes) được chèn vào các trạng thái ẩn ở mỗi lớp của mô hình.
- Để xử lý sự bất ổn định trong quá trình huấn luyện, prefixes được tạo ra thông qua một mạng chuyển tiếp (FFN), được tối ưu hóa trong quá trình huấn luyện. Sau khi huấn luyện, chỉ prefixes được giữ lại và FFN bị loại bỏ.
Hiệu suất:
- Cho thấy hiệu suất gần với tinh chỉnh toàn bộ, chỉ yêu cầu ít hơn 0,1% tổng số tham số của mô hình.
- Nó hoạt động đặc biệt tốt trên các tác vụ sinh ngôn ngữ tự nhiên (NLG) và đặc biệt hiệu quả trong các thiết lập ít dữ liệu.
So sánh với Prompt Tuning:
- Cả hai phương pháp đều thêm các tham số bổ sung vào mô hình, nhưng prefix tuning chèn các tham số này vào mỗi lớp, trong khi prompt tuning chỉ sửa đổi các embedding đầu vào.
- Prefix tuning, với việc tích hợp trên các lớp, đạt được hiệu suất tương đương với tinh chỉnh toàn bộ, nhưng với hiệu quả cao hơn nhiều, chủ yếu ở các mô hình lớn.
P-tuning
Khái niệm: P-Tuning là một phương pháp được phát triển để tối ưu hóa hiệu suất của các mô hình ngôn ngữ trong các tác vụ hiểu ngôn ngữ tự nhiên (NLU), nhằm khắc phục những hạn chế của các prompt rời rạc truyền thống. Dựa trên khái niệm soft prompt, phương pháp này sử dụng một tensor embedding có thể huấn luyện được tối ưu hóa thông qua một bộ mã hóa prompt chuyên dụng — thường là một mạng LSTM hai chiều. Cách tiếp cận này cho phép điều chỉnh mô hình tinh tế hơn cho các tác vụ cụ thể trong khi vẫn duy trì hiệu quả tính toán.
Triển khai:
- Phương pháp bắt đầu bằng cách chèn các token neo vào chuỗi đầu vào, đóng vai trò là điểm tham chiếu để hướng dẫn mô hình xác định các thành phần đầu vào quan trọng.
- Prompt tokens có thể được định vị linh hoạt tại bất kỳ vị trí nào trong chuỗi đầu vào, không giới hạn ở phần đầu.
- Sửa đổi mô hình chỉ xảy ra ở lớp đầu vào, không giống như các phương pháp như prefix tuning ảnh hưởng đến nhiều lớp, dẫn đến việc triển khai hiệu quả hơn.
Hiệu quả/Hiệu suất:
- Trong các điểm chuẩn như LAMA và SuperGlue, P-Tuning cho phép các mô hình GPT khôi phục một lượng lớn kiến thức thế giới và đạt được hiệu suất tương đương hoặc tốt hơn các mô hình BERT có kích thước tương tự.
- Nó cũng cải thiện hiệu suất của mô hình BERT, đặc biệt trong các thiết lập có giám sát và học ít mẫu, giảm sự phụ thuộc vào kỹ thuật prompt chuyên sâu.
Ứng dụng:
- Chủ yếu áp dụng cho các tác vụ NLU, P-Tuning cho phép các mô hình như GPT cạnh tranh hiệu quả trong các lĩnh vực mà BERT chiếm ưu thế.
- Nó đặc biệt có lợi cho các tác vụ yêu cầu kiểm tra kiến thức và học ít mẫu, nơi nó vượt trội hơn các phương pháp tiên tiến.
So sánh và Điểm bổ sung:
- So với các phương pháp tinh chỉnh khác như prefix tuning, P-Tuning linh hoạt hơn trong việc định vị prompt và không yêu cầu sửa đổi tất cả các lớp của mô hình. Việc sử dụng bộ mã hóa prompt, đặc biệt là LSTM, cung cấp khả năng tối ưu hóa prompt mạnh mẽ hơn, dẫn đến hiệu suất vượt trội trong các điểm chuẩn cụ thể.
Phương pháp dựa trên Tái tham số hóa
Các phương pháp tinh chỉnh hiệu quả tham số dựa trên tái tham số hóa tận dụng các biểu diễn hạng thấp để giảm thiểu số lượng tham số có thể huấn luyện. Khái niệm rằng các mạng nơ-ron có các biểu diễn chiều thấp đã được khám phá rộng rãi trong các phân tích học sâu thực nghiệm và lý thuyết.
Intrinsic SAID
Được giới thiệu bởi Aghajanyan et al. vào năm 2020, Intrinsic SAID là một phương pháp tinh chỉnh dựa trên khám phá rằng các mô hình ngôn ngữ lớn có thể được điều chỉnh hiệu quả bằng cách sử dụng ít tham số hơn nhiều so với quy mô tổng thể của chúng. Phương pháp này khám phá khái niệm “chiều nội tại” - ý tưởng rằng tồn tại một không gian con có chiều thấp hơn, nơi việc tinh chỉnh có thể được thực hiện hiệu quả như trong toàn bộ không gian tham số.
Khái niệm:
- Chiều nội tại biểu thị số lượng tham số tối thiểu cần thiết để điều chỉnh hiệu quả một mô hình cho một tác vụ cụ thể.
- SAID sử dụng phép biến đổi Fastfood để chiếu các cập nhật từ không gian chiều thấp sang không gian mô hình đầy đủ, cho phép tinh chỉnh hiệu quả.
- Một phát hiện quan trọng là các mô hình lớn hơn thường có chiều nội tại thấp hơn so với quy mô tổng thể của chúng, làm cho phương pháp này đặc biệt phù hợp với LLM.
Triển khai:
- Hạn chế:
- Mặc dù giảm số lượng tham số có thể huấn luyện, nó vẫn yêu cầu cập nhật tất cả các trọng số của mô hình.
- Tính toán chiều nội tại có thể tốn kém về mặt tính toán.
- Hiệu quả của phép biến đổi Fastfood có thể bị ảnh hưởng trên phần cứng học sâu cụ thể.
- Việc triển khai thực tế có thể phức tạp hơn các phương pháp như LoRA.
Intrinsic SAID, mặc dù có những hạn chế thực tế đối với các mô hình rất lớn, đã thiết lập các nền tảng lý thuyết quan trọng có ảnh hưởng trực tiếp đến sự phát triển của các phương pháp thực tế hơn như LoRA. Đóng góp chính của nó là chứng minh bằng toán học rằng việc tinh chỉnh hiệu quả trong các không gian con chiều thấp không chỉ khả thi mà còn là một thuộc tính nội tại của các mô hình quy mô lớn. Khám phá này đã mở đường cho một thế hệ kỹ thuật tinh chỉnh hiệu quả mới, ảnh hưởng đáng kể đến hướng nghiên cứu về điều chỉnh mô hình ngôn ngữ.
Low-Rank Adaptation (LoRA)
Được giới thiệu bởi Hu et al. vào năm 2021, LoRA giảm đáng kể chi phí tính toán bằng cách phân tách các cập nhật trọng số thành các ma trận hạng thấp, giảm thiểu số lượng tham số có thể huấn luyện và mức tiêu thụ bộ nhớ.
Khái niệm: Các mô hình học sâu, như LLM (Mô hình ngôn ngữ lớn), phụ thuộc vào các ma trận trọng số lưu trữ các tham số được học trong quá trình đào tạo trước. Trong tinh chỉnh truyền thống, các ma trận trọng số này (W) được cập nhật trực tiếp. Mặt khác, LoRA biểu diễn các cập nhật này (∆W) dưới dạng tích của hai ma trận hạng thấp (Wa và Wb): ∆W = WA x Wb
Sự phân tách này giảm đáng kể số lượng tham số có thể huấn luyện trong khi giữ nguyên ma trận trọng số ban đầu. Cách tiếp cận này có thể thực hiện được nhờ khái niệm chiều nội tại, cho thấy rằng các mô hình lớn có chỗ để học hiệu quả trong các chiều nhỏ hơn. Vào năm 2020, một nhóm Facebook đã xuất bản một bài báo (Intrinsic Dimensionality Paper) chứng minh điều này.
Triển khai: Việc triển khai LoRA tuân theo các bước sau:
Giả sử hạng của ma trận là 300 và W được phân tách thành hai ma trận hạng 300, P và Q. Kích thước của P và Q sẽ là:
P shape = (16000, 300)
Q shape = (300, 16000)
Tổng số tham số với phân tách sẽ là:
16000 * 300 + 300 * 16000 = 9600000 = 9.6 triệu
- Huấn luyện: Chỉ các ma trận (A) và (B) được huấn luyện, trong khi (W) vẫn bị đóng băng.
- Kết hợp: Sau khi tinh chỉnh, (∆W) có thể được kết hợp trở lại vào ma trận (W), duy trì hiệu suất của mô hình.
Trong thực tế, LoRA thường được áp dụng cho các khối chú ý Transformer, chẳng hạn như các ma trận chiếu Wk và Wv trong các mô-đun chú ý đa đầu.
Hiệu quả/Hiệu suất:
- Giảm Tham số: Một mô hình như GPT-3, với 175 tỷ tham số, sẽ chỉ cần điều chỉnh khoảng 37,7 triệu tham số bằng cách sử dụng LoRA, đại diện cho mức giảm gần 5000 lần chi phí tính toán.
- Tính linh hoạt: LoRA có thể được áp dụng có chọn lọc cho các phần của mô hình, chẳng hạn như các lớp cụ thể, để tối ưu hóa hiệu suất hơn nữa.
- Hiệu suất: Các nghiên cứu cho thấy rằng các mô hình được tinh chỉnh bằng LoRA có kết quả tương đương với tinh chỉnh đầy đủ, nhưng với chi phí tính toán và bộ nhớ thấp hơn.
Ứng dụng:
- Mô hình Ngôn ngữ: LoRA ban đầu được thiết kế cho LLM, cho phép điều chỉnh hiệu quả các mô hình như GPT, PaLM và LLaMA.
- Mô hình Khuếch tán: Do hiệu quả của nó, LoRA đã trở thành một lựa chọn phổ biến cho các mô hình tạo ảnh như DALL-E và Stable Diffusion.
- Tạo biến thể: Phương pháp này tạo điều kiện thuận lợi cho việc tạo ra nhiều biến thể nhẹ của mô hình cơ sở, được điều chỉnh cho các tác vụ khác nhau.
So sánh và Lợi ích Bổ sung:
- Vượt qua các Phương pháp PEFT Khác: LoRA thường vượt trội hơn các kỹ thuật như BitFit và Adapters, đặc biệt là ở các mô hình rất lớn.
- Khả năng Kết hợp: Phương pháp này là trực giao với các điều chỉnh hiệu quả khác, chẳng hạn như lượng tử hóa, cho phép kết hợp như QLoRA.
- Loại bỏ Độ trễ: Khả năng kết hợp các trọng số đã điều chỉnh vào mô hình cơ sở loại bỏ độ trễ suy luận bổ sung, làm cho LoRA lý tưởng cho các ứng dụng thời gian thực.
Với những lợi ích này, LoRA đại diện cho một cột mốc quan trọng trong việc huấn luyện hiệu quả các mô hình quy mô lớn, cân bằng ấn tượng giữa chi phí và hiệu suất.
Quantized Low-Rank Adaptation (QLoRA)
Được giới thiệu bởi Dettmers et al., 2023, QLoRA kết hợp hiệu quả của lượng tử hóa với phương pháp thích ứng hạng thấp của LoRA, tiếp tục tối ưu hóa việc tinh chỉnh cho các mô hình ngôn ngữ quy mô lớn. Kỹ thuật này cho phép các mô hình có tới 65 tỷ tham số được tinh chỉnh trên các GPU hạn chế (chẳng hạn như một GPU 48GB duy nhất), đồng thời bảo tồn hiệu suất của các phương pháp tinh chỉnh 16 bit truyền thống.
Khái niệm: QLoRA sử dụng lượng tử hóa để giảm độ chính xác số học của trọng số mô hình, giảm thiểu việc sử dụng bộ nhớ đồng thời duy trì hiệu quả tính toán. Đồng thời, LoRA được áp dụng để thực hiện các cập nhật trọng số bằng các ma trận hạng thấp. Sự kết hợp mạnh mẽ này làm giảm đáng kể chi phí tính toán và bộ nhớ mà không làm tổn hại đến hiệu suất.
Các cải tiến chính bao gồm:
- 4-bit Normal Float (NF4): Một kiểu dữ liệu mới được thiết kế đặc biệt để biểu diễn hiệu quả các trọng số tuân theo phân phối chuẩn (phổ biến trong LLM) chỉ sử dụng 4 bit cho mỗi phần tử. NF4 đã chứng tỏ sự vượt trội hơn FP4 và Int4, cải thiện đáng kể độ chính xác sau lượng tử hóa, như được chứng minh bằng perplexity trung bình thấp hơn (27,41 so với 31,07) trong các thử nghiệm với các mô hình như OPT, BLOOM, LLaMA và Pythia.
- Double Quantization: Được triển khai thông qua bitsandbytes của Hugging Face, điều này làm giảm mức sử dụng bộ nhớ trung bình bằng cách lượng tử hóa cả các hằng số lượng tử hóa.
- Paged Optimizers: Quản lý các đỉnh bộ nhớ trong quá trình huấn luyện.
Triển khai:
- Lượng tử hóa: Trọng số mô hình được lượng tử hóa thành 4 bit bằng kỹ thuật NF4, giảm yêu cầu bộ nhớ mà không làm mất thông tin liên quan.
- Tinh chỉnh: Các ma trận hạng thấp được huấn luyện (tương tự như LoRA), trong khi các trọng số ban đầu vẫn được lượng tử hóa và đóng băng.
- Hiệu suất được bảo tồn: Cách tiếp cận này duy trì độ chính xác và hiệu quả của mô hình, ngay cả với việc giảm tài nguyên đáng kể.
Kết quả Thực nghiệm: Các thí nghiệm với QLoRA đã chứng minh rằng nó tái tạo hiệu suất của các phương pháp tinh chỉnh 16 bit truyền thống, ngay cả khi sử dụng lượng tử hóa 4 bit. Điều này đã được chứng minh trong các điểm chuẩn học thuật như GLUE, Super-NaturalInstructions và MMLU.
Như được hiển thị trong Bảng 2, định dạng NF4 với double quantization (NFloat4 + DQ) đạt được perplexity trung bình thấp nhất (27,41) trong tất cả các định dạng 4 bit được thử nghiệm, làm nổi bật hiệu quả của nó trong việc bảo tồn thông tin. Bảng 3 cho thấy QLoRA duy trì hiệu suất gần hoặc bằng với quá trình đào tạo 16 bit (BF16) trên các quy mô mô hình và tác vụ khác nhau.
Hiệu quả:
- Giảm Bộ nhớ: Lượng tử hóa 4 bit giảm mức sử dụng bộ nhớ tới 75% so với trọng số FP16.
- Chi phí Tính toán: Kết hợp LoRA với lượng tử hóa cho phép tinh chỉnh các mô hình cực lớn bằng phần cứng dễ tiếp cận hơn.
- Hiệu suất Tối ưu hóa: Ngay cả với các tài nguyên hạn chế, QLoRA cũng đạt được kết quả tương đương với các phương pháp truyền thống, cho thấy khả năng áp dụng thực tế.
Bằng cách kết hợp lượng tử hóa và thích ứng hạng thấp, QLoRA dân chủ hóa việc tinh chỉnh LLM, cho phép các nhà nghiên cứu và nhà phát triển có tài nguyên tính toán hạn chế làm việc với các mô hình quy mô lớn mà không làm tổn hại đến chất lượng.
Khởi tạo
Các trọng số LoRA được khởi tạo trong thư viện PEFT bằng Kaiming-uniform cho trọng số A và giá trị 0 cho B theo mặc định, dẫn đến phép biến đổi đồng nhất, phù hợp với triển khai tham chiếu.
PiSSA
PiSSA khởi tạo bộ điều hợp LoRA bằng cách sử dụng các giá trị và vector suy biến chính của ma trận trọng số ban đầu (W) của mô hình để khởi tạo bộ điều hợp. Sự sửa đổi trực tiếp này cho phép PiSSA hội tụ nhanh hơn so với khởi tạo tiêu chuẩn và đạt được hiệu suất vượt trội bằng cách tập trung vào các thành phần liên quan nhất của mô hình trong quá trình tinh chỉnh trong khi vẫn giữ nguyên các thành phần còn lại. Hơn nữa, PiSSA giảm lỗi lượng tử hóa so với QLoRA, dẫn đến cải thiện bổ sung.
Các hình ảnh trên minh họa lợi thế của PiSSA trong việc cải thiện và tăng tốc độ hội tụ cũng như giảm lỗi lượng tử hóa, như được chứng minh qua các thử nghiệm trong bài báo đã xuất bản.
Các thử nghiệm cho thấy PiSSA liên tục vượt trội hơn LoRA trên nhiều mô hình và tác vụ khác nhau, bao gồm các điểm chuẩn hiểu ngôn ngữ tự nhiên và sinh ngôn ngữ tự nhiên. Ví dụ, trên điểm chuẩn GSM8K, mô hình Mistral-7B được tinh chỉnh bằng PiSSA đạt độ chính xác 72,86%, vượt trội so với 67,7% đạt được với LoRA, một cải tiến đáng kể 5,16%. Hơn nữa, PiSSA vượt trội trong việc giảm lỗi lượng tử hóa so với QLoRA. Phiên bản lượng tử hóa, QPiSSA, đạt độ chính xác 86,05% trong cùng một điểm chuẩn, vượt trội hơn QLoRA với 81,73%.
Nhờ khả năng tương thích với các kỹ thuật lượng tử hóa và việc sử dụng SVD nhanh để khởi tạo, PiSSA cung cấp một giải pháp hiệu quả về bộ nhớ và nâng cao hiệu suất mà không ảnh hưởng đến tốc độ huấn luyện.
OLoRA
OLoRA (Orthonormal Low-Rank Adaptation) là một kỹ thuật thích ứng tham số hiệu quả sử dụng phân tách QR để khởi tạo các bộ điều hợp LoRA. Thay vì áp dụng trực tiếp sự thích ứng cho trọng số mô hình, OLoRA giới thiệu một phép biến đổi trực giao cho ma trận trọng số được đào tạo trước trước bất kỳ điều chỉnh nào. Nó phân tách ma trận trọng số 𝑊 thành một ma trận trực giao 𝑄 và một ma trận tam giác trên 𝑅. Cách tiếp cận này mang lại sự ổn định trong quá trình huấn luyện cao hơn, tăng tốc độ hội tụ và mang lại hiệu suất vượt trội.
OLoRA được áp dụng độc lập cho mỗi lớp của mô hình, sử dụng các ma trận trọng số đã điều chỉnh trong quá trình truyền xuôi, trong khi gradient chỉ được tính toán liên quan đến các ma trận điều chỉnh trong quá trình lan truyền ngược. Điều này bảo tồn kiến thức của mô hình ban đầu, cho phép điều chỉnh hiệu quả với chi phí tính toán thấp.
Mặc dù phân tách QR có chi phí tính toán ban đầu là 𝑂(𝑚𝑛𝑟), nhưng nó chỉ được thực hiện một lần cho mỗi lớp trong quá trình khởi tạo, làm cho chi phí bổ sung không đáng kể so với tổng chi phí huấn luyện các mô hình quy mô lớn.
Các số liệu này minh họa hành vi mất mát trong quá trình tinh chỉnh cho các mô hình như Tiny-Llama-1.1B, với các hạng khác nhau, Gemma-2B và OPT-1.3B, nơi OLoRA hội tụ nhanh hơn. Các thử nghiệm này được trình bày chi tiết trong bài báo gốc.
Rank-stabilized LoRA (rsLoRA)
Kiến trúc LoRA của các bộ điều hợp LoRA theo tỷ lệ trong mỗi lần truyền xuôi theo một hệ số cố định được thiết lập trong quá trình khởi tạo, phụ thuộc vào hạng (r). Trong việc triển khai ban đầu, hệ số này được định nghĩa là ( \text{lora_alpha} / r ), nhưng rank-stabilized LoRA (rsLoRA) sử dụng ( \text{lora_alpha} / \sqrt{r} ), ổn định bộ điều hợp và tăng cường tiềm năng hiệu suất khi sử dụng các hạng cao hơn.
Trong các thử nghiệm, rsLoRA đã chứng tỏ hiệu suất vượt trội so với LoRA ở các cấu hình hạng cao. Trong khi huấn luyện mô hình LLaMA 2 trên 20.000 ví dụ từ tập dữ liệu hướng dẫn OpenOrca, nó duy trì sự ổn định của gradient ngay cả với các hạng cao, trong khi LoRA tiêu chuẩn gặp phải hiện tượng suy sụp gradient và hiệu quả học tập thấp hơn.
Weight-Decomposed Low-Rank Adaptation (DoRA)
DoRA phân tách các cập nhật trọng số thành hai thành phần: độ lớn và hướng. Hướng được xử lý bởi LoRA tiêu chuẩn, trong khi độ lớn được quản lý bởi một tham số học riêng biệt. Cách tiếp cận này cải thiện hiệu suất của LoRA, đặc biệt ở các hạng thấp hơn.
Các thử nghiệm đã chứng minh rằng DoRA liên tục vượt trội hơn LoRA và các phương pháp tinh chỉnh khác trên các mô hình như LLaMA, LLaVA và VL-BART trong các tác vụ hạ nguồn khác nhau, bao gồm lý luận thông thường, tinh chỉnh hướng dẫn trực quan và hiểu văn bản-hình ảnh/video. Ví dụ, trên mô hình LLaMA-7B, DoRA đã cải thiện độ chính xác trung bình lên 3,7% so với LoRA trên các tập dữ liệu lý luận thông thường, thậm chí còn vượt qua mức độ chính xác của ChatGPT. Đối với các mô hình lớn hơn như LLaMA-13B, DoRA đạt hiệu suất tương tự như bộ điều hợp song song trong khi chỉ sử dụng một phần tư số tham số có thể huấn luyện và không làm tăng chi phí suy luận.
Mã bài báo: GitHub - NVlabs/DoRA: [ICML2024 (Oral)] Official PyTorch implementation of DoRA: Weight-Decomposed Low-Rank Adaptation
Hợp nhất Bộ điều hợp LoRA
Trong khi LoRA nhỏ gọn và nhanh hơn đáng kể để huấn luyện, các vấn đề về độ trễ có thể phát sinh trong quá trình suy luận do việc tải riêng mô hình cơ sở và bộ điều hợp LoRA. Để loại bỏ độ trễ này, bạn có thể sử dụng hàm merge_and_unload() để hợp nhất các trọng số bộ điều hợp với mô hình cơ sở. Điều này cho phép bạn sử dụng mô hình đã hợp nhất mới như một mô hình độc lập. Hàm merge_and_unload() không giữ lại trọng số bộ điều hợp trong bộ nhớ.
Dưới đây là một sơ đồ minh họa trực quan về việc hợp nhất bộ điều hợp LoRA:
Để giữ một bản sao riêng của trọng số và cho phép tách rời bộ điều hợp, bạn có thể sử dụng merge_adapter() và unmerge_adapter().
Biến thể
Low-Rank Hadamard Product (LoHa)
Khái niệm: Low-Rank Hadamard Product (LoHa) sử dụng các ma trận hạng thấp kết hợp thông qua tích Hadamard (nhân theo từng phần tử) thay vì phép nhân ma trận truyền thống.
- Biểu diễn ∆W: Trong LoHa, ma trận cập nhật trọng số ∆W được phân tách thành bốn ma trận nhỏ hơn, và mỗi cặp ma trận hạng thấp này được kết hợp bằng tích Hadamard. Điều này cho phép mô hình giữ lại hạng cao và khả năng biểu đạt trong khi vẫn giữ nguyên số lượng tham số có thể huấn luyện.
Triển khai:
- Tích Hadamard: LoHa dựa vào tích Hadamard thay vì phép nhân ma trận để kết hợp các ma trận hạng thấp, ảnh hưởng đến cấu trúc và quá trình huấn luyện của mô hình.
- Mở rộng LoRA: LoHa có thể được xem là một phần mở rộng của Low-Rank Adaptation (LoRA), nâng cao dung lượng mô hình mà không cần thêm nhiều tham số hơn.
- Lớp Embedding: Mặc dù LoHa có thể áp dụng cho các mô hình khác nhau, nhưng nó chưa được triển khai đầy đủ trong các framework Parameter-Efficient Fine-Tuning (PEFT) cho các lớp embedding.
Hiệu quả và Hiệu suất:
- Trade-off Hiệu suất: LoHa cân bằng khả năng biểu đạt của mô hình và số lượng tham số. Nó cho phép hạng và dung lượng cao hơn mà không làm tăng gánh nặng tính toán.
- Học Liên kết (FL): Trong FL, LoHa đã thể hiện sự giảm đáng kể chi phí truyền thông (thấp hơn 3–10 lần) trong khi vẫn duy trì hiệu suất mô hình tương đương. Điều này đạt được thông qua phương pháp FedPara, sử dụng trọng số hạng thấp theo sau là tích Hadamard, làm cho nó hiệu quả hơn các phương pháp hạng thấp truyền thống.
Ứng dụng: LoHa ban đầu được phát triển cho các tác vụ thị giác máy tính, đặc biệt là trong các mô hình khuếch tán nơi việc tạo ra các hình ảnh đa dạng là rất quan trọng.
Low-Rank Kronecker Product (LoKr)
LoKr là một biến thể LoRA, liên quan chặt chẽ đến LoRA và LoHa, chủ yếu được áp dụng trong các mô hình khuếch tán nhưng cũng có thể điều chỉnh cho các loại mô hình khác. Sự khác biệt chính giữa LoKr và LoRA là LoKr thay thế phép nhân ma trận truyền thống bằng tích Kronecker. Sự phân tách này tạo ra một ma trận khối bảo tồn cấu trúc và hạng của ma trận trọng số ban đầu, đảm bảo mô hình giữ nguyên khả năng tổng quát hóa trong quá trình tinh chỉnh.
Ưu điểm chính:
- Khả năng Vector hóa: Tích Kronecker có thể được vector hóa, nghĩa là các cột của ma trận có thể được xếp chồng thành một vector. Điều này làm giảm sự cần thiết phải xây dựng lại hoàn toàn ma trận điều chỉnh (∆W), tăng tốc độ tinh chỉnh và nâng cao hiệu quả.
- Linh hoạt Ma trận Bổ sung: LoKr cho phép có ma trận hạng thấp thứ ba tùy chọn, cung cấp khả năng kiểm soát tinh tế hơn trong quá trình tinh chỉnh.
Mặc dù ban đầu được thiết kế cho các mô hình khuếch tán, tính linh hoạt của LoKr cho phép tích hợp vào nhiều loại mô hình, làm cho nó trở thành một kỹ thuật thích ứng hạng thấp hiệu quả mà không làm tổn hại đến hiệu suất của mô hình cơ sở.
Mixture of LoRA Experts (X-LoRA)
Khái niệm: X-LoRA là một phương pháp thích ứng hạng thấp nâng cao sử dụng khái niệm hỗn hợp các chuyên gia (MoE). Nó kích hoạt động các chuyên gia LoRA khác nhau bằng cách sử dụng các cơ chế điều khiển (cổng) có thể dày đặc hoặc thưa thớt. Không giống như các phương pháp MoE truyền thống, X-LoRA giữ cả chuyên gia LoRA và mô hình cơ sở bị đóng băng trong quá trình huấn luyện, chỉ huấn luyện các lớp điều khiển (cổng), do đó giảm độ phức tạp và chi phí huấn luyện.
Triển khai:
- Hai lần Lượt: Trong quá trình suy luận, X-LoRA thực hiện hai bước. Đầu tiên, mô hình tạo ra các trạng thái ẩn mà không áp dụng bộ điều hợp LoRA. Sau đó, các trạng thái này được sử dụng để tính toán các điều chỉnh từ bộ điều hợp LoRA, tái tổ chức động và chọn các chuyên gia phù hợp nhất cho tác vụ.
- Lớp Điều khiển: Các lớp điều khiển quyết định chuyên gia LoRA nào được kích hoạt và điều chỉnh chính xác quy mô của chúng, cả ở cấp độ lớp và token. Đây là những phần duy nhất được huấn luyện trong X-LoRA.
- Thích ứng tùy chỉnh: X-LoRA cho phép thích ứng chi tiết, kích hoạt các chuyên gia LoRA cụ thể cho các lớp và token nhất định, dẫn đến việc tinh chỉnh cá nhân hóa cao.
Hiệu quả và Hiệu suất:
- Hiệu quả Tham số: Vì chỉ các lớp điều khiển được huấn luyện, trong khi mô hình cơ sở và chuyên gia LoRA vẫn bị đóng băng, X-LoRA giảm đáng kể số lượng tham số được điều chỉnh, cho phép huấn luyện nhẹ mà không làm giảm hiệu suất.
- Khôi phục Kiến thức Động: Cơ chế hai lượt cho phép mô hình “suy ngẫm” về đầu ra của nó, điều chỉnh động các dự đoán của nó để cải thiện độ chính xác và nhạy cảm với ngữ cảnh.
Ứng dụng: X-LoRA vượt trội trong các lĩnh vực khoa học và kỹ thuật, chẳng hạn như phân tích vật liệu, cơ học protein và thiết kế phân tử. Khả năng kết hợp động kiến thức từ các chuyên gia khác nhau làm cho nó có hiệu quả cao đối với các vấn đề phức tạp, liên ngành như dự đoán đặc tính cơ học nano hoặc hành vi phân tử.
KronA
Khái niệm: KronA là một phương pháp tinh chỉnh hiệu quả tham số mở rộng ý tưởng phân tách ma trận được sử dụng trong LoRA bằng cách tận dụng tích Kronecker. Tích Kronecker cho phép cải thiện hiệu quả thứ tự, nghĩa là nó giữ nguyên hoặc nâng cao hạng của các ma trận trọng số gốc đang được phân tách (Edalati et al., 2022).
Tích Kronecker được sử dụng trong KronA được biểu diễn dưới dạng δW = WA ⊗ WB, trong đó WA và WB là các ma trận liên quan đến sự phân tách. Cách tiếp cận này cho phép KronA đạt được tỷ lệ hạng trên tham số tốt hơn so với các phương pháp phân tách ma trận truyền thống.
Triển khai: Nó hoạt động trong hai bước:
- Xác định Tham số: Sử dụng một chỉ số học dựa trên chuẩn L1, nó đánh giá các phần nào của mô hình là quan trọng để điều chỉnh. Sau đó, các cột của các ma trận cần được điều chỉnh được chọn.
- Cấu hình lại Động: Các tham số của mô hình và các lớp tuyến tính được chia thành các thành phần đóng băng và có thể huấn luyện. Trong quá trình huấn luyện, các phép nhân ma trận được thực hiện riêng cho các thành phần và kết quả được nối để tạo ra đầu ra.
Hiệu quả/Hiệu suất: KronA rất hiệu quả về tham số, chỉ cập nhật khoảng 0,07% tổng số tham số của mô hình, tương tự như các phương pháp như LoRA và Compacter. Tuy nhiên, nó đạt được hiệu suất tốt hơn, đặc biệt trên các tác vụ trong chuẩn GLUE.
Phương pháp này không chỉ hiệu quả về tham số mà còn nhanh hơn trong quá trình suy luận so với các phương pháp dựa trên bộ điều hợp như Compacter. Điều này phần lớn là do việc tính toán hiệu quả tích Kronecker, giúp tránh chi phí phát sinh liên quan đến việc biểu diễn ma trận tường minh.
Ứng dụng: KronA đặc biệt hữu ích cho các mô hình có số lượng tham số nhỏ hơn (dưới 1 tỷ). Nó phù hợp với các tác vụ mà hiệu quả tham số và tốc độ suy luận là rất quan trọng, chẳng hạn như các ứng dụng thời gian thực hoặc môi trường bị giới hạn tài nguyên.
Phương pháp này đã thể hiện hiệu suất mạnh mẽ trong các tác vụ xử lý ngôn ngữ tự nhiên, đặc biệt là trên chuẩn GLUE, nơi nó đạt hoặc vượt trội hơn các phương pháp tinh chỉnh khác trong khi vẫn duy trì dấu chân tham số tương tự hoặc nhỏ hơn.
Tinh chỉnh Lựa chọn
Các phương pháp lựa chọn điều chỉnh một tập hợp con các tham số hiện có của mô hình. Điều này có thể liên quan đến lựa chọn độ sâu lớp, lựa chọn dựa trên loại hoặc thậm chí lựa chọn tham số riêng lẻ.
BitFit
Khái niệm: BitFit là một kỹ thuật tinh chỉnh hiệu quả được đề xuất bởi (Ben-Zaken et al., 2021), tập trung vào việc điều chỉnh chỉ các số hạng bias của các mô hình được đào tạo trước thay vì cập nhật tất cả trọng số lớp. Trong các lớp tuyến tính hoặc tích chập, ma trận trọng số 𝑊 không thay đổi, trong khi chỉ vector bias 𝑏 được tối ưu hóa.
Triển khai: Việc triển khai BitFit rất đơn giản. Các số hạng bias được chọn từ các tham số của mô hình và bộ tối ưu hóa hoạt động riêng trên các tham số này.
Cách tiếp cận này chỉ sửa đổi khoảng 0,05% tổng số tham số của mô hình, làm cho BitFit rất hiệu quả về lưu trữ và tính toán.
Hiệu quả/Hiệu suất: BitFit thể hiện hiệu quả bộ nhớ và thời gian huấn luyện xuất sắc. Bằng cách cập nhật một phần nhỏ nhất các tham số, nó giảm đáng kể yêu cầu về tài nguyên, chẳng hạn như bộ nhớ và công suất tính toán, đặc biệt so với tinh chỉnh toàn bộ. Nó đã cho thấy hiệu quả trong các mô hình nhỏ hơn, đặc biệt là trong các tình huống dữ liệu nhỏ đến trung bình, nơi hiệu suất của nó tương đương hoặc thậm chí vượt trội hơn tinh chỉnh toàn bộ.
Tuy nhiên, khi áp dụng cho các mô hình lớn hơn, chẳng hạn như T0-3B hoặc GPT-3, BitFit có thể trở nên kém cạnh tranh hơn, tụt hậu so với tinh chỉnh toàn bộ hoặc các phương pháp tinh chỉnh hiệu quả khác như LoRA hoặc Prefix Tuning. Điều này là do việc sửa đổi chỉ các số hạng bias có thể không đủ để nắm bắt sự phức tạp của dữ liệu huấn luyện trong các mô hình lớn hơn.
Ứng dụng: BitFit đặc biệt hữu ích trong các tình huống mà tài nguyên tính toán bị hạn chế hoặc khi cần huấn luyện mô hình nhanh chóng trên dữ liệu mới mà không có khả năng tinh chỉnh toàn bộ. Nó đặc biệt hiệu quả trong các lĩnh vực có tập dữ liệu huấn luyện nhỏ hoặc trung bình, chẳng hạn như điều chỉnh các mô hình ngôn ngữ được đào tạo trước cho các tác vụ cụ thể (ví dụ: phân loại văn bản hoặc trả lời câu hỏi).
So sánh với các Kỹ thuật Khác: So với các kỹ thuật tinh chỉnh hiệu quả khác như LoRA và Adapters, BitFit là phương pháp đơn giản nhất, vì nó chỉ sửa đổi các bias. Tuy nhiên, sự đơn giản của nó có thể dẫn đến hiệu suất kém hơn trong các tình huống liên quan đến tập dữ liệu lớn hoặc mô hình lớn, nơi các kỹ thuật như LoRA có xu hướng hiệu quả hơn.
- Mã bài báo: GitHub - benzakenelad/BitFit: Simple Parameter-efficient Fine-tuning for Transformer-based Masked Language-models
DiffPruning
Khái niệm: DiffPruning, một kỹ thuật được đề xuất bởi Guo et al. (2020), là một kỹ thuật tinh chỉnh hiệu quả nhằm cập nhật trọng số mạng nơ-ron một cách thưa thớt. Phương pháp này giới thiệu một mặt nạ nhị phân có thể học được biểu diễn bởi δ = z ◦ ∆W, trong đó “◦” là tích Hadamard (nhân theo từng phần tử). Mặt nạ này được huấn luyện cùng với mô hình trong quá trình tinh chỉnh, như một phần của mục tiêu chính quy hóa.
Triển khai: Trong quá trình tinh chỉnh, cả trọng số mô hình và mặt nạ nhị phân có thể học được quyết định tham số nào sẽ thực sự được cập nhật đều được điều chỉnh. Điều này dẫn đến một bản cập nhật thưa thớt hiệu quả cao, giảm số lượng tham số được sửa đổi mà không ảnh hưởng đến hiệu suất của mô hình.
Hiệu quả và Hiệu suất: DiffPruning đạt được hiệu quả tham số đặc biệt bằng cách chỉ sửa đổi khoảng 0,5% tham số của mô hình trong các cấu hình quy mô nhỏ (<1B tham số). Do đó, nó phù hợp nhất cho các ứng dụng biên đa tác vụ (chẳng hạn như thiết bị di động) nơi bộ nhớ bị hạn chế. Tuy nhiên, bằng cách giảm thiểu số lượng tham số được sửa đổi, kỹ thuật này cần nhiều bộ nhớ hơn trong quá trình huấn luyện, vì tất cả các tham số được tối ưu hóa cùng với mặt nạ nhị phân.
Ứng dụng: Nó đặc biệt hữu ích trong các tình huống mà nhiều tác vụ cần được quản lý hiệu quả với bộ nhớ lưu trữ hạn chế, chẳng hạn như trên thiết bị di động. Nó cũng có thể áp dụng trong các tình huống mà các tác vụ mới xuất hiện theo luồng liên tục hoặc từ các nhà cung cấp khác nhau, vì chỉ cần lưu trữ một vector khác biệt nhỏ cho mỗi tác vụ. Kỹ thuật này đã chứng tỏ hiệu suất tương đương với tinh chỉnh toàn bộ trong các điểm chuẩn như GLUE, trong khi chỉ sửa đổi một phần nhỏ tham số của mô hình.
So sánh và Điểm bổ sung: Nó mang lại khả năng mở rộng thuận lợi khi số lượng tác vụ tăng lên, chỉ yêu cầu lưu trữ một vector khác biệt nhỏ cho mỗi tác vụ. Mặc dù hiệu quả hơn về các tham số được sửa đổi, chi phí bộ nhớ trong quá trình huấn luyện có thể cao hơn so với các phương pháp tinh chỉnh truyền thống, do cần tối ưu hóa tất cả các tham số cùng với mặt nạ nhị phân có thể học được.
- Kiểm soát Độ thưa: Cách tiếp cận có thể phân biệt được với chuẩn L0 cho phép DiffPruning thúc đẩy các bản cập nhật thưa thớt một cách có kiểm soát, làm cho nó hữu ích cho các tình huống mà việc tiết kiệm dung lượng và tài nguyên tính toán là rất quan trọng.
- Thích ứng Nhiều Tác vụ: Bằng cách không yêu cầu truy cập đồng thời tất cả các tác vụ trong quá trình huấn luyện, DiffPruning là một giải pháp khả thi cho các thiết bị cần thích ứng với các tác vụ mới liên tục, mà không cần hiệu chỉnh lại toàn bộ mô hình.
Trong hình này, bên trái hiển thị hiệu suất trung bình trên tập xác thực GLUE ở các tỷ lệ độ thưa mục tiêu khác nhau cho các phương pháp. Bên phải hiển thị kết quả với BERTlarge trên tập xác thực SQuAD v1.1.
Freeze and Reconfigure (FAR)
Khái niệm: Freeze and Reconfigure (FAR) là một phương pháp tinh chỉnh hiệu quả nhằm giảm tiêu thụ bộ nhớ và tăng tốc độ huấn luyện các mô hình ngôn ngữ lớn như BERT. FAR hoạt động bằng cách đóng băng một phần tham số của mô hình và chỉ tập trung vào việc điều chỉnh các tham số quan trọng nhất. Mục tiêu là giảm việc sử dụng tài nguyên trong quá trình huấn luyện, đặc biệt là trong các tình huống biên nơi bộ nhớ và công suất tính toán bị hạn chế. Phương pháp này cũng cấu hình lại kiến trúc mô hình để nhóm các tham số đóng băng và có thể huấn luyện một cách riêng biệt, tối ưu hóa các hoạt động bộ nhớ.
Triển khai: Nó hoạt động theo hai bước:
- Xác định Tham số: Sử dụng một chỉ số học dựa trên chuẩn L1, nó đánh giá các phần nào của mô hình là quan trọng để điều chỉnh. Sau đó, các cột của các ma trận cần được điều chỉnh được chọn.
- Cấu hình lại Động: Các tham số của mô hình và các lớp tuyến tính được chia thành các thành phần đóng băng và có thể huấn luyện. Trong quá trình huấn luyện, các phép nhân ma trận được thực hiện riêng cho các thành phần và kết quả được nối để tạo ra đầu ra.
Hiệu quả và Hiệu suất: Trong các thử nghiệm với DistilBERT trên các tác vụ GLUE và SQuAD, nó đã quản lý để đóng băng tới 60% tham số của mô hình, giảm thời gian huấn luyện 30% và thời gian truy cập bộ nhớ 47%, mà không làm giảm hiệu suất đáng kể về các chỉ số. Cách tiếp cận này cung cấp sự linh hoạt tuyệt vời khi sử dụng phần cứng và framework hiện đại như PyTorch, và sau khi huấn luyện, các tham số có thể được cấu hình lại, loại bỏ bất kỳ tác động tiêu cực nào đến suy luận.
Ứng dụng: FAR đặc biệt hiệu quả trong các tình huống biên, chẳng hạn như trên thiết bị di động, nơi tài nguyên bị hạn chế. Ứng dụng chính của nó là trong các mô hình như DistilBERT, được sử dụng trong các tác vụ NLP như chuẩn GLUE và SQuAD 2.0, nơi nó thể hiện hiệu suất tương đương với tinh chỉnh toàn bộ, nhưng chỉ với một phần nhỏ tham số được cập nhật (khoảng 6%).
So sánh và Điểm bổ sung: So với BitFit, vốn đóng băng tất cả các trọng số của các lớp dày đặc, FAR đã thể hiện hiệu suất vượt trội, đặc biệt là trong các tác vụ phức tạp hơn như SQuAD 2.0. BitFit đã có sự sụt giảm hiệu suất mạnh mẽ, đặc biệt là trong các tác vụ khó khăn hơn, nơi nó hoạt động kém hơn gần 20% về các chỉ số EM và F1. Điều này cho thấy FAR hiệu quả hơn trong việc xử lý sự phức tạp của các tác vụ này trong các mô hình nén như DistilBERT, cung cấp sự cân bằng giữa hiệu quả tài nguyên và hiệu suất.
FishMask
Khái niệm: FishMask (Fisher-Induced Sparse uncHanging) mask là một kỹ thuật tinh chỉnh hiệu quả dựa trên các cập nhật tham số thưa thớt, trong đó các tham số cần được điều chỉnh được chọn dựa trên thông tin Fisher. Bằng cách tính toán tầm quan trọng của mỗi tham số bằng thông tin Fisher, FishMask tạo ra một mặt nạ thưa thớt, cho phép chỉ một tập hợp con cố định các tham số được cập nhật trong quá trình huấn luyện, trong khi phần còn lại vẫn bị đóng băng. Mục tiêu chính là tối ưu hóa hiệu suất đồng thời giảm chi phí bộ nhớ và giao tiếp, đặc biệt là trong các môi trường học phân tán và chuyển giao.
Triển khai:
- Lựa chọn: Sau khi tính toán Fisher, các tham số có giá trị Fisher cao nhất sẽ được chọn và điều chỉnh. Việc lựa chọn dựa trên một ngưỡng phần trăm.
- Mặt nạ: Một mặt nạ được tạo ra để chỉ ra việc lựa chọn tham số.
Hiệu quả: Kỹ thuật FishMask được thiết kế để giảm chi phí bộ nhớ và giao tiếp trong môi trường phân tán, mà không làm giảm đáng kể hiệu suất của mô hình. Bằng cách chỉ cập nhật một phần nhỏ các tham số (thường là 1% đến 10%), FishMask có thể duy trì hiệu suất tương đương với các phương pháp như Adapters, đồng thời hiệu quả hơn về bộ nhớ.
Về hiệu suất, FishMask cho thấy kết quả tương tự như các kỹ thuật như Adapters, nhưng kém hơn các phương pháp tiên tiến hơn như LoRA và (IA)³.
Ứng dụng: FishMask đặc biệt hữu ích trong các tình huống mà việc cập nhật tất cả các tham số mô hình sẽ không khả thi.
So sánh và Điểm bổ sung: So với các phương pháp tinh chỉnh thưa thớt khác, chẳng hạn như BitFit và DiffPruning, FishMask nổi bật nhờ việc tính toán trước một mặt nạ cố định các tham số quan trọng, giúp loại bỏ nhu cầu điều chỉnh động trong quá trình huấn luyện. Điều này mang lại sự giảm đáng kể chi phí tính toán, đặc biệt là trên phần cứng hiện đại có thể có hỗ trợ hạn chế cho các hoạt động thưa thớt động.
Trong các thử nghiệm, FishMask đã thể hiện hiệu suất tương đương với Adapters, nhưng với chi phí bộ nhớ thấp hơn. Tuy nhiên, nó không đạt được mức hiệu suất của các kỹ thuật như LoRA và (IA)³, có thể điều chỉnh tham số chính xác và hiệu quả hơn trên nhiều tác vụ.
Tài liệu tham khảo
- PEFT - Hugging Face. Truy cập ngày: 22 tháng 8 năm 2024.
- Scaling Down to Scale Up: A Guide to Parameter-Efficient Fine-Tuning - Vladislav Lialin, Vijaya Deshpande, Anna Rumshisky, 2023.
- LoRA: Low-Rank Adaptation of Large Language Models - Edward J. Hu, Yelong Shen, Phillip Wallis, Zeyuan Allen-Zhu, Yuanzhi Li, Shean Wang, Lu Wang, Weizhu Chen, 2021.
- Intrinsic Dimensionality Explains the Effectiveness of Language Model Fine-Tuning - Armen Aghajanyan, Luke Zettlemoyer, Sonal Gupta
- PiSSA: Principal Singular Values and Singular Vectors Adaptation of Large Language Models - Fanxu Meng, Zhaohui Wang, Muhan Zhang, 2024.
- OLoRA: Orthonormal Low-Rank Adaptation of Large Language Models - Kerim Büyükakyüz, 2024.
- A Rank Stabilization Scaling Factor for Fine-Tuning with LoRA - Damjan Kalajdzievski, 2023.
- DoRA: Weight-Decomposed Low-Rank Adaptation - Shih-Yang Liu, Chien-Yi Wang, Hongxu Yin, Pavlo Molchanov, Yu-Chiang Frank Wang, Kwang-Ting Cheng, Min-Hung Chen, 2024.
- X-LoRA: Mixture of Low-Rank Adapter Experts, a Flexible Framework for Large Language Models with Applications in Protein Mechanics and Molecular Design - Eric L. Buehler, Markus J. Buehler, 2024.
- KronA: Parameter Efficient Tuning with Kronecker Adapter - Ali Edalati, Marzieh Tahaei, Ivan Kobyzev, Vahid Partovi Nia, James J. Clark, Mehdi Rezagholizadeh, 2022.
- Language Models are Few-Shot Learners - Tom B. Brown, Benjamin Mann, Nick Ryder, Melanie Subbiah, Jared Kaplan, Prafulla Dhariwal, Arvind Neelakantan, Pranav Shyam, Girish Sastry, Amanda Askell, Sandhini Agarwal, Ariel Herbert-Voss, Gretchen Krueger, Tom Henighan, Rewon Child, Aditya Ramesh, Daniel M. Ziegler, Jeffrey Wu, Clemens Winter, Christopher Hesse, Mark Chen, Eric Sigler, Mateusz Litwin, Scott Gray, Benjamin Chess, Jack Clark, Christopher Berner, Sam McCandlish, Alec Radford, Ilya Sutskever, Dario Amodei, 2020.
- It’s Not Just Size That Matters: Small Language Models Are Also Few-Shot Learners - Schick & Schütze, NAACL 2021.
- The Power of Scale for Parameter-Efficient Prompt Tuning - Brian Lester, Rami Al-Rfou, Noah Constant, 2021.
- GPT Understands, Too - Xiao Liu, Yanan Zheng, Zhengxiao Du, Ming Ding, Yujie Qian, Zhilin Yang, Jie Tang, 2021
- Efficient Fine-Tuning of BERT Models on the Edge - Danilo Vucetic, Mohammadreza Tayaranian, Maryam Ziaeefard, James J. Clark, Brett H. Meyer, Warren J. Gross, 2022
- Training Neural Networks with Fixed Sparse Masks - Yi-Lin Sung, Varun Nair, and Colin Raffel, 2021.
- Few-Shot Parameter-Efficient Fine-Tuning is Better and Cheaper than In-Context Learning - Haokun Liu, Derek Tam, Mohammed Muqeeth, Jay Mohta, Tenghao Huang, Mohit Bansal, Colin Raffel, 2022.
- Generative AI with Large Language Models - Deeplearning.AI, AWS Course - Chris Fregly, Antje Barth, Shelbee Eigenbrode, Mike Chambers.
- Finetuning Transformer Models - Codeacademy Course
- HuggingFace PEFT GitHub - Sourab Mangrulkar, Sylvain Gugger, Lysandre Debut, Younes Belkada, Sayak Paul và Benjamin Bossan. Truy cập ngày: 22 tháng 8 năm 2024.
- meta-llama/llama-recipes: Scripts for fine-tuning Meta Llama3 with composable FSDP & PEFT methods to cover single/multi-node GPUs. Supports default & custom datasets for applications such as summarization and Q&A. Supporting a number of candid inference solutions such as HF TGI, VLLM for local or cloud deployment. Demo apps to showcase Meta Llama3 for WhatsApp & Messenger. GitHub. Truy cập ngày: 22 tháng 8 năm 2024.
- microsoft/LoRA: Code for loralib, an implementation of “LoRA: Low-Rank Adaptation of Large Language Models." GitHub - Edward J Hu, Yelong Shen, Phillip Wallis, Zeyuan Allen-Zhu, Yuanzhi Li, Shean Wang, Lu Wang và Weizhu Chen*. Truy cập ngày: 22 tháng 8 năm 2024.
Link bài viết gốc
- Tags:
- Ai
- Jan 24
- Huggingface.co