2026 年模型微調演算法演進:LoRA、QLoRA 與 DoRA 的效能與參數對比

concept%20visualization%20for%202026%20%E5%B9%B4%E...
發表時間:2026 年 09 月 16 日 | 更新日期:2026 年 09 月 16 日 | 編輯:雅寶社區編輯團隊
2026 年模型微調演算法演進:LoRA、QLoRA 與 DoRA 的效能與參數對比 - 雅寶社區 · 頂客論壇

  • Adapter 系列:在 Transformer 層之間插入小型瓶頸模組,代表作為 Houlsby Adapter 與 AdapterFusion。優點是模組化,缺點是會增加推論延遲,因為它改變了網路結構。
  • Prompt / Prefix 系列:P-Tuning、Prefix-Tuning、Prompt Tuning,透過在輸入前綴或每層的 KV 上學習虛擬 token。參數量極少,但對任務的適配深度有限,長序列下還會吃掉上下文預算。
  • 低秩重參數化系列:LoRA 及其衍生變體(LoRA+、rsLoRA、PiSSA、LoRA-GA、OLoRA、DoRA)。這是目前的主流,核心優點是推論時可以合併回原權重,達到零額外延遲。
  • 選擇性微調系列:只訓練某些層或某些模組(例如只訓練 bias、只訓練最後幾層)。參數量最少,但效果不穩定。
  • 在 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 年社群普遍接受的經驗值:

  • rank(r):範圍通常 8 到 128。r=8 到 16 適合風格遷移與簡單指令微調;r=32 到 64 適合領域知識注入(醫療、法律、金融);r=128 以上通常用在需要大幅改變模型行為的場景。要注意,r 拉到很高時,LoRA 的優勢會逐漸消失,因為可訓練參數量逼近全參數微調。
  • alpha(α):常見設定是 α = 2r 或 α = r。經驗法則是 α 至少不低於 r,否則有效學習率會被壓得太低。
  • dropout:LoRA 層的 dropout 通常設 0.05 到 0.1。資料量小於一萬筆時建議開到 0.1,資料量大於十萬筆時可以設 0。
  • target modules:這是最容易被低估的參數。只掛 q_proj 和 v_proj 是 2023 年的老做法;2026 年的主流是掛滿所有線性層(q、k、v、o、gate、up、down)。實測顯示,從「只掛 qv」改成「全掛」,效果提升幅度往往比把 r 從 8 加到 64 還大。
  • 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。實測中,LoRA 常見的失敗模式是學習率稍大就發散、稍小就學不動;DoRA 的可接受學習率區間通常寬 2 到 3 倍。
  • 推論零成本:訓練完成後,可以把 m / ‖W₀ + BA‖c 完全摺疊進 W₀ + BA,得到一個單一權重矩陣。推論階段與原始模型完全相同的延遲。
  • 參數量方面,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 做最終訓練。理解每一種方法「為何存在」,比記住哪個分數高零點幾個百分點,要走得更遠。

    以上就是這次在雅寶社區 · 頂客論壇分享的完整對比。如果你在自己的硬體與資料集上有不同的實測結果,歡迎在底下留言補充,這類第一手數據永遠比論文裡的基準更有參考價值。

    本文為 雅寶社區 · 頂客論壇 技術專欄整理,轉載請註明出處。文中數據為社群複現結果的量級參考,實際表現會因硬體、框架版本與資料集而異。

    ```

    🏠 返回首頁