LoRA (Low-Rank Adaptation) là kỹ thuật tinh chỉnh mô hình AI bằng cách giữ nguyên trọng số gốc và chỉ huấn luyện thêm các ma trận nhỏ gọi là adapter, gắn vào một số lớp của mô hình. Số tham số cần huấn luyện thường chỉ bằng dưới 1% mô hình gốc, nên tốn ít VRAM, huấn luyện nhanh hơn và file kết quả chỉ vài chục đến vài trăm MB. LoRA được dùng rộng rãi cho cả mô hình ngôn ngữ và mô hình tạo ảnh, phù hợp khi doanh nghiệp cần mô hình theo đúng định dạng, giọng văn hoặc phong cách riêng.
LoRA là gì và vì sao ra đời
LoRA là viết tắt của Low-Rank Adaptation, tạm dịch “thích ứng hạng thấp”. Kỹ thuật này được nhóm nghiên cứu của Microsoft công bố năm 2021 và nhanh chóng trở thành cách tinh chỉnh phổ biến nhất cho mô hình mở.
Vấn đề LoRA giải quyết: tinh chỉnh toàn bộ (full fine-tuning) một mô hình 7 tỷ tham số cần cập nhật tất cả 7 tỷ con số, lưu thêm trạng thái của bộ tối ưu, gradient. Tổng bộ nhớ có thể gấp nhiều lần kích thước mô hình, vượt xa một card đồ họa phổ thông. Mỗi lần tinh chỉnh lại cho ra một bản sao đầy đủ của mô hình, nặng hàng chục GB.
Ý tưởng cốt lõi
Nhóm tác giả nhận thấy phần thay đổi cần thiết khi tinh chỉnh thường có “cấu trúc đơn giản”, có thể biểu diễn bằng tích của hai ma trận rất nhỏ. Thay vì sửa ma trận trọng số lớn, LoRA đóng băng nó và học thêm hai ma trận nhỏ. Khi chạy, kết quả của hai ma trận nhỏ được cộng vào trọng số gốc.
Hình dung đơn giản: mô hình gốc như cuốn sách giáo khoa in sẵn, LoRA như tập ghi chú dán thêm vào lề. Bạn không in lại sách, chỉ thay ghi chú khi đổi môn.
LoRA hoạt động thế nào: rank, alpha và module đích
Khi cấu hình LoRA, bạn sẽ gặp ba thông số chính:
- Rank (r): độ “rộng” của hai ma trận nhỏ. Rank thấp (4, 8, 16) nghĩa là ít tham số, nhẹ, phù hợp thay đổi định dạng, giọng văn. Rank cao hơn (32, 64) cho phép học thay đổi phức tạp hơn nhưng tốn tài nguyên hơn và dễ học thuộc dữ liệu.
- Alpha: hệ số điều chỉnh mức ảnh hưởng của adapter lên mô hình gốc. Nhiều hướng dẫn đặt alpha bằng hoặc gấp đôi rank làm điểm xuất phát.
- Target modules: các lớp được gắn adapter, thường là các ma trận trong khối attention, có thể thêm các lớp feed-forward để tăng khả năng học.
Sau khi huấn luyện
Kết quả là một file adapter. Bạn có hai cách dùng:
- Nạp mô hình gốc rồi nạp adapter khi chạy. Có thể giữ nhiều adapter cho nhiều tác vụ và đổi qua lại.
- Gộp (merge) adapter vào trọng số gốc để tạo một mô hình hoàn chỉnh, tiện cho việc lượng tử hóa và triển khai.
Adapter LoRA chỉ dùng được với đúng mô hình gốc và phiên bản đã huấn luyện. Đổi mô hình nền là phải huấn luyện lại.
QLoRA: tinh chỉnh trên card đồ họa phổ thông
QLoRA kết hợp lượng tử hóa và LoRA. Mô hình gốc được nạp ở dạng 4-bit để giảm bộ nhớ, còn adapter LoRA vẫn được huấn luyện ở độ chính xác cao hơn. Nhờ vậy, việc tinh chỉnh mô hình cỡ vừa trở nên khả thi trên một GPU đơn.
Ước lượng VRAM (tham khảo có điều kiện)
Nhu cầu bộ nhớ phụ thuộc kích thước mô hình, độ dài chuỗi huấn luyện, batch size, rank và thư viện sử dụng. Các con số dưới đây chỉ là khoảng thường gặp với QLoRA, chuỗi khoảng 2.000 token, batch nhỏ:
- Mô hình 7B–8B: khoảng 10–16 GB VRAM.
- Mô hình 13B–14B: khoảng 16–24 GB VRAM.
- Mô hình 30B–34B: thường cần 24 GB trở lên và kỹ thuật tiết kiệm bộ nhớ bổ sung.
Tăng độ dài chuỗi hoặc batch size có thể làm nhu cầu bộ nhớ tăng nhanh. Hãy thử với cấu hình nhỏ trước, theo dõi mức sử dụng VRAM rồi mới tăng dần. Ngoài GPU, cần RAM hệ thống đủ để nạp dữ liệu và SSD nhanh cho checkpoint.
So sánh tinh chỉnh toàn bộ, LoRA và QLoRA
Bảng dưới so sánh ở mức khái niệm. Con số cụ thể thay đổi theo mô hình và thiết lập, hãy coi đây là xu hướng để chọn hướng tiếp cận.
| Tiêu chí | Tinh chỉnh toàn bộ | LoRA | QLoRA |
|---|---|---|---|
| Tham số được huấn luyện | Toàn bộ mô hình | Phần nhỏ qua adapter | Phần nhỏ qua adapter |
| Nhu cầu VRAM | Rất cao, thường cần nhiều GPU | Trung bình | Thấp nhất trong ba cách |
| Kích thước kết quả | Bằng mô hình gốc | Vài chục đến vài trăm MB | Vài chục đến vài trăm MB |
| Tốc độ huấn luyện | Chậm | Nhanh hơn | Có thể chậm hơn LoRA do giải nén trọng số |
| Chất lượng | Cao nhất khi đủ dữ liệu | Gần tinh chỉnh toàn bộ với nhiều tác vụ | Gần LoRA, phụ thuộc cấu hình |
| Phù hợp | Phòng thí nghiệm, tổ chức lớn | Doanh nghiệp có GPU 24 GB trở lên | Thử nghiệm trên một GPU phổ thông |
Khi nào doanh nghiệp nên dùng LoRA
LoRA hữu ích khi bạn muốn thay đổi cách mô hình trả lời, không phải bổ sung kiến thức thay đổi thường xuyên.
Trường hợp phù hợp
- Xuất dữ liệu theo định dạng cố định, ví dụ trích thông tin từ email đơn hàng thành JSON đúng cấu trúc phần mềm của công ty.
- Giữ giọng văn thương hiệu nhất quán cho mô tả sản phẩm, tin nhắn chăm sóc khách.
- Phân loại văn bản theo nhãn nội bộ: loại yêu cầu hỗ trợ, mức ưu tiên.
- Tạo ảnh theo phong cách riêng hoặc nhân vật thương hiệu với mô hình tạo ảnh.
- Giúp mô hình nhỏ chạy nội bộ làm tốt một việc hẹp, thay cho mô hình lớn qua API.
Trường hợp không nên
- Muốn AI trả lời theo bảng giá, chính sách thay đổi hằng tháng: dùng RAG để AI tra tài liệu, dễ cập nhật hơn.
- Chưa thử prompt tốt và ví dụ mẫu: nhiều yêu cầu định dạng giải quyết được chỉ bằng prompt.
- Chỉ có vài chục ví dụ: dữ liệu quá ít, mô hình dễ học thuộc mà không khái quát.
Chuẩn bị dữ liệu và các bước tinh chỉnh LoRA
Chất lượng dữ liệu quyết định phần lớn kết quả. Một bộ vài trăm đến vài nghìn ví dụ sạch thường tốt hơn hàng chục nghìn ví dụ lộn xộn.
- Xác định tác vụ hẹp: viết rõ đầu vào, đầu ra mong muốn và tiêu chí đúng sai.
- Thu thập ví dụ: lấy từ dữ liệu thật đã được người kiểm tra, che thông tin cá nhân, thông tin nhạy cảm.
- Định dạng: chuyển thành cặp hướng dẫn và câu trả lời theo mẫu hội thoại của mô hình gốc.
- Tách tập kiểm tra: giữ lại khoảng 10% ví dụ không dùng để huấn luyện.
- Huấn luyện thử: rank nhỏ, ít epoch, theo dõi loss trên tập kiểm tra để phát hiện học thuộc.
- Đánh giá: so sánh mô hình gốc có prompt tốt với mô hình đã gắn LoRA trên cùng bộ câu hỏi thật.
- Kiểm tra an toàn: thử các câu hỏi ngoài phạm vi, yêu cầu không phù hợp, xem mô hình có mất hành vi từ chối hợp lý không.
Các thư viện phổ biến gồm Hugging Face PEFT, TRL và nhiều công cụ cộng đồng xây trên chúng. Hãy kiểm tra giấy phép của mô hình gốc trước khi dùng cho mục đích thương mại.
Lỗi thường gặp khi dùng LoRA
- Học thuộc dữ liệu: rank quá cao, huấn luyện quá nhiều epoch trên ít dữ liệu khiến mô hình lặp lại nguyên văn ví dụ. Giảm rank, giảm epoch, thêm dữ liệu đa dạng.
- Sai mẫu hội thoại: dữ liệu không theo đúng chat template của mô hình gốc, mô hình trả lời lộn xộn hoặc không dừng. Dùng đúng template từ tài liệu mô hình.
- Kỳ vọng nhồi kiến thức: tinh chỉnh với tài liệu nội bộ rồi hỏi chi tiết, mô hình vẫn trả lời sai. LoRA không phải cách đáng tin để ghi nhớ sự kiện; kết hợp RAG.
- Quên năng lực chung: mô hình làm tốt tác vụ mới nhưng kém đi ở việc khác. Dùng adapter riêng cho tác vụ, chỉ bật khi cần.
- Gộp rồi lượng tử hóa sai thứ tự: chất lượng giảm bất thường sau khi chuyển sang định dạng chạy cục bộ. Kiểm tra lại quy trình gộp và lượng tử hóa theo tài liệu công cụ.
- Không có tập đánh giá: chỉ thử vài câu bằng mắt rồi kết luận. Luôn giữ bộ kiểm tra cố định để so sánh các lần huấn luyện.
Trước khi tinh chỉnh LoRA, hãy viết một prompt tốt nhất có thể kèm 3–5 ví dụ mẫu và đo kết quả trên bộ kiểm tra. Nếu prompt đã đạt phần lớn yêu cầu, chi phí vận hành LoRA có thể không đáng.
Muốn đưa AI vào công việc của doanh nghiệp? PCTech tư vấn, đánh giá mức sẵn sàng AI và triển khai chatbot, AI agent, tự động hóa cho doanh nghiệp.
10 câu hỏi, 2 phút, nhận mức độ và việc nên làm tiếp theo. Dùng thử ngay
Câu hỏi thường gặp
LoRA khác fine-tuning thông thường thế nào?
Fine-tuning thông thường cập nhật toàn bộ trọng số mô hình. LoRA giữ nguyên trọng số gốc và chỉ huấn luyện các adapter nhỏ, nên tốn ít bộ nhớ và cho file kết quả nhỏ hơn nhiều.
Cần GPU bao nhiêu GB để tinh chỉnh LoRA?
Với QLoRA, mô hình 7B–8B thường cần khoảng 10–16 GB VRAM ở cấu hình chuỗi và batch nhỏ. Con số tăng theo độ dài chuỗi, batch size và kích thước mô hình.
LoRA trong tạo ảnh Stable Diffusion có giống LoRA cho LLM không?
Cùng nguyên lý adapter hạng thấp, chỉ khác mô hình gốc. Với tạo ảnh, LoRA thường dùng để học một phong cách, nhân vật hoặc sản phẩm cụ thể.
Nên dùng LoRA hay RAG cho chatbot nội bộ?
Nếu cần AI trả lời theo tài liệu thay đổi thường xuyên, dùng RAG. LoRA phù hợp hơn khi cần thay đổi định dạng, giọng văn hoặc kỹ năng cho một tác vụ hẹp. Hai cách có thể kết hợp.
Cần bao nhiêu dữ liệu để tinh chỉnh LoRA?
Tùy tác vụ, nhiều trường hợp bắt đầu được với vài trăm đến vài nghìn ví dụ chất lượng. Quan trọng là dữ liệu sạch, đa dạng và có tập kiểm tra riêng.
Adapter LoRA có dùng được với mô hình khác không?
Không. Adapter gắn chặt với kiến trúc và trọng số của mô hình gốc đã dùng khi huấn luyện. Đổi mô hình nền thì phải huấn luyện lại.
Bài viết liên quan
- Từ điển thuật ngữ AI cho người làm doanh nghiệp (A–Z)
- Fine-tuning là gì? Khi nào doanh nghiệp cần tinh chỉnh mô hình AI
- Quantization (lượng tử hóa) mô hình AI là gì? Giảm bộ nhớ mà vẫn giữ chất lượng
- RAG là gì? Cho AI đọc tài liệu nội bộ
- Cần bao nhiêu VRAM để chạy LLM 7B, 14B, 32B, 70B?
- Card đồ họa cho AI: cần GPU gì để chạy mô hình AI tại chỗ
- RLHF là gì? Cách AI học từ phản hồi của con người