2026 年模型微調演算法演進:LoRA、QLoRA 與 DoRA 的效能與參數對比
在 2026 年,低秩重參數化路線已經取得了壓倒性的生態優勢。Hugging Face PEFT、Unsloth、Axolotl、LLaMA-Factory 等主流框架,都把 LoRA / QLoRA / DoRA 做成了一行設定就能切換的選項。
1.3 三巨頭的定位分工
用一句話概括三者的分工:
方法
核心命題
最適合的場景
LoRA
用低秩矩陣近似權重更新量
顯存充足、追求訓練速度與穩定性的標準場景
QLoRA
把凍結的基座量化到 4-bit,再掛 LoRA
顯存吃緊、單卡訓練大模型、多實驗並行
DoRA
把權重分解為「幅度」與「方向」分別學習
低 rank 場景、對精度要求高、學習率難以調校時
注意,QLoRA 和 DoRA 都不是 LoRA 的替代品,而是可以疊加的改進。你完全可以在 4-bit 量化的基座上使用 DoRA 適配器,這就是目前所謂的「QDoRA」組合,也是 2026 年單卡訓練 70B 級模型的常見配置。
二、LoRA:低秩假設的工程勝利
2.1 數學原理拆解
LoRA 的核心假設是:模型在微調過程中,權重的更新量具有很低的內在秩(intrinsic rank)。也就是說,雖然原始權重矩陣 W₀ 的維度是 d × k,但我們不需要完整地學一個同樣大小的 ΔW,而是可以把它分解成兩個小矩陣的乘積:
W = W₀ + ΔW = W₀ + (α / r) · B · A
其中 W₀ ∈ ℝd×k 是凍結的預訓練權重,B ∈ ℝd×r、A ∈ ℝr×k 是可訓練的低秩矩陣,r 遠小於 min(d, k),α 是縮放係數。
初始化方式很關鍵:A 通常用高斯分布隨機初始化,而 B 初始化為全零。這樣在訓練開始時 ΔW = 0,模型行為與原模型完全一致,不會因為隨機擾動而破壞預訓練知識。這個設計看似簡單,卻是 LoRA 訓練穩定性的重要來源。
縮放係數 α / r 的作用常被誤解。它的實際意義是讓不同 rank 設定下的有效學習率保持一致。實務上大家習慣固定 α(例如 16 或 32),只調 r,於是 scale 會隨 r 變化。比較嚴謹的做法是使用 rsLoRA(rank-stabilized LoRA),把縮放改為 α / √r,這樣在 r 從 8 拉到 256 時,學習率不需要重新大調。
2.2 超參數地圖:rank、alpha、dropout、target modules
LoRA 的超參數不多,但每一個都會明顯影響結果。以下是 2026 年社群普遍接受的經驗值:
2.3 2026 年的 LoRA 變體生態系
原始 LoRA 論文之後,社群衍生出了大量改進版本,這裡挑幾個在 2026 年仍有實際影響力的:
LoRA+:觀察到 B 和 A 兩矩陣的梯度尺度不同,於是給它們設定不同的學習率(B 的學習率通常是 A 的 4 到 16 倍)。實作成本極低,效果穩定,已經被多數框架內建。
PiSSA / LoRA-GA:改變初始化策略。PiSSA 用奇異值分解(SVD)把原權重的主成分拿出來初始化 A 和 B,讓訓練起點就帶著有用的資訊,而不是從零開始。收斂速度明顯加快,在相同步數下表現更好。
OLoRA:把 LoRA 的初始化與 QR 分解結合,號稱在同等參數下更接近全參數微調的行為。
DoRA:下一節會專門展開,它是目前公認在低 rank 下表現最接近全參數微調的方法。
三、QLoRA:把 70B 塞進一張消費級顯卡
3.1 NF4 量化與雙重量化
QLoRA 的思路非常直接:既然微調時基座權重是凍結的,那為什麼要讓它佔據 bf16 的空間?於是把基座量化到 4-bit,只讓 LoRA 適配器保持 bf16 精度進行訓練。
關鍵在於「用什麼方式量化」。樸素的 4-bit 整數量化會讓權重分布失真,QLoRA 提出了 NF4(4-bit NormalFloat):一種針對常態分布資料設計的資訊理論最優量化格式。它的量化區間不是等距的,而是在常態分布密度高的地方更密集,在尾部更稀疏。由於神經網路權重通常近似零均值常態分布,NF4 能在 4-bit 下保留更多資訊。
在此之上還有雙重量化(Double Quantization)。NF4 本身需要為每個 block(通常是 64 個權重)儲存一個 fp32 的 absmax 縮放因子。這些縮放因子本身也佔空間——對 7B 模型來說大約 0.4GB。雙重量化對這些縮放因子再做一次 8-bit 量化,把每個參數的平均位元數從 4.5 壓到約 4.127 bits。省下的絕對量不大,但在 65B、70B 這種規模上就是好幾 GB 的差別。
3.2 分頁最佳化器與梯度檢查點
QLoRA 還有兩個容易被忽略但很重要的工程設計:
分頁最佳化器(Paged Optimizers):利用 NVIDIA 統一記憶體(Unified Memory)機制,在顯存不足時把最佳化器狀態暫時換出到主機記憶體。這讓訓練過程不會因為一個突然的長序列樣本而 OOM 崩潰,代價是速度會變慢。
梯度檢查點(Gradient Checkpointing):不在前向傳播時保存所有中間激活值,而是在反向傳播時重新計算。這能把激活值佔用的顯存降低 60% 到 70%,代價是訓練速度下降約 20% 到 30%。在 QLoRA 場景下,這幾乎是必開選項。
3.3 顯存帳本:實際能省多少
我們用一個 7B 模型、序列長度 2048、batch size 1 的標準場景來估算:
配置
基座權重
梯度 + 最佳化器
激活值(開梯度檢查點)
總計(約)
全參數微調(bf16 + AdamW)
14 GB
84 GB+
8–12 GB
> 100 GB
LoRA(bf16 基座)
14 GB
< 1 GB
4–6 GB
約 19–21 GB
QLoRA(NF4 基座)
約 3.8 GB
< 1 GB
3–5 GB
約 8–10 GB
也就是說,QLoRA 把 7B 模型的微調門檻從「專業級 24GB 卡」壓到了「16GB 消費級卡」甚至更低。而對於 70B 級模型,QLoRA 是少數能在單張 48GB 或雙張 24GB 上完成訓練的方案。
四、DoRA:方向與幅度的解耦
4.1 權重分解視角
DoRA(Weight-Decomposed Low-Rank Adaptation)的出發點,是對「全參數微調到底做了什麼」這個問題的重新審視。
研究者發現,如果觀察全參數微調過程中權重的變化,會發現一件有趣的事:權重的「方向」和「幅度」的變化模式是不同的。全參數微調傾向於在保持權重方向基本穩定的前提下,對幅度做較大的調整;而 LoRA 因為受限於低秩結構,往往被迫同時改變方向和幅度,導致它學到的更新模式與全參數微調有系統性差異。
這個觀察解釋了為什麼 LoRA 在 rank 很低時效果會明顯落後——不是參數不夠,而是參數的表達方式不對。
4.2 公式與實作細節
DoRA 的做法是把預訓練權重分解成幅度向量與方向矩陣,然後分別處理:
W' = m · (W₀ + BA) / ‖W₀ + BA‖c
其中 m ∈ ℝ1×k 是可訓練的幅度向量,‖·‖c 表示沿列方向的歸一化(即每一列的 L2 範數)。方向部分由原本的凍結權重 W₀ 加上 LoRA 的低秩更新 BA 共同決定,但會被正規化到單位長度;幅度部分則由 m 單獨學習。
這個設計帶來三個實際好處:
參數量方面,DoRA 除了 LoRA 的 A、B 矩陣之外,還多了 m 這個向量。對 7B 模型、全線性層掛載的配置來說,m 的參數量約 1.5M 到 1.6M,相當於 LoRA 可訓練參數量的 5% 到 10%,但相對整個 7B 模型仍然不到 0.03%。這個代價換取的是低 rank 下的顯著精度提升,通常是划算的。
4.3 收斂速度與學習率敏感度
根據社群在多個基準上的複現結果,DoRA 的典型行為特徵是:
在訓練初期,DoRA 的損失下降速度與 LoRA 相近甚至略慢,因為它多了幅度向量的初始化階段。但在訓練中後期,DoRA 往往能收斂到更低的損失值,並且在驗證集上的表現更穩定。
在 rank=4 或 rank=8 這種極低配置下,DoRA 相對 LoRA 的優勢最為明顯,某些任務上的差距可以達到 3 到 5 個百分點。當 rank 提升到 64 以上時,兩者差距會縮小到 1 個百分點以內,這時候 DoRA 的額外計算成本就未必值得了。
五、效能與參數全面對比
5.1 可訓練參數量對照
通用估算公式為:
LoRA 可訓練參數 ≈ r × Σ(每個目標模組的輸入維度 + 輸出維度)
以 LLaMA 架構的 7B 模型(32 層、hidden 4096、FFN 11008)為例,如果對所有線性層掛載 LoRA:
方法
r = 8
r = 16
r = 64
佔 7B 總參數比例
LoRA(全線性層)
約 20 M
約 40 M
約 160 M
0.28% – 2.3%
DoRA(全線性層)
約 21.6 M
約 41.6 M
約 162 M
0.30% – 2.4%
QLoRA(全線性層)
約 20 M
約 40 M
約 160 M
0.28% – 2.3%
全參數微調
約 7 B
100%
可以清楚看到,QLoRA 的可訓練參數量與 LoRA 完全相同,差異只在於基座的儲存精度。而 DoRA 的額外參數主要來自幅度向量,相對佔比很小。
5.2 顯存佔用對照
下表為 7B 模型、序列長度 2048、開啟梯度檢查點的實際量級參考(不同框架與最佳化實作會有差異):
配置
推論/訓練最低顯存
建議顯卡
LoRA r=16(bf16)
約 18–22 GB
RTX 4090 / A6000 / L40S
DoRA r=16(bf16)
約 19–23 GB
同上
QLoRA r=16(NF4)
約 8–11 GB
RTX 4070 Ti Super / 4080 / 3090
QDoRA r=16(NF4)
約 9–12 GB
同上
結論很明確:只要你的顯存足夠跑 bf16 的 LoRA,就沒必要用 QLoRA 換取那一點顯存。量化會帶來精度損失,也會拖慢訓練速度,是「沒辦法的時候才用」的手段。
5.3 訓練速度與吞吐量
訓練速度的相對關係在不同硬體上會有差異,但大致趨勢如下(以 bf16 LoRA 為基準 100%):
方法
相對訓練速度
主要額外開銷來源
LoRA(bf16)
100%
DoRA(bf16)
70% – 85%
列範數計算與額外的反傳路徑
QLoRA(NF4)
55% – 75%
每次前向/反向都要反量化權重
QDoRA(NF4)
45% – 65%
上述兩者疊加
這裡有個重要的實務提醒:訓練變慢不等於總成本變高。如果你原本需要兩張卡跑 LoRA,換成 QLoRA 只需要一張卡,即使單步慢 30%,總體成本可能還是下降的。評估時要看「完成一次實驗需要多少卡時」,而不是單看每秒步數。
5.4 下游任務準確度
準確度是最容易引起爭論的部分,因為它高度依賴任務類型、資料量與超參數調校。以下是社群在多個公開基準上歸納出的規律:
高 rank(r ≥ 64)時:LoRA、DoRA、QLoRA 的差距通常在 1 個百分點以內。這個區間裡選誰主要看顯存與速度,精度不是決定因素。
中 rank(r = 16 到 32)時:DoRA 通常領先 LoRA 約 1 到 3 個百分點。QLoRA 相對 bf16 LoRA 有約 0.5 到 2 個百分點的損失,但在搭配 DoRA 後可以部分補回。
低 rank(r ≤ 8)時:DoRA 的優勢最明顯,領先幅度可達 3 到 5 個百分點,且在複雜推理類任務上更接近全參數微調的水準。這個區間也是 DoRA 論文最強調的賣點。
另外有一個容易忽略的觀察:QLoRA 的精度損失在「知識注入」類任務上比在「風格遷移」類任務上更明顯。如果你要讓模型學會大量專業術語與事實性知識,量化帶來的資訊損失會更容易被放大。
5.5 推論階段:合併與延遲
三種方法在推論階段有一個共同優勢:都可以合併回原始權重結構。
LoRA 合併:W_merged = W₀ + (α/r) · B · A,直接得到一個與原模型同維度的權重矩陣。
DoRA 合併:W_merged = m · (W₀ + BA) / ‖W₀ + BA‖c,同樣是一個完整矩陣。
QLoRA 合併:先把 NF4 權重反量化回 bf16,再與 LoRA 更新相加。要注意,合併後模型就恢復成 bf16 全精度,失去了原本的 4-bit 儲存優勢。如果你需要保持 4-bit 部署,就得在推論框架裡直接支援 4-bit 權重 + 適配器的組合載入。
如果不合併而是動態載入適配器,會有輕微的額外延遲(通常 3% 到 8%),但換來的是可以在同一個基座實例上熱切換多個適配器。2026 年的主流推論伺服器(vLLM、SGLang、TGI)都已經原生支援 LoRA 適配器的批量熱插拔,這在多租戶 SaaS 場景裡是非常重要的能力。
六、2026 年的選型策略與實戰建議
6.1 決策流程
把上面的資訊濃縮成一條決策路徑:
第一步,看顯存。如果目標模型在 bf16 下能放進你的顯卡並留出訓練餘裕,直接選 LoRA 或 DoRA。放不下,才進入 QLoRA 分支。
第二步,看 rank 預算。如果你的任務需要低 rank(r ≤ 16)來控制適配器大小或避免過擬合,優先選 DoRA。如果 r 可以開到 64 以上,LoRA 與 DoRA 差距不大,用 LoRA 換取訓練速度也合理。
第三步,看任務類型。風格遷移、格式對齊、簡單指令跟隨,LoRA 就夠。領域知識注入、複雜推理、多步驟任務,DoRA 的優勢更明顯。
第四步,看資料量。資料少於 5000 筆時,建議 r 不要超過 16,並開啟 dropout 0.1,此時 DoRA 的低 rank 優勢能充分發揮。資料超過 10 萬筆時,可以考慮把 r 拉到 64 到 128,此時三者的差距會收窄。
6.2 常見踩坑
坑一:只掛 q_proj 和 v_proj。這是流傳最廣也最過時的做法。在 2026 年,除非你的顯存真的非常緊張,否則應該掛滿所有線性層。這個改動帶來的效果提升往往大於調 rank。
坑二:alpha 設得比 rank 還小。這會讓有效學習率被壓縮,訓練看起來「很穩」但其實根本學不動。記住 scale = α / r,α 至少要和 r 相當。
坑三:QLoRA 用了卻沒開梯度檢查點。QLoRA 省下的是權重顯存,激活值的顯存還是照樣吃。不開梯度檢查點,省下的空間很快就會被激活值吃掉。
坑四:DoRA 沿用 LoRA 的學習率。DoRA 對學習率的容忍度更高,可以嘗試比 LoRA 大 1.5 到 2 倍的學習率。如果發現 DoRA 收斂太慢,先別急著加步數,調高學習率往往更有效。
坑五:把適配器合併進量化模型後又存成 4-bit。這會造成二次量化誤差累積。正確做法是先合併回 bf16,再重新做一次量化校準。
6.3 下一站:LoRA 之後?
2026 年已經能看到幾個明顯的演進方向:
與 MoE 架構的結合。混合專家模型的參數量動輒數百 B,但實際激活的參數很少。針對 MoE 的 LoRA 變體(例如只對特定專家掛載適配器、或對路由器做選擇性微調)正在成為熱門研究題目。
量化感知的 PEFT。現有的 QLoRA 是「先量化、後訓練」,量化誤差在訓練前就固定了。新一代方法嘗試讓量化參數也參與訓練,或使用 FP4 / MXFP4 等更適合 Blackwell 世代硬體的格式。
多模態與長上下文的適配。當模型要吃 128K 甚至 1M token 的上下文,或同時處理文字、圖像、音訊時,LoRA 掛載的位置與 rank 分配策略需要重新設計。全層均勻分配的舊經驗未必適用。
自動化超參數搜尋。既然 rank、alpha、target modules 的組合空間這麼大,用貝氏最佳化或早期停止策略自動找出最佳配置,會比人工試錯更有效率。目前已有框架開始內建這類功能。
七、結語
回到最初的問題:2026 年該選 LoRA、QLoRA 還是 DoRA?
如果你的顯存充裕,追求訓練效率與生態成熟度,LoRA 依然是那個最穩妥的預設選項。它足夠快、足夠穩、工具鏈最完整。
如果你的顯存有限,或是要訓練 70B 以上的模型,QLoRA 是讓你這張卡能派上用場的關鍵技術。它用精度換空間,而在大多數場景下這個交易是划算的。
如果你在低 rank 下追求最好的效果,或者被學習率調校折磨得夠嗆,DoRA 值得你多花那 15% 到 30% 的訓練時間。它在小 rank 下的表現優勢,往往能彌補它帶來的額外計算成本。
而最重要的是:這三者不是互斥的。在 2026 年的實務工作流裡,我們經常在同一個專案裡先跑 QLoRA 做快速實驗、確定資料與方向,再用 bf16 DoRA 做最終訓練。理解每一種方法「為何存在」,比記住哪個分數高零點幾個百分點,要走得更遠。
以上就是這次在雅寶社區 · 頂客論壇分享的完整對比。如果你在自己的硬體與資料集上有不同的實測結果,歡迎在底下留言補充,這類第一手數據永遠比論文裡的基準更有參考價值。
本文為 雅寶社區 · 頂客論壇 技術專欄整理,轉載請註明出處。文中數據為社群複現結果的量級參考,實際表現會因硬體、框架版本與資料集而異。
```