LoRA Rank Là Gì?
LoRA Rank (hạng LoRA) là một con số quyết định kích thước của ma trận trọng số được thêm vào khi fine-tune mô hình AI bằng phương pháp LoRA. Nói cách khác, nó quy định mô hình được phép học thêm bao nhiêu kiến thức mới so với kiến thức gốc.
Giá trị rank càng cao, mô hình càng có khả năng học những thay đổi phức tạp, nhưng đồng thời tốn nhiều bộ nhớ và thời gian huấn luyện hơn. Rank thấp thì ngược lại, nhẹ nhưng có thể bị thiếu khả năng biểu diễn.
Rank Hoạt Động Như Thế Nào Trong LoRA?
Khi fine-tune bằng LoRA, thay vì cập nhật toàn bộ ma trận trọng số khổng lồ của mô hình gốc, mình chỉ thêm hai ma trận nhỏ hơn. Giả sử ma trận gốc có kích thước 4096 x 4096, LoRA sẽ tách thành hai ma trận 4096 x r và r x 4096, trong đó r chính là rank.
Nhân hai ma trận nhỏ này lại với nhau, mình được một ma trận cùng kích thước với gốc nhưng chỉ cần học r x (4096 + 4096) tham số thay vì 4096 x 4096. Sự khác biệt là khổng lồ khi r nhỏ, ví dụ r = 8 thì chỉ cần 65.536 tham số thay vì gần 17 triệu.
Chọn Rank Bao Nhiêu Là Hợp Lý?
Không có câu trả lời duy nhất cho câu hỏi này, nhưng có một số nguyên tắc thực tế mà cộng đồng đã đúc kết:
Rank 4 đến 16: Phù hợp cho các tác vụ đơn giản, ít thay đổi so với mô hình gốc. Ví dụ như điều chỉnh phong cách viết, dịch máy cơ bản, hoặc phân loại cảm xúc. Nhẹ, nhanh, tốn ít VRAM.
Rank 32 đến 64: Mức phổ biến nhất cho hầu hết tác vụ fine-tune. Cân bằng tốt giữa khả năng học và chi phí tính toán. Phù hợp cho chatbot, tóm tắt văn bản, hoặc trả lời câu hỏi dựa trên tài liệu.
Rank 128 đến 256: Dành cho các tác vụ phức tạp cần thay đổi đáng kể hành vi của mô hình. Ví dụ như dạy mô hình một ngôn ngữ lập trình mới, hoặc fine-tune cho lĩnh vực chuyên sâu như y khoa, pháp lý.
Rank Cao Hơn Có Tốt Hơn Không?
Không hẳn. Tăng rank quá cao mang lại hiệu ứng giảm dần. Một nghiên cứu của Microsoft (chính nhóm tạo ra LoRA) cho thấy rank 64 thường cho kết quả tương đương rank 256 trên nhiều tác vụ, nhưng tốn ít tài nguyên hơn nhiều lần.
Lý do là vì phần lớn kiến thức cần thiết đã có sẵn trong mô hình gốc. Rank cao chỉ thêm khả năng biểu diễn mà không nhất thiết được sử dụng hiệu quả, giống như thuê 100 nhân viên cho công việc mà 10 người đã làm xong.
Mối Quan Hệ Giữa Rank Và Alpha
LoRA có hai tham số chính là rank (r) và alpha. Alpha đóng vai trò như một hệ số điều chỉnh độ mạnh của các trọng số LoRA so với trọng số gốc. Quy tắc thông dụng mà nhiều người dùng là đặt alpha bằng 2 lần rank, tức alpha = 2r.
Ví dụ nếu rank = 16 thì alpha = 32. Tỷ lệ này giúp các cập nhật từ LoRA có độ lớn phù hợp, không quá yếu để bị bỏ qua, cũng không quá mạnh làm nhiễu kiến thức gốc của mô hình.
Tuy nhiên, tỷ lệ này không phải quy luật cứng. Một số tác vụ cần alpha cao hơn để thay đổi mạnh hơn, trong khi tác vụ tinh tế hơn có thể cần alpha thấp.
Rank Ảnh Hưởng Đến VRAM Như Thế Nào?
Đây là câu hỏi thực tế nhất nếu bạn fine-tune trên GPU cá nhân. Mỗi đơn vị rank tăng thêm sẽ thêm một hàng và một cột vào hai ma trận LoRA. Cụ thể:
Rank 8 trên mô hình 7 tỷ tham số tốn khoảng 20MB VRAM cho optimizer state. Tăng lên rank 64, con số này nhảy lên khoảng 160MB. Nghe không nhiều, nhưng khi kết hợp với batch size, sequence length, và gradient checkpointing, sự khác biệt trở nên đáng kể.
Nếu chạy trên GPU 8GB VRAM, rank 8 đến 16 là an toàn. Với 16GB VRAM, rank 32 đến 64 là khả thi. Trên 24GB VRAM trở lên, bạn thoải mái dùng rank 128 hoặc cao hơn.
LoRA Rank Khác Gì Với Full Fine-tune?
Full fine-tune cập nhật toàn bộ trọng số của mô hình, tương đương với việc rank vô hạn. Mọi tham số đều có thể thay đổi. Điều này mang lại khả năng học mạnh nhất nhưng chi phí cực kỳ đắt đỏ.
LoRA với rank thấp cố định phần lớn kiến thức gốc, chỉ cho phép điều chỉnh qua ma trận nhỏ. Điều này vừa tiết kiệm, vừa giảm nguy cơ catastrophic forgetting, hiện tượng mô hình quên kiến thức cũ khi học cái mới.
Trong thực tế, LoRA rank 64 cho kết quả rất gần với full fine-tune trên hầu hết tác vụ ngôn ngữ tự nhiên, với chi phí chỉ bằng 1% đến 5%.
Cách Thử Nghiệm Rank Cho Tácụ Của Bạn
Mình luôn bắt đầu với rank 16 hoặc 32. Huấn luyện trong 1 đến 2 epoch, đánh giá kết quả. Nếu mô hình chưa học đủ, tăng rank lên gấp đôi và thử lại. Nếu kết quả không cải thiện, vấn đề có thể nằm ở dữ liệu chứ không phải rank.
Một sai lầm phổ biến là tăng rank ngay lập tức khi kết quả chưa tốt. Đôi khi chỉ cần làm sạch dữ liệu huấn luyện, tăng số epoch, hoặc điều chỉnh learning rate lại cho hiệu quả hơn nhiều so với việc tăng rank.
Kết Luận
LoRA Rank là tham số quan trọng nhất khi fine-tune mô hình AI bằng phương pháp LoRA. Nó quyết định sự đánh đổi giữa khả năng học và chi phí tính toán. Bắt đầu với rank thấp, đánh giá kết quả, rồi điều chỉnh dần là cách tiếp cận thông minh nhất.
Không cần rank cao nhất, mà cần rank phù hợp nhất với tác vụ và phần cứng của bạn.