Model Merging (SLERP/TIES/DARE) & Continual Learning
Gộp nhiều model đã fine-tune thành một model duy nhất mà không cần huấn luyện lại — kỹ thuật mới nổi rất hiệu quả về chi phí.
Model merging là một trong những phát triển thú vị nhất của lĩnh vực này gần đây: kết hợp nhiều model đã fine-tune riêng biệt (ví dụ một bản giỏi code, một bản giỏi tiếng Việt) thành 1 model duy nhất, hoàn toàn không cần GPU và không cần dữ liệu huấn luyện — chỉ là các phép toán trên weight. Chi phí gần như bằng 0 so với lợi ích tiềm năng, đáng để nắm vững.
🎯 Mục tiêu học tập
- Hiểu trực giác vì sao có thể 'gộp' nhiều model bằng phép toán trên weight mà vẫn hoạt động
- Phân biệt các phương pháp merging phổ biến: Linear/SLERP, TIES, DARE
- Sử dụng công cụ mergekit để thực hành gộp model
- Hiểu khái niệm continual learning và vấn đề catastrophic forgetting liên quan
Vì sao Model Merging hoạt động được?
Trực giác dựa trên khái niệm "loss landscape": các model được fine-tune từ cùng 1 base model thường kết thúc ở các điểm tương đối gần nhau trong không gian tham số (vì đều xuất phát từ cùng điểm khởi đầu, chỉ bị "kéo" theo các hướng khác nhau bởi dữ liệu fine-tune khác nhau). Nghiên cứu thực nghiệm cho thấy, trong nhiều trường hợp, trung bình cộng (hoặc phép toán có trọng số phức tạp hơn) của các weight này nằm ở một vùng loss landscape vẫn hoạt động tốt — thậm chí đôi khi kết hợp được ưu điểm của nhiều model nguồn cùng lúc, dù nghe có vẻ phản trực giác.
3 phương pháp Merging phổ biến
| Phương pháp | Ý tưởng |
|---|---|
| Linear / SLERP | Nội suy tuyến tính (linear) hoặc theo đường cầu (Spherical Linear Interpolation — giữ "độ dài" vector weight ổn định hơn linear thuần) giữa 2 model, theo 1 trọng số pha trộn |
| TIES-Merging | Xử lý xung đột dấu (khi 2 model muốn điều chỉnh cùng 1 weight theo 2 hướng ngược nhau) bằng cách chỉ giữ lại thay đổi có "đa số đồng thuận", loại bỏ nhiễu nhỏ trước khi gộp — phù hợp khi gộp nhiều hơn 2 model |
| DARE (Drop And REscale) | Ngẫu nhiên loại bỏ (drop) phần lớn các thay đổi weight nhỏ trước khi gộp, sau đó rescale phần còn lại — giảm nhiễu, thường kết hợp tốt với TIES |
Thực hành với mergekit
# config.yaml cho mergekit — gộp 2 model LoRA đã fine-tune (ví dụ 1 bản giỏi code, 1 bản giỏi tiếng Việt)
merge_method: ties
base_model: Qwen/Qwen2.5-7B-Instruct
models:
- model: my-org/qwen-7b-finetuned-code
parameters:
weight: 0.5
density: 0.5
- model: my-org/qwen-7b-finetuned-vietnamese
parameters:
weight: 0.5
density: 0.5
parameters:
normalize: true
dtype: bfloat16
# Chạy merge
mergekit-yaml config.yaml ./merged-model --cuda
Kết quả là 1 model mới, độc lập, không cần base model gốc để chạy — có thể tiếp tục lượng tử hoá (Module 10) và triển khai (Module 13) như bình thường. Luôn đánh giá kỹ (Module 12) model sau merge — kết quả không phải lúc nào cũng tốt hơn, đặc biệt khi 2 model nguồn có mục tiêu quá khác biệt.
Continual Learning & Catastrophic Forgetting
Continual learning là bài toán huấn luyện model liên tục trên dữ liệu mới theo thời gian mà không làm mất năng lực đã học trước đó. Thách thức lớn nhất là catastrophic forgetting (đã nhắc ở Module 1, 3) — khi fine-tune thêm trên dữ liệu mới, model có xu hướng "ghi đè" lên các pattern đã học trước đó. Các chiến lược giảm thiểu: dùng PEFT thay vì full fine-tuning (Module 3 — ít động đến weight gốc hơn), trộn một phần dữ liệu cũ vào mỗi lần huấn luyện lại (rehearsal), hoặc — thú vị hơn — dùng chính model merging để gộp model cũ và model mới fine-tune riêng, thay vì fine-tune tiếp nối trực tiếp trên cùng 1 model.
🏋️ Bài tập thực hành
Fine-tune 2 phiên bản LoRA nhỏ từ cùng 1 base model cho 2 tác vụ khác nhau (ví dụ 1 bản chuyên trả lời ngắn gọn, 1 bản chuyên trả lời chi tiết có giải thích). Dùng mergekit gộp 2 adapter này bằng phương pháp TIES, thử nghiệm trên vài câu hỏi xem model gộp có thể hiện được đặc điểm của cả 2 nguồn không. So sánh với kết quả của từng model gốc riêng lẻ.
📚 Tài nguyên học tập
-
mergekit — GitHubCông cụ mã nguồn mở thực hành model mergingRepo
-
Yadav et al. — TIES-Merging (paper gốc)Bài báo gốc giới thiệu TIES-MergingPaper
-
Yu et al. — DARE (paper gốc)Bài báo gốc giới thiệu DAREPaper
✅ Tự đánh giá hoàn thành
- Giải thích được trực giác vì sao model merging có thể hoạt động
- Phân biệt được Linear/SLERP, TIES, và DARE
- Thực hành gộp thành công ít nhất 2 model bằng mergekit
- Giải thích được catastrophic forgetting và ít nhất 2 cách giảm thiểu nó