LORA_QLORA_PARAMESTER

# Phân tích sâu các hyperparameter trong LoRA: rank r, alpha và các tham số liên quan

Overview

LoRA (Low-Rank Adaptation) là một kỹ thuật fine-tuning tham số-hiệu quả, trong đó ma trận trọng số gốc W được giữ cố định và ta chỉ học một cập nhật hạng thấp ΔW. Cập nhật này được mô hình hóa dưới dạng tích của hai ma trận hạng thấp AB sao cho ΔW=BA, và đầu ra lớp trở thành W=W+ΔW. Các hyperparameter chính của LoRA – rank r, alpha α, cùng với dropout, target modules, learning rate, epochs… – quyết định trực tiếp dung lượng thích nghi, độ ổn định, khả năng tổng quát và mức độ "quên" của mô hình sau khi fine-tuning.[^1][^2]

Báo cáo này đi từ "what, how, when" cho từng nhóm tham số: định nghĩa toán học, vai trò, trực giác, khuyến nghị thực nghiệm và cách lựa chọn khi bạn làm legal Vietnamese LLM với LoRA/QLoRA.

LoRA core: công thức và trực giác

Công thức chuẩn của LoRA

Trong một lớp tuyến tính với trọng số gốc W0, LoRA thêm một cập nhật hạng thấp ΔW và giữ W0 cố định.[^2][^1]

W=W0+ΔW=W0+BA(1)

Ở nhiều implementation (PEFT, Unsloth, rsLoRA…), cập nhật này được scale bởi α và rank r:[^3][^2]

W^=W0+αrBA(2)

Với Rank-Stabilized LoRA (rsLoRA), người ta đề xuất:[^2]

W^rslora=W0+αrBA(3)

Trong các công thức trên:

Trực giác về dung lượng và regularization

Trong bối cảnh legal LLM, bạn muốn rank đủ lớn để encode các pattern pháp lý phức tạp (QA, NLI, syllogism), nhưng vẫn giữ α/r ở mức vừa phải để tránh phá vỡ tính tổng quát và gây catastrophic forgetting trên domain gốc.[^1][^2]

Rank r: "What" – định nghĩa, ý nghĩa và trade-off

Định nghĩa toán học của rank

Rank r trong LoRA là số chiều latent của cập nhật hạng thấp ΔW. Trong thực tế, nếu lớp có kích thước din×dout, người ta chọn:[^1][^2]

Tổng số tham số trainable trong adapter là r(din+dout), thay vì dindout nếu full fine-tuning.[^1]

Ví dụ, với lớp 768×768, full FT có 589,824 tham số; nếu r=32, adapter chỉ có khoảng 49,152 tham số, tiết kiệm hơn 90%.[^1]

Ảnh hưởng của r lên dung lượng và VRAM

Nghiên cứu tổng hợp cho thấy với LoRA trên LLM, các range r phổ biến là 8–128; r=8 hoặc r=16 thường đủ cho task đơn giản, còn r=32–64 cho domain phức tạp; một số case dùng r≥128 để tiệm cận full-FT.[^2][^1]

Khuyến nghị thực nghiệm về r

Các hướng dẫn thực tế (Hugging Face, Unsloth…) khuyến cáo:[^1][^2]

Các phân tích gần đây còn chỉ ra rằng optimum learning rate cho LoRA adapter có thể scale theo r0.84, gợi ý rằng khi tăng rank, nên giảm learning rate thấy bởi adapter, hoặc chỉnh α/r tương ứng.[^4]

Alpha α: "What" – vai trò, công thức và trực giác

Alpha trong forward pass

Trong implementation phổ biến (PEFT, Unsloth), alpha xuất hiện như một hệ số scale cho BA:[^3][^2]

h=W0x+αr(BAx)(4)

Ở đây:

Trực giác về α như "cần gạt cường độ"

Theo phân tích chi tiết:[^3]

Việc chia cho r thường nhằm bình thường hóa variance của BA theo rank: nếu A khởi tạo Gaussian và B khởi tạo 0, variance của BA có thể scale theo r; chia cho r giúp α giữ vai trò thuần túy kiểm soát cường độ, thay vì bị lẫn với kích thước rank.[^3]

Các cách đặt α phổ biến

Thực hành có một số convention:[^5][^2][^3][^1]

  1. α=r: heuristic đơn giản; nếu dùng α/r, khi α=r thì α/r=1, tức cập nhật không bị scale thêm, W^=W0+BA.
  2. α=2r: Microsoft trong LoRA gốc dùng α=2r, làm α/r=2, tức nhân đôi ảnh hưởng của adapter.[^5]
  3. α cố định: chọn α = 16, 32, 64… không phụ thuộc r, dùng α/r như thước đo cường độ, để tune α giống một hyperparameter độc lập với rank.[^3]
  4. Tuning α như hyperparameter độc lập: grid search, random search, Bayesian optimization để tìm α tối ưu cho từng task, kết hợp với tuning learning rate và r.[^3]

Unsloth và nhiều tài liệu hyperparameter guide đề xuất thực dụng: α=r hoặc α=2r, đảm bảo α/r1. Điều này giúp adapter có đủ sức ảnh hưởng mà không quá mạnh nếu r chọn vừa phải.[^2]

Quan hệ giữa α và r: "How" – scale, rsLoRA và learning rate

Tỉ lệ α/r và rsLoRA

Công thức chuẩn của LoRA trong nhiều tài liệu được viết dưới dạng:[^2]

W^=W0+αrAB(5)

rsLoRA đề xuất thay r bằng r:[^2]

W^rslora=W0+αrAB(6)

Phân tích thực nghiệm cho thấy nếu giữ α/r1, LoRA có thể đạt chất lượng gần full-FT khi r đủ lớn và target modules đủ rộng (attention + MLP).[^1][^2]

Unsloth khuyến nghị:[^2]

Liên hệ với learning rate của adapter

Phân tích trên blog Trelis (dựa trên sweep của Thinking Machines) cho thấy:[^4]

Nếu thư viện dùng α/r, việc lựa chọn α ảnh hưởng trực tiếp đến LR_lora:[^4]

LRlora=LRαr(7)

Mối quan hệ r0.84 gợi ý rằng khi tăng rank, nên giảm α/r hoặc learning rate để giữ LRlora trong vùng tối ưu. Tuy vậy, đa số implementation thực dụng vẫn dùng một LR chung (ví dụ 2e-4) và chọn α=r hoặc 2r cho r trong khoảng vừa phải (8–64).[^4][^2]

LoRA Dropout: "What" – cơ chế và khi nào dùng

Định nghĩa

LoRA dropout là một cơ chế regularization: trong quá trình training, một phần các kích hoạt liên quan đến adapter được đặt thành 0, tương tự như dropout trong mạng neuron thường.[^1][^2]

Trong nhiều toolkit, tham số này là lora_dropout, với domain khoảng 0–0.1.[^2]

Vai trò và thực nghiệm gần đây

Trong bối cảnh legal LLM với dataset vừa phải (vài chục nghìn–trăm nghìn mẫu) và SLM nhỏ, một cấu hình hợp lý là bắt đầu với lora_dropout=0 để giữ training đơn giản, sau đó nếu training loss xuống rất thấp (<0.2) nhưng validation/bên ngoài không cải thiện, có thể thử lora_dropout=0.05 hoặc 0.1.[^2]

Target modules: "What" – áp LoRA lên đâu và tác động

Các module thường gặp

Các hướng dẫn hyperparameter hiện đại khuyến nghị áp LoRA lên cả attention lẫn MLP:[^1][^2]

LoRA gốc và một số blog cũ chỉ áp lên q_projv_proj, nhưng kết quả tổng hợp (QLoRA paper, Unsloth guide) cho thấy hiệu quả tốt nhất khi target toàn bộ các linear chính.[^1][^2]

Tác động lên chất lượng và VRAM

Trong bài toán legal VN, việc cho LoRA "đi" cả attention và MLP giúp mô hình vừa học pattern ngữ nghĩa (attention) vừa học mapping phi tuyến (MLP) liên quan đến cấu trúc lập luận, NLI và syllogism.[^1][^2]

Learning rate, epochs, batch size: "How" – các tham số chung nhưng tương tác với LoRA

Learning rate

Unsloth tổng hợp hàng trăm kết quả và khuyến nghị:[^2]

LR quá cao có thể gây training không ổn định, đặc biệt nếu α/r lớn; LR quá thấp trên run ngắn lại có thể dẫn đến overfitting hoặc không học đủ.[^4][^2]

Epochs

Effective batch size và gradient accumulation

Unsloth nhấn mạnh effective batch size = batch_size × gradient_accumulation_steps, với giá trị 4–16 là vùng an toàn cho đa số task.[^2]

Điều này rất quan trọng với QLoRA trên SLM 0.6B–4B khi bạn chạy trên GPU 24GB; LoRA giúp giảm tham số trainable, QLoRA giảm footprint model, còn gradient accumulation xử lý constraint VRAM.[^2]

QLoRA: "When" – khi nào dùng LoRA vs QLoRA

QLoRA cơ bản

QLoRA (Quantized LoRA) lưu model base ở 4-bit (NF4, double quantization) và chỉ train adapter ở precision cao hơn (thường bfloat16), tiết kiệm ~33% VRAM so với LoRA 16-bit trong nhiều setup.[^1]

Kết quả cho thấy:[^1][^2]

Quyết định LoRA vs QLoRA

Trong pipeline legal VN với VRAM hạn chế, một chiến lược hợp lý là dùng QLoRA cho mô hình ≥4B, và LoRA thường cho mô hình ≤1.7B, giữ cùng công thức hyperparameter (r, α, target_modules) nhưng chú ý LR và batch size.[^2]

Overfitting, underfitting và control bằng α, r, dropout

Overfitting: dấu hiệu và cách xử lý

Unsloth đề xuất: nếu training loss xuống dưới 0.2, rất có thể mô hình đang overfit, nghĩa là performance trên dữ liệu chưa thấy sẽ kém.[^2]

Các biện pháp:[^3][^2]

Alpha scaling là một vũ khí mạnh: nó làm giảm tác động của adapter tại inference, giúp kết quả bớt "gắt" trên task fine-tune nhưng giữ được phần tri thức mới; trong pháp lý, đây là cách giảm rủi ro output quá "overfit" theo dataset huấn luyện.[^2]

Underfitting: dấu hiệu và cách xử lý

Underfitting xảy ra khi mô hình không học đủ pattern từ data; loss vẫn cao, và chất lượng trên task mới thấp.[^2]

Các biện pháp:[^2]

Điểm cân bằng giữa overfitting và underfitting phụ thuộc chặt chẽ vào cặp r,α; do đó, bạn nên coi chúng như knobs chính để chỉnh dung lượng và cường độ thích nghi, kết hợp với LR và số epoch.[^3][^2]

Bảng tóm tắt hyperparameter chính của LoRA

Nhóm tham số Ý nghĩa chính Giá trị khuyến nghị (thực dụng)
Rank r Dung lượng adapter, kiểm soát số tham số trainable trong cập nhật hạng thấp 8–32 cho task đơn giản; 16–32 là khởi điểm tốt cho legal VN trên SLM; 64+ cho domain rất phức tạp và dataset lớn.[^1][^2]
Alpha α Cường độ tác động của LoRA lên base, tham gia dưới dạng α/r hoặc α/r α=r hoặc 2r; giữ α/r1; tune thêm nếu thấy over/underfitting.[^2][^5][^3]
LoRA dropout Regularization trên adapter, giảm overfitting 0–0.1; mặc định 0 để tận dụng tối ưu hóa, tăng lên 0.05–0.1 nếu overfit rõ.[^2][^3]
Target modules Vị trí áp LoRA (attention, MLP) q_proj, k_proj, v_proj, o_proj, gate_proj, up_proj, down_proj để đạt chất lượng gần full-FT.[^2][^1]
Learning rate Mức điều chỉnh trọng số adapter mỗi bước 2e-4 cho LoRA/QLoRA supervised; 5e-6 cho DPO/GRPO.[^2][^4]
Epochs Số vòng qua dataset 1–3; đa số case legal VN nên dừng ở 2 với early stopping.[^2]
Effective batch size Độ ổn định gradient, ảnh hưởng đến VRAM và tốc độ 4–16, dùng batch_size nhỏ (1–2) + gradient_accumulation_steps để tránh OOM.[^2]
LoRA vs QLoRA Precision và footprint VRAM QLoRA cho mô hình ≥4B trên GPU hạn chế; LoRA 16-bit cho SLM nhỏ nếu VRAM đủ.[^1][^2]

Đây là cấu hình "an toàn" đã được khuyến nghị cho NLI trên Unsloth: đủ dung lượng để encode pattern legal mà vẫn kiểm soát overfitting, phù hợp với pipeline distillation legal VN bạn đang xây.[^6][^2]

Việc chọn r nhỏ hơn cho student giúp quá trình distillation thực sự "nén" tri thức từ teacher vào một không gian hạng thấp, có lợi cho generalization và tránh overfitting trên corpus pháp lý cụ thể.[^1]

Kịch bản 3: Mitigation catastrophic forgetting khi thêm domain mới

Khi bạn thêm domain mới (ví dụ Thuế, Lao động) vào một legal agent đã học domain cũ (VLQA, án lệ chung), các hyperparameter LoRA đóng vai trò điều khiển mức độ "quên":[^7][^1]

Như vậy, các tham số r, α, dropout, target modules không chỉ là "knob kỹ thuật" mà là phần của chính sách kiểm soát mức độ học và quên của agent pháp lý trong thiết kế nghiên cứu của bạn.


References

  1. What are the LoRA hyperparameters (r, alpha) - Avichala - Explore What are the LoRA hyperparameters (r, alpha) with Avichala — a global Generative AI learning...

  2. LoRA fine-tuning Hyperparameters Guide | Unsloth Documentation - Increase LoRA Rank ( r ) and alpha: Rank should at least equal to the alpha number, and rank should ...

  3. LoRA Scaling Parameter Alpha - ApX Machine Learning - The scaling parameter, denoted as α \alpha α, is an important hyperparameter in Low-Rank Adaptation ...

  4. How to choose LoRA Hyper-parameters? - Trelis Research - Low Rank Adapters (LoRA) are a way to continue training a neural net with less compute and a lot les...

  5. LoRA Fine-tuning & Hyperparameters Explained (in Plain English) - In the LoRA codebase, Microsoft sets alpha to 2x the rank in all their examples, meaning that the we...

  6. Hyperparam recommend LoRA Unsloth task NLI - Có. Cho NLI trên Unsloth, mình khuyên bạn bắt đầu bằng một cấu hình an toàn, ổn định, ít overfit trư...

  7. [CHo mình hỏi nha nếu là rag mà trong bài toán này

thì nó đang tiếp cận ở đoạn nào bạn vẽ cho mình flow md được không](https://www.perplexity.ai/search/386ce85b-f1c0-4782-b3e3-bbceba89b9b5) - Trong bài toán của bạn, RAG chính là lớp Semantic Memory của agent pháp lý, nằm giữa:
dữ liệu pháp l...