Lora và R

Ý chính: r mà bài “LoRA Learns Less and Forgets Less” nói tới là hạng nội tại của perturbation Δ trong full fine‑tuning/continued pretraining (CPT), còn r bạn đặt trong Unsloth chỉ là rank của adapter LoRA – hai cái này khác nhau về bản chất và về scale. Trong CPT, SVD cho thấy Δ có intrinsic rank rất cao (cỡ 1.500–2.000 với ma trận 4096×4096), còn LoRA/Unsloth chủ động chọn r nhỏ (16–64) để tiết kiệm VRAM, chấp nhận việc adapter không thể “ôm hết” lượng tri thức thô đó.[arxiv]

Mình đi từ từ, tách rõ 3 loại “r”: r của SVD/Δ (CPT), r của LoRA trong Unsloth, và r trong setting continual.


1. r trong bài LoRA Learns Less and Forgets Less (CPT)

Trong paper Biderman 2024, họ xét full fine‑tuning/continued pretraining trên các domain như code, toán, với mô hình Llama‑2‑7B. Khi full FT, trọng số mới là:[arxiv]

Wft=Wpre+ΔW_{\text{ft}} = W_{\text{pre}} + \DeltaWft​=Wpre​+Δ

Trong đó Δ là ma trận cập nhật “thật” chứa tri thức mới model học được từ domain target.[arxiv]

Họ dùng SVD trên Δ (và các ma trận liên quan như WqW_qWq​) để xem: “Để giải thích ~90% phương sai, cần bao nhiêu singular value?” Kết quả:

So sánh: LoRA bạn đang dùng thường đặt r = 16, 32, 64, cùng lắm 256 – nhỏ hơn intrinsic rank Δ từ 10 tới 100 lần. Do đó, về mặt hình học, một LoRA rank=16–256 chỉ có thể xấp xỉ Δ rất thô; những tri thức thô, giàu variance (facts, code, toán) không thể “nhét” trọn vào một subspace bé như vậy.[arxiv]

Kết luận của paper: LoRA “learns less” (học được ít pattern raw hơn full FT) nhưng “forgets less” (giữ được performance trên task gốc tốt hơn) chính vì adapter bị ràng buộc vào một subspace hạng thấp. Với facts high‑rank, muốn LoRA học giống full FT thì phải tăng r lên gần intrinsic rank – điều này phá vỡ lợi thế VRAM/compute vốn là lý do PEFT tồn tại.[arxiv]


2. r trong Unsloth (SFT) – tại sao lại nhỏ?

Unsloth và đa số hướng dẫn LoRA/QLoRA thực tế đi theo một triết lý khác: tối ưu trade‑off VRAM ↔ chất lượng trên dạng task cụ thể (instruction, chat, domain adaptation).[unsloth]

Từ guide và các heuristic mới nhất:

Nói cách khác:

Trong bối cảnh đó, chọn r nhỏ:

Khi bạn chuyển sang CPT (legal pretraining vài chục tỉ token), nếu thực sự muốn LoRA cạnh tranh với full FT về tri thức thô, rank cần ở vùng gần intrinsic rank mà SVD đo được – tức vài trăm đến ~2000 – điều này gần như không thực tế trên GPU bạn đang dùng.[arxiv]


3. r trong continual learning: r cho mỗi nhiệm vụ/domain

Trong continual learning với LoRA (O‑LoRA, N‑LoRA, MoLA, SLIM), “r của continual” có thể hiểu theo 2 lớp:

  1. Rank per adapter / per task: mỗi domain/task được gán một LoRA adapter với rank riêng rkr_krk​. Đây là capacity mà bạn cấp cho từng nhiệm vụ để nó encode knowledge mới.[openreview]

  2. Effective rank tổng cộng: tổng dung lượng latent mà toàn bộ hệ gồm nhiều adapter đang chiếm trong space của weight – có thể rất lớn nếu bạn có nhiều task và mỗi task có r>0, kể cả khi từng r_k nhỏ.[aclanthology]

Liên hệ đặt câu hỏi của bạn:

“r của continual là r khi dùng unsloth; r của CPT thì rất là lớn à?”

Có thể hiểu như:

Cho continual:

Nói đơn giản: continual r = capacity mỗi adapter + cách dàn trải nhiều adapter; nó liên quan tới intrinsic rank CPT nhưng không buộc phải bằng. Bạn có thể dùng fact từ Biderman 2024 như một upper bound:


Trong bài toán legal VN của bạn:

Vậy nên có thể nói:

Nếu bạn muốn mình có thể viết sẵn một đoạn giải thích bằng tiếng Việt theo ngôn ngữ luận văn (phần “Theoretical Motivation”) để bạn quote thẳng: tách rõ “intrinsic rank Δ trong CPT” vs “adapter rank r trong LoRA/Unsloth”, rồi dẫn Biderman 2024 như chứng cứ cho lựa chọn RAG + LoRA rank nhỏ trong framework legal của bạn.