Parameter-Efficient Fine-Tuning (PEFT)
Tinh chỉnh tiết kiệm tham số (PEFT) thích ứng model đã tiền huấn luyện bằng cách huấn luyện một tập nhỏ trọng số được thêm vào hoặc chọn sẵn. Bài viết đề cập đến adapter, LoRA và đóng băng trọng số.
Tinh chỉnh tiết kiệm tham số (PEFT) điều chỉnh một model đã được huấn luyện trước cho tác vụ mới bằng cách chỉ huấn luyện một phần nhỏ các tham số của model, gồm một vài tham số mới được thêm vào mạng hoặc một tập con được chọn từ các tham số hiện có, trong khi phần còn lại của trọng số model vẫn được đóng băng. Tinh chỉnh toàn phần cập nhật mọi trọng số; với một mô hình ngôn ngữ lớn (LLM) có 7 tỷ tham số, điều này đồng nghĩa với việc phải lưu gradient và trạng thái optimizer cho toàn bộ 7 tỷ giá trị, đồng thời lưu một bản sao hoàn chỉnh của model cho mỗi tác vụ. Các phương pháp PEFT thường chỉ huấn luyện chưa đến 1% số tham số, vì vậy có thể điều chỉnh một model nền tảng trên một GPU, và mỗi tác vụ mới chỉ cần thêm một tệp nhỏ chứa các tham số đã huấn luyện thay vì một checkpoint đầy đủ khác. Thư viện PEFT của Hugging Face triển khai các phương pháp phổ biến nhất cho model Transformer.
Cách PEFT hoạt động#
PEFT dựa trên học chuyển giao: model được huấn luyện trước trên dữ liệu đa dạng đã mã hóa các đặc trưng tổng quát, vì vậy việc điều chỉnh model cho tác vụ liên quan cần thay đổi ít hơn nhiều so với quá trình huấn luyện ban đầu. Các phương pháp được chia thành ba nhóm, tùy theo tham số nào được huấn luyện.
Các phương pháp cộng thêm chèn module hoặc đầu vào mới có thể huấn luyện vào mạng được giữ cố định. Adapter thêm các layer cổ chai nhỏ bên trong mỗi block Transformer; trên benchmark ngôn ngữ GLUE, phương pháp này đạt kết quả chỉ thấp hơn fine-tuning toàn phần 0,4% trong khi chỉ thêm 3,6% tham số cho mỗi tác vụ. Prompt tuning và prefix tuning học một số vector liên tục được thêm vào trước đầu vào hoặc trước activation của mỗi layer.
Các phương pháp chọn lọc huấn luyện một tập con được chọn từ trọng số hiện có. Đóng băng backbone và chỉ huấn luyện các layer phía sau là dạng đơn giản nhất; BitFit chỉ huấn luyện các thành phần bias.
Các phương pháp tái tham số hóa học một cập nhật gọn cho các ma trận trọng số được giữ cố định. LoRA biểu diễn mỗi cập nhật dưới dạng tích của hai ma trận hạng thấp; so với fine-tuning toàn phần GPT-3 175B, phương pháp này giảm số tham số có thể huấn luyện 10.000 lần và giảm bộ nhớ GPU 3 lần. QLoRA huấn luyện adapter LoRA trên model nền được lượng tử hóa 4-bit; DoRA tách mỗi trọng số thành độ lớn và hướng, rồi điều chỉnh hướng bằng LoRA.
Vì chỉ các tham số nhỏ đã huấn luyện khác nhau giữa các tác vụ, một bản sao model nền có thể phục vụ nhiều tác vụ cùng lúc. Server giữ model nền cố định trong bộ nhớ và áp dụng adapter tương ứng với từng request; các hệ thống như S-LoRA phục vụ hàng nghìn adapter LoRA theo cách này:
Lợi ích và đánh đổi#
Chỉ cần gradient và trạng thái optimizer cho các tham số được huấn luyện, nên mức sử dụng bộ nhớ giảm mạnh, mặc dù trọng số cố định và activation vẫn phải vừa với GPU. Việc giữ nguyên trọng số được huấn luyện trước cũng hạn chế overfitting trên tập dữ liệu nhỏ và quên lãng thảm họa các kỹ năng ban đầu của model. Đánh đổi nằm ở năng lực: trong nghiên cứu có tiêu đề LoRA học ít hơn và quên ít hơn, LoRA kém hơn fine-tuning toàn phần trong lập trình và toán học, nhưng bảo toàn tốt hơn hiệu năng của model nền trên các tác vụ ngoài những lĩnh vực đó.
PEFT trong thị giác máy tính#
Vision transformer cũng có thể được điều chỉnh bằng các phương pháp tương tự. Visual Prompt Tuning học các token đầu vào bổ sung cho ViT được giữ cố định, huấn luyện chưa đến 1% số tham số và đạt kết quả tốt hơn fine-tuning toàn phần trong nhiều thử nghiệm; adapter LoRA tùy chỉnh Stable Diffusion theo phong cách hoặc chủ thể mới. Với model phát hiện đối tượng tích chập, đóng băng là phương pháp chọn lọc tiêu chuẩn. Trong quy trình huấn luyện Ultralytics YOLO26, đối số freeze ngăn cập nhật gradient cho N layer đầu tiên và cũng cố định các thống kê batch normalization của chúng; freeze=11 áp dụng cho các layer 0 đến 10, tức toàn bộ backbone YOLO26, nên chỉ neck và detection head được huấn luyện:
from ultralytics import YOLO
# Nạp trọng số YOLO26n được huấn luyện trước trên COCO
model = YOLO("yolo26n.pt")
# Đóng băng các layer 0-10 (backbone) và chỉ huấn luyện neck cùng detection head
results = model.train(data="coco8.yaml", epochs=5, freeze=11)Training log liệt kê từng tham số được đóng băng trên một dòng Freezing layer trước khi epoch đầu tiên bắt đầu.
PEFT và các thuật ngữ liên quan#
- Fine-tuning toàn phần: Cập nhật mọi trọng số, nhờ đó model có năng lực thích ứng cao nhất nhưng cần nhiều bộ nhớ nhất và cần một bản sao model đầy đủ cho mỗi tác vụ. PEFT là một dạng fine-tuning giới hạn những tham số được phép thay đổi.
- Linear probing: Chỉ huấn luyện một bộ phân loại tuyến tính trên các đặc trưng cố định; đây là phương pháp chọn lọc hạn chế nhất và chủ yếu được dùng để đo lường mức độ biểu diễn được huấn luyện trước đã nắm bắt thông tin.
- Prompt engineering: Thay đổi hành vi của model bằng văn bản do người dùng viết trong đầu vào mà không huấn luyện gì. Prompt tuning học các vector prompt liên tục bằng gradient descent.
- Chưng cất tri thức: Huấn luyện model student nhỏ hơn để bắt chước model teacher lớn hơn, qua đó nén model; trong khi đó, PEFT điều chỉnh model hiện có cho tác vụ mới.
- Hợp nhất model: Kết hợp trọng số hoặc adapter đã huấn luyện vào một model. Có thể cộng bản cập nhật LoRA đã huấn luyện vào ma trận trọng số cố định mà bản cập nhật đó điều chỉnh, nhờ vậy model sau khi hợp nhất chạy mà không phát sinh thêm chi phí suy luận.










