miniTE 技術報告:原生 NVFP4 強化學習的穩定訓練與高效實現
ABSTRACT
原生 NVFP4 強化學習需要在量化與執行誤差下保持穩定,同時獲得實際運行收益。我們從訓練後期的失穩現象入手,分析量化格式、激活縮放、KV 緩存和框架實現如何影響策略概率。針對殘餘失配,TRIAGE 結合誤差與更新方向,對高風險片段調整更新權重,改善訓練穩定性和任務表現。miniTE 則將量化策略、線性層和計算後端分開,提供精度配置、訓推對齊和性能分析接口。我們還圍繞 Transformer Engine 的 per-token NVFP4 路徑開展聯合測試與實現,通過連續佈局、設備端元數據、amax(絕對值最大值)複用、分組矩陣乘法和融合優化,減少量化與矩陣乘法的準備及調度開銷。在 8×B300 的完整訓練更新測試中,兩條 miniTE 路徑採用 BF16 反向時,相對 BF16 的配對加速為約 1.33–1.37×;獨立的固定輸出推理服務測試達到約 1.64× BF16 吞吐。本文依次介紹失穩診斷、TRIAGE、miniTE 的實現與實驗結果。
TL;DR
- 問題與定位 · 原生 NVFP4 RL 可能在訓練後期失穩。我們從量化、激活縮放、KV 緩存和執行路徑排查誤差,再分析誤差如何影響更新。
- 兩種解法 · TRIAGE 從更新方向控制殘餘失配風險;miniTE 從數值執行減少差異,並優化低精度計算。兩者分別評估。
- 實測收益 · 8×B300 上,miniTE 採用 BF16 反向時完整訓練更新達到約 1.33–1.37× BF16 速度;獨立固定輸出推理服務達到約 1.64× 吞吐。
- 仍待解決 · 權重轉換與同步限制端到端收益。算子對齊和小 gap 也不足以保證追平 BF16,後續需要同時研究誤差容忍度、更新規則和最終學習效果。
摘要
原生 NVFP4 強化學習需要在量化與執行誤差下保持穩定,同時獲得實際運行收益。我們從訓練後期的失穩現象入手,分析量化格式、激活縮放、KV 緩存和框架實現如何影響策略概率。針對殘餘失配,TRIAGE 結合誤差與更新方向,對高風險片段調整更新權重,改善訓練穩定性和任務表現。miniTE 則將量化策略、線性層和計算後端分開,提供精度配置、訓推對齊和性能分析接口。我們還圍繞 Transformer Engine 的 per-token NVFP4 路徑開展聯合測試與實現,通過連續佈局、設備端元數據、amax(絕對值最大值)複用、分組矩陣乘法和融合優化,減少量化與矩陣乘法的準備及調度開銷。在 8×B300 的完整訓練更新測試中,兩條 miniTE 路徑採用 BF16 反向時,相對 BF16 的配對加速為約 1.33–1.37×;獨立的固定輸出推理服務測試達到約 1.64× BF16 吞吐。本文依次介紹失穩診斷、TRIAGE、miniTE 的實現與實驗結果。
1. 引言
大語言模型強化學習反覆執行採樣(rollout)、策略概率重算、梯度更新和權重同步。長響應同時增加生成與訓練的 token 數,使低精度計算具有直接價值。Blackwell 支持原生 NVFP4 矩陣乘法,已有預訓練工作也驗證了通過縮放、混合精度及適當舍入策略進行低比特訓練的可行性 [1]。但把這些能力放入 RL 閉環,還需要連接訓練框架與推理框架各自的數值實現。
我們最初觀察到,NVFP4 配置可以在訓練早期改善獎勵,長訓後卻出現熵異常、訓推對數概率差增長和獎勵回落。檢查過程中,量化誤差、檢查點轉換、激活縮放、KV 緩存以及兩端算子調用都影響了結果。單獨更換一個量化算子,或確認兩端都使用 NVFP4,未能解決全部問題。
本文先交代失穩現象,再通過對照實驗歸因、定位問題。在此基礎上,我們提出兩種互補的解決方法:TRIAGE 從更新規則出發,控制殘餘失配對學習的影響;miniTE 從執行層出發,減少可避免的數值差異,並讓低精度計算帶來實際效率收益。
在大型訓練框架中,更換縮放粒度或 GEMM 後端,往往需要同時修改層封裝、分組佈局、通信和自動求導。miniTE 將量化策略與這些公共功能分開,使開發者能夠在現有訓練流程中替換計算路徑,再檢查數值正確性、學習效果和運行成本。
第 2 節梳理原生 NVFP4 RL 的失穩現象與排查過程,第 3 節介紹 TRIAGE 的方法和效果,第 4—7 節介紹 miniTE 的框架、實現優化、實驗與使用方式。TRIAGE 控制現有執行棧中的殘餘失配風險,miniTE 則減少可避免的實現差異並提高執行效率。下文分別報告算法效果與系統性能,並註明各自的實驗配置。
2. 為什麼原生 NVFP4 RL 會失穩:現象與排查
2.1 失敗發生在訓練過程中
在 Qwen3-4B 與 Qwen3-30B-A3B 上,我們使用 GRPO 與 DAPO 數學任務開展 RL 實驗 [4,5,6]。早期原生 NVFP4 運行中,我們觀察到訓練初期獎勵正常增長,隨後才出現明顯退化。以 TRIAGE 所分析的訓練軌跡為例,4B 在約 300 步後失穩,30B 在約 700 步後出現快速增長的失配。這樣的失敗需要沿訓練時間檢查,不能僅靠初始步的單個誤差值或短程損失判斷。
我們追蹤獎勵、熵、訓推對數概率差(gap)和下游任務成績。對第 條響應的第 個 token,定義 。其中, 是輸入提示, 是當前 token, 是此前生成的 token; 和 分別表示訓練端與採樣端的條件概率, 為自然對數。負 gap 表示訓練端給出的概率更低,正 gap 表示更高。下文的平均絕對 gap 指對所統計 token 的 求平均。
2.2 區分量化誤差、轉換誤差與訓推差異
量化誤差比較低精度計算與高精度參考;訓推差異比較訓練端和採樣端的實際執行。兩者還可能疊加檢查點轉換及推理後端適配帶來的誤差。因此,我們在接入 RL 前比較 BF16、在線 NVFP4 量化與離線轉換後的 NVFP4 推理。
NVFP4 用 E2M1 表示量化值:E 和 M 分別表示指數位數與尾數位數,另有一個符號位。解碼值為 ,其中 是 E2M1 量化值, 是每 16 個元素共用的 E4M3 塊縮放因子, 是 FP32 外層縮放因子。不同配方決定外層縮放因子按整個張量、每個專家還是每一行計算。
NVFP4 的編碼與兩級縮放
可交互Qwen3-0.6B 的 NVFP4 預訓練檢查點曾因 QKV fuse 結構處理不正確而出現性能崩塌。修正後,BF16、一維量化和二維塊縮放量化的 Lambda 平均準確率分別約為 0.3043、0.3056 和 0.3109。這一案例説明,模型轉換與結構適配問題需要先被排除,不能直接歸結為 FP4 格式不可用。
Qwen3-4B 的在線量化相對 BF16,在 Lambda-base 和 Math23K 上分別下降 0.0355、0.047;離線轉換路徑又進一步下降 0.0089、0.019。它們將格式及數值路徑的損失,與轉換和縮放因子處理帶來的附加損失分開。
進入 RL 後,兩端使用相同格式仍存在明顯差異。早期配置的平均絕對對數概率差如下:
| 訓練/採樣配置 | Dense | MoE |
|---|---|---|
| BF16/BF16 | 0.0110 | 0.0172 |
| NVFP4/NVFP4 | 0.1142 | 0.0668 |
| NVFP4/BF16 | 0.1376 | 0.0621 |
| BF16/NVFP4 | 0.1690 | 0.0747 |
表 1:早期訓推路徑對照。Dense 使用 Qwen3-4B,MoE 使用 Qwen3-30B-A3B;結果用於定位該組配置中的誤差來源。
在線量化替換離線 ModelOpt 路徑後,dense 的 gap 仍約為 0.1142。我們也嘗試讓兩端調用相同的量化/GEMM 算子,但仍有殘餘差異。這使排查範圍擴展到輸入組織、縮放因子計算和量化周圍的算子行為。
2.3 激活量化、縮放粒度與 KV 緩存
固定 NVFP4 權重,逐步提高激活精度,以比較激活量化的影響。W 和 A 分別表示權重與激活,後面的數字為位寬;例如 W4A16 使用 4 位權重與 16 位激活:
| 權重/激活 | Dense gap | MoE gap |
|---|---|---|
| W4A16 | 0.0139 | 0.0166 |
| W4A8,MXFP8 激活 | 0.0363 | 0.0227 |
| W4A4,NVFP4 激活 | 0.0903 | 0.0445 |
表 2:使用相應 unquant 推理適配路徑的激活精度對照。它與表 1 屬於不同階段的排查,數值不混為同一消融。
W4A16 將 gap 降至接近 BF16 對照的量級,表明激活量化是這組配置中的重要因素。另一組固定配置中,將 KV 緩存從 FP8 改為 BF16,gap 從 0.0721 降至 0.0583,説明採樣端狀態的精度也會影響跨端結果。
我們進一步檢查縮放範圍。採樣端逐 token 解碼處理當前 token,而訓練端通常一次處理整段響應。若激活的外層縮放因子使用全張量 amax,同一個 token 會因同批其他 token 不同而獲得不同縮放因子。逐 token(per-token)amax 將這個歸約域限制到當前行,是減少這一依賴的直接選擇。
為比較解碼誤差,記參考向量為 、解碼向量為 ,兩者均有 個元素。相對 L2 誤差定義為 ,信噪比為 ,單位為 dB;平均絕對誤差為 。這裏 為歐氏範數;相對誤差與 SNR 用於非零參考向量。相對 L2 和 MAE 越小越好,SNR 越大越好。
縮放範圍如何引入上下文依賴
可交互縮放粒度並不決定全部誤差。我們對真實 QKV 輸入進行 E/M 位寬掃描:固定 E=2、使用 E4M3 縮放因子時,M 從 1 增加到 4,平均 SNR 從 19.88 dB 提高到 34.96 dB,相對 L2 從 0.10140 降至 0.01807;增加指數位則不總是改善結果,還可能與縮放因子表示範圍衝突。這些模擬格式用於識別敏感因素,不是新的原生 NVFP4 硬件格式。
改用 per-token amax 後,一組初始步 gap 從 0.05532 變為 0.05501,變化很小,但後續運行記錄觀察到更平穩的訓練。這促使我們繼續考察誤差的方向、局部結構和訓練演化,而不僅是初始平均值。
D1 · E/M 位寬探索:真實 QKV、模擬輸入與初始 RL 步
真實 QKV 輸入:M 位改變
| 格式 | SNR E4M3 | SNR E8M0 | Rel-L2 E4M3 | Rel-L2 E8M0 |
|---|---|---|---|---|
| E2M1 | 19.88 | 17.11 | 0.10140 | 0.13950 |
| E2M2 | 26.23 | 23.98 | 0.04885 | 0.06322 |
| E2M3 | 31.19 | 30.31 | 0.02767 | 0.03051 |
| E2M4 | 34.96 | 36.41 | 0.01807 | 0.01513 |
表 2-1:真實 prefill/單 token 生成時採集的 36 層 QKV 輸入,按層彙總;它不是硬件支持的新 FP4 格式。
真實輸入:增加 E 位的範圍與縮放因子問題
| 數據格式 | E4M3 下的 SNR(dB) | E8M0 下的 SNR(dB) |
|---|---|---|
| E2M1 | 19.88 | 17.11 |
| E3M1 | 21.50 | 19.7 |
| E4M1 | 14.39 | 19.7 |
| E5M1 | 0.0(最大值超過 E4M3 範圍) | 19.7 |
| 數據格式 | E4M3 下的相對 L2 | E8M0 下的相對 L2 |
|---|---|---|
| E2M1 | 0.10140 | 0.13950 |
| E3M1 | 0.08478 | ~0.103 |
| E4M1 | 0.28937 | ~0.103 |
| E5M1 | 0.99698(最大值超過 E4M3 範圍) | ~0.103 |
E8M0 下 E3M1/E4M1/E5M1 在所測輸入範圍接近;E4M3 與較大數據格式範圍的組合可能產生縮放因子範圍問題。因此,增加指數位不等價於改善這組輸入的精度。
初始 RL 步 gap:E 位與 M 位
| 數據格式 | E4M3 下的初始 gap |
|---|---|
| E2M1 | 0.05800700932741165 |
| E3M1 | 0.11516289412975311 |
| E4M1 | 3.412203073501587 |
| E5M1 | nan |
| 數據格式 | E4M3 下的初始 gap |
|---|---|
| E2M1 | 0.05800700932741165 |
| E2M2 | 0.042353976517915726 |
| E2M3 | 0.03562581539154053 |
| E2M4 | 0.031815189868211746 |
表 2-2:實際記錄的初始步 gap 與 NaN 結果。它衡量初始一致性,不替代長程訓練。
模擬輸入掃描與真實輸入的對照
| 數據格式 | 縮放因子格式 | MAE | SNR dB |
|---|---|---|---|
| E5M1 | E4M3 | 1.485030 | 0.00 |
| E4M1 | E4M3 | 0.132963 | 20.48 |
| E3M1 | E4M3 | 0.127780 | 20.63 |
| E2M1 | E4M3 | 0.154619 | 19.62 |
| E5M1 | E8M0 | 0.128281 | 20.18 |
| E4M1 | E8M0 | 0.128281 | 20.18 |
| E3M1 | E8M0 | 0.128515 | 20.18 |
| E2M1 | E8M0 | 0.176643 | 17.97 |
| 數據格式 | 縮放因子格式 | MAE | SNR dB |
|---|---|---|---|
| E2M4 | E4M3 | 0.017888 | 36.91 |
| E2M3 | E4M3 | 0.034627 | 31.58 |
| E2M2 | E4M3 | 0.070138 | 26.04 |
| E2M1 | E4M3 | 0.142116 | 20.17 |
| E2M4 | E8M0 | 0.018970 | 37.03 |
| E2M3 | E8M0 | 0.038432 | 30.93 |
| E2M2 | E8M0 | 0.079777 | 24.93 |
| E2M1 | E8M0 | 0.176643 | 17.97 |
表 2-3:兩批模擬輸入的 MAE/SNR,分別對應 E 和 M 掃描。它們幫助區分輸入分佈影響與位寬影響,不能與真實 QKV 均值混為同一重複實驗。完整格式彙總如下:
| 格式 | SNR 均值 | SNR 最差 | MAE 均值 | Rel_L2 均值 |
|---|---|---|---|---|
| E2M4 + E8M0 | 36.41 | 35.87 | 0.007954 | 0.01513 |
| E2M4 + E4M3 | 34.96 | 29.58 | 0.007589 | 0.01807 |
| E2M3 + E4M3 | 31.19 | 28.12 | 0.014404 | 0.02767 |
| E2M3 + E8M0 | 30.31 | 29.73 | 0.016283 | 0.03051 |
| E2M2 + E4M3 | 26.23 | 25.03 | 0.027865 | 0.04885 |
| E2M2 + E8M0 | 23.98 | 23.64 | 0.034200 | 0.06322 |
| E3M1 + E4M3 | 21.50 | 17.81 | 0.045411 | 0.08478 |
| E2M1 + E4M3 | 19.88 | 19.53 | 0.058788 | 0.10140 |
| E5M1/E4M1/E3M1 + E8M0 | ~19.7 | ~19.3 | ~0.051 | ~0.103 |
| E2M1 + E8M0 | 17.11 | 16.66 | 0.077184 | 0.13950 |
| E4M1 + E4M3 | 14.39 | 0.71 | 0.067209 | 0.28937 |
| E5M1 + E4M3 | 0.03 | 0.00 | 0.577118 | 0.99698 |
2.4 失配還需要結合更新方向理解
這裏用 表示第 條響應的優勢值,即該響應相對於同組響應的獎勵優勢;圖中簡寫為 ,並將單個 token 的 gap 簡寫為 。在 GRPO 中,正優勢值傾向提高已採樣 token 的概率,負優勢值傾向降低它。同步權重時,gap 主要反映執行差異;訓練端更新後,它還包含相對於固定採樣策略的參數變化。
若訓練端已低估某個 token(δ < 0),負優勢值更新繼續下調其概率,會在局部放大差異;正優勢值更新則傾向縮小差異。訓練端高估該 token(δ > 0)時,兩種更新的作用相反。
因此,干預需要同時考慮 gap 大小與更新方向。TRIAGE 根據優勢值與 gap 的符號關係識別局部風險。這一局部分析為算法設計提供依據;實際更新方向還受跨 token 耦合和優化器影響。
同樣的 gap,更新方向決定局部風險
可交互A > 0, δ < 0
訓練端已低估,正優勢值上調概率:局部上更接近採樣端。TRIAGE repair 根據正優勢值響應中的負向片段提供修復信號。
A > 0, δ > 0
局部上可能放大差異。TRIAGE gate 關注負優勢值、負 gap 的組合,未對所有放大象限統一衰減。
A < 0, δ < 0
訓練端已低估,負優勢值繼續下調概率:滿足 TRIAGE gate 的方向條件。是否衰減還取決於片段平均 gap 與尾部風險。
A < 0, δ > 0
訓練端高估,負優勢值下調概率:局部上更接近採樣端。
2.5 平均值可能掩蓋局部風險
在兩個模型各一條診斷軌跡中,方向分佈變化先於全局尾部爆炸出現。將響應劃分為 64-token 片段後,尾部 token 比例最高的少量片段集中了一部分嚴重失配;含尾部密集片段的響應仍可能具有很小的平均 gap。

實驗結果
圖 1:TRIAGE 補充分析中的方向分佈與負向尾部。上圖為按原始 加權的方向區域佔比,下圖為負尾深度 ( 為該組 token gap 的第 5 百分位數, 為優勢值的絕對值)。4B 為直接 gap,30B 為 routing replay 後的殘餘 gap;階段定義及局部閾值見附錄。
這些探索形成兩個具體需求:已有執行棧需要一種管理風險更新的算法;框架開發則需要方便比較縮放因子、精度和算子路徑的共同接口。下一節簡要介紹 TRIAGE,隨後展開 miniTE 如何把對齊、實驗迭代和高效執行落實到同一工程體系中。
排查結論 · §2固定 NVFP4 權重時,W4A16 將訓推 gap 降至接近 BF16 對照的量級;KV 緩存從 FP8 改為 BF16,gap 從 0.0721 降至 0.0583。
3. TRIAGE:通過方向感知穩定原生 NVFP4 RL
3.1 核心機制
TRIAGE 在包含截斷重要性採樣(TIS)等既有重要性修正的策略目標上工作 [10]。它保留原生 NVFP4 前向,通過修改策略優化目標管理殘餘失配。方法包含片段診斷、方向選擇性 gate 和有界 repair。
Gate 使用 64-token 片段的平均 gap 與深尾 token 數量判斷風險。對負優勢值風險片段,只衰減其中負 gap 的 token 的更新權重;其餘 token 保持原始權重。隨後在響應內歸一化加權損失,使干預重分配更新貢獻。
Repair 對正優勢值響應中的負向片段偏移提供附加信號。它使用 128-token 片段的平均 gap,施加導數有界的單側 pseudo-Huber 懲罰,提高活躍片段內的訓練端對數概率。Gate 減弱風險更新,repair 補充片段級修復;參數和歸一化方式見附錄 B。
3.2 穩定性與任務效果
TRIAGE 的 NVFP4 對照已經在兩端使用 per-token 激活縮放。它評估的是這一原生執行棧中的殘餘失配。在所測訓練區間內,TRIAGE 完成了 4B 的 600 步和 30B 的 1,700 步訓練;4B 上 TIS 延後了失穩但未完全阻止,30B 上 TIS 完成訓練但後期效果較弱。
TRIAGE 的訓練動態
可交互圖 2:TRIAGE 的訓練動態。上排 30B、下排 4B,從左至右為熵損失、獎勵及平均絕對 gap。
| 配置 | 4B 檢查點 | 五項數學平均 | 30B 檢查點 | 五項數學平均 |
|---|---|---|---|---|
| BF16 | 600 | 58.26% | 1,700 | 72.41% |
| NVFP4 | 300† | 47.10% | 700† | 65.87% |
| NVFP4 + TIS | 300† | 50.76% | 1,700 | 63.18% |
| NVFP4 + TRIAGE | 600 | 58.49% | 1,700 | 70.96% |
表 3:AIME24、AIME25、MATH-500、AMC23 和 GSM8K 的非加權平均 [11,12,13]。† 表示失穩前保存的檢查點;不同時長的最終結果與同預算比較分開解釋。
在共同的 4B 第 300 步檢查點上,TRIAGE 取得 53.03%,分別高於同期 NVFP4 和 TIS 5.93、2.27 個百分點。這説明 TRIAGE 的收益也體現在相同訓練預算下。框架吞吐則統一在 miniTE 測試環境中評估。
3.3 兩種互補的解決方法
TRIAGE 與 miniTE 從兩個位置處理前文定位的問題。TRIAGE 調整存在殘餘失配時的更新;miniTE 直接檢查和改進量化、算子及其調用方式,同時降低執行成本。下面介紹 miniTE 如何支持數值對齊和高效計算。本文分別評估兩種方法,組合使用的額外收益仍待驗證。
4. miniTE:對齊數值執行,優化低精度計算
4.1 如何同時控制數值差異與執行成本
NVFP4 探索反覆涉及幾類局部改動:更換激活縮放因子粒度、保留部分層的高精度、修改反向計算格式,以及替換量化或 GEMM 實現。如果這些選擇與模型模塊、分佈式通信和訓練腳本緊密耦合,每次實驗都需要重新處理外圍邏輯,誤差定位也更困難。
miniTE 從執行側處理這些問題:顯式指定量化規則,並在相同數值邊界上比較訓練端與採樣端。我們提供普通線性層、LayerNorm 與線性層組合、MoE GroupedLinear 三類模塊,通過共同量化接口連接 Python 參考實現與高性能後端。訓練任務仍由 Megatron 及上層 RL 系統編排,採樣由 SGLang 等推理框架執行 [7,8]。miniTE 聚焦數值策略與算子的接入、比較和優化。
miniTE 框架與計算路徑
可交互4.2 接口分層與 Transformer Engine 適配
miniTE 的模塊層保留訓練框架需要的參數、自動求導與分佈式入口;量化策略層描述數據格式和縮放因子;計算後端實現具體量化與 GEMM。開發者可以先用參考實現確認數值行為,再在接口邊界內接入 CUDA、CUTLASS 或 TE 實現。
| 層次 | 主要組件 | 開發者修改什麼 |
|---|---|---|
| 模塊 | Linear、LayerNormLinear、GroupedLinear | 模型接入與分佈式封裝 |
| 精度配置 | RecipeSpec、get_qlinear_params、QLinearParams | 具名選擇、激活/權重/梯度及 fprop/dgrad/wgrad 精度 |
| 量化接口 | quantize、group_quantize | 量化參數、縮放因子粒度、填充與分組 |
| 矩陣乘法 | qgemm及後端實現 | 編碼數據、縮放因子佈局和 GEMM 調度 |
| 診斷 | 張量統計、性能分析器、跨端採集與比較 | 數值迴歸與性能定位 |
表 4:miniTE 的職責劃分。新增方案優先在量化策略及後端層完成,公共模塊邏輯可以複用。
TE 適配是設計中的核心要求。miniTE 沿用已有 Linear 類接口和檢查點參數命名,使 Megatron 包裝層能夠替換相應模塊,並複用其餘訓練流程。參數加載、額外狀態(extra state)和並行模式則按具體接入路徑驗證,以兼顧遷移成本和行為一致性。
配方註冊表保存名稱、用途和依賴元數據,參數工廠將選中的配方轉為 QLinearParams。註冊表與查詢入口只依賴 Python 標準庫;計算算子在工廠的對應配方分支內導入。開發者可以先檢查配置,再準備該路徑需要的 CUDA、TE 和編譯擴展。參考路徑與優化路徑繼續共用上層模塊。
4.3 多種精度配方與選擇性量化
第 2 節的 W4A16、W4A8 和 W4A4 探索,要求框架能夠獨立配置權重和激活。miniTE 進一步將梯度精度,以及前向(fprop)、輸入梯度(dgrad)、權重梯度(wgrad)的矩陣乘法設置分開。這樣,一個新的前向量化方案不必同時綁定一種反向精度。
v1.0.0 通過 MINITE_RECIPE 或 get_qlinear_params 選擇具名配方,例如 nvfp4_per_token 和 nvfp4_per_token_bf16_bwd。顯式傳入層的 qlinear_params 優先於環境變量選擇;按層名覆蓋和按層編號關閉量化的入口用於敏感層分析。開發流程可以從參考量化開始,確定縮放因子與編碼,再選擇 GEMM 後端,比較全精度反向與量化反向。
本文比較的 miniTE CUTLASS 和 miniTE per-token 是兩條 MoE GroupedLinear 實現。兩者都使用 NVFP4 前向,並按 token 計算激活的外層縮放因子。名稱中的 CUTLASS 指矩陣乘法實現,per-token 指縮放方式;它們並不是互斥的技術類別,TE 的 per-token 路徑也調用 CUTLASS 內核。兩條路徑的主要區別如下。
| 比較項 | miniTE CUTLASS | miniTE per-token |
|---|---|---|
| 激活外層縮放 | 每個 token 一份 | 每個 token 一份 |
| 權重外層縮放 | 每個專家的權重張量一份 | 將專家權重展平後,按權重行計算 |
| 量化與 GEMM 接口 | miniTE 自定義打包與 CUTLASS V2 分組 GEMM | TE per-token 批量量化與分組 GEMM;支持 list/dense 包裝 |
| 配置名 | nvfp4_cursor2_cutlass_v2 | nvfp4_per_token |
兩條路徑都分別測試了 MXFP8 反向和 BF16 反向。反向精度由獨立設置控制,不能僅憑路徑名稱判斷。本文的 BF16 反向性能結果使用層級 bypass:保存原始 BF16 操作數,跳過反向量化。專用 nvfp4_per_token_bf16_bwd 算子是另一種實現,不能直接套用這些性能結果。
前向 NVFP4,反向獨立配置
可交互公開入口通過同一註冊表解析配方,並按常用配置、參考實現和實驗配置組織説明;這些分組表示用途。describe 展示前向、反向和佈局請求,doctor 檢查所選路徑的運行依賴。各項結果同時註明前向與反向精度、量化覆蓋和源碼版本。
4.4 數值監控、性能分析與訓推排查
低精度故障可能到訓練後期才暴露,因此 miniTE 提供可配置的數值與性能採集入口。開發者可以按模塊、實例、rank 和步數檢查激活、權重、輸出與梯度的 min/max、均值和範數,並保存張量以復現異常。性能分析器輸出 Chrome trace 和內核時間統計,幫助區分計算、數據準備和調用間隙。
比較訓練端和採樣端時,需要先對齊輸入。MoE dispatch 後兩端的 token 順序可能不同,直接逐元素相減會把排列差異誤判成數值誤差。我們圍繞 routing、專家 FC1/FC2 及 token 對數概率設置採集和比較流程,先對齊 token 順序與專家編號,再比較輸出、量化數據與縮放因子。
排查時區分真實內核輸出、hook 邊界與參考實現重放。某個融合內核內部不可直接採集的中間量,可以用重放幫助定位,但應保留其來源,避免把參考重放的一致誤當作真實執行的一致。這些檢查方式使每次精度配方或內核修改都能沿“輸入與路由、量化、GEMM、輸出概率”追蹤影響。
4.5 訓推對齊與確定性實現(Deterministic Mode)
低比特訓練的穩定性不僅取決於量化精度本身,還取決於訓練和推理兩側的算子行為是否嚴格一致。即使兩側使用相同的量化策略,只要算子實現、歸約順序或並行策略有細微差異,就可能累積成不可忽視的數值偏差,最終影響訓練效果。
為此,我們在 miniTransformer 中實現了確定性模式(deterministic mode):通過逐層替換 Megatron 側的算子實現,使其與 SGLang 推理側使用同一條 kernel、同一套公式、同一種歸約順序,最終在已檢查的多個關鍵層上達到 bit-exact 的一致性。
這項逐層對齊與第 4.4 節的張量、路由身份檢查配合使用。原記錄中,嚴格配置關閉 TIS,非嚴格參考使用 TIS,因此下圖保留這些執行路徑與算法修正的共同配置身份;關鍵層的 bit-exact 與端到端對數概率差分別報告。
NVFP4訓推對齊與訓練穩定性
可交互獎勵、gap、熵與策略梯度損失

圖 4:訓推對齊實驗。展示獎勵、平均絕對對數概率差、熵及策略梯度損失;粗線為 15 步滑動均值。對齊配置在所測區間的 gap 約為 ,並保持較平穩的後期獎勵。這是多個實現選擇共同變化的對照,不是隻切換一個開關。
在本組實驗中,對齊版本的訓推 log-prob diff 降至約 ,reward 後期保持穩定、擾動較小;未對齊 NVFP4 則在後期出現 reward 明顯回落,並伴隨 entropy 和 log-prob diff 上升。這表明在該配置下,較小的訓推差異與更平穩的 NVFP4 RL 訓練動態相伴。本圖是不同實現配置的單次訓練對照,涉及多個實現選擇共同變化;對齊實驗與吞吐測試也屬於不同實驗,性能結論仍以第 6 節對應配置的直接測量為準。
因此,miniTE 的價值包括對齊能力,也包括實現這種能力所需的配置、調試和擴展入口。它使新的低精度策略能夠經歷同一套從局部正確性到 RL 訓練的驗證過程。
訓推對齊 · §4.5嚴格對齊配置下,所測區間的訓推對數概率差約為 10⁻⁸,並保持較平穩的後期獎勵。
5. 與 Transformer Engine 聯合推進 NVFP4 實現與加速
5.1 Per-token 與 per-tensor 的數值及實現選擇
我們與 NVIDIA 圍繞 TE 的 NVFP4 能力開展聯合測試與實現,並以 per-token 精度配方及相關接口為重要連接點 [9]。不同縮放因子粒度決定數值行為,也改變 amax 計算、縮放因子存儲和 GEMM epilogue 的成本,因此需要一起評估精度和速度。
NVFP4 在每 16 個元素上使用 E4M3 塊縮放因子,數據使用 E2M1 編碼,並由外層 FP32 縮放因子調節範圍 [1]。若 是第 行外層縮放因子, 是長度為 16 的塊,則
Per-tensor 使用整個張量共享的外層縮放因子,per-token 則逐行計算。後者減少對其他 token 峯值的依賴,並能緩解跨行幅度相差很大時塊縮放因子接近下溢區的問題。它不會消除行內動態範圍或 FP4 舍入誤差,也需要更細粒度的計算支持。公開系統中也採用了 per-token NVFP4 前向與較高精度反向的組合 [2]。
我們據此保留多種精度配方用於比較,將精度選擇與實現優化分開驗證。不能僅由某個縮放因子策略在局部張量上的誤差更小,就推出完整 RL 路徑更穩定;同樣,新增歸約的成本也需要通過整條計算路徑測量。
D2 · per-token/per-tensor 的 20k 步語言模型損失對照

實驗結果
圖 5-1:Ling MoE 單 GPU、seed 11、20,000 步;兩種 NVFP4 配置均使用 RHT、SR 與二維權重量化。左圖為絕對損失,右圖減去同數據 BF16 後展示差異;末尾 1k 區間的相對 gap 標註為 per-tensor+1.317%、per-token+1.060%。
絕對損失在圖示尺度接近,按相同數據減去 BF16 才顯現較小差別。該實驗提供縮放因子選擇的長期語言模型損失證據;它不是§6.2.2 的 RL+TIS 軌跡,也不據此單獨證明 RL 穩定性。
5.2 連續佈局與 grouped GEMM 調用組織
原始分組接口可能把量化結果和縮放因子拆成多個專家張量,再在 GEMM 端重新建立指針、步長和佈局。專家數增加後,Python/ATen 切分、list 構建、臨時分配和 host 到 device 參數傳遞可能抵消 FP4 算術收益。
我們將量化輸出組織為連續 buffer,以 offset 描述專家邊界,直接交給 dense grouped GEMM。FP4 數據、塊縮放因子和外層縮放因子沿同一接口傳遞,避免量化後拆開、調用前重新組裝。Device 側構建參數並複用工作區,減少重複分配與同步拷貝;零 token 專家和填充也在這條分組路徑中統一處理。
這一優化改變的是數據組織和調用方式。Dense 量化與 GEMM 接口分別與原 list 路徑比較操作數及輸出,性能則測量組合實現。後續版本b641179將 dense 路徑與 GEMM 配置、融合串聯,核心重複測試仍保留其原版本身份。
5.3 在數據產生時計算 amax
獨立 amax 內核需要先掃描激活,再由量化內核重新讀取。我們沿數據生產到消費的路徑,尋找已經遍歷這些數據的操作。
對於 MoE FC1,輸入經過 dispatch 和 permute,因此可在 token 重排時同時累計逐行 amax。Padding 階段一起處理激活與 amax,使量化端複用外部統計,跳過重複歸約。
對於 MoE FC2,amax 更適合融合到 activation 計算中。我們選擇 _weighted_swiglu_row_amax_kernel 作為融合 kernel,參考 JIT compile 出來的實現,在遍歷 col 方向時順帶累計 amax。統計作用於 SwiGLU 輸出施加 router 權重後、實際交給 FC2 量化器的張量;歸約複用原本的訪存和計算路徑,避免再為 amax 單獨掃描完整 FC2 輸入。
FC1 優化前後的差別是:
原路徑:sort → pad(activation) → amax → quantization
融合後:sort + amax → pad(activation, amax) → quantization
FC2 則在生成加權激活時一起產出 amax,後續量化複用這一統計:
原路徑:SwiGLU × router weight → activation → amax → quantization
融合後:weighted SwiGLU + row-amax → activation、amax → quantization
這裏的收益應覆蓋 producer、填充和 consumer。模塊級跳過 amax 的模擬測試並不總是更快,説明減少一個內核不能單獨代表完整流程收益;第 6 節使用包含外圍工作的訓練端計時報告結果。
5.4 內核級優化與適用範圍
Kernel 級優化分別處理 amax 跨 CTA 歸約、FC1/FC2 GEMM 流水線、scale 佈局傳遞,以及 activation/amax 在 epilogue 中的融合。以下給出實現細節與適用範圍。
展開:Kernel 級優化實現細節
1. Row-amax:用 cluster shared memory 做 CTA 間歸約。 Per-token NVFP4 的 K1 階段需要為每一行求跨 K-tile 的 amax。原路徑用跨 tile 的 atomicMax 彙總。優化路徑先讓 cluster 內各 CTA 計算 partial amax,並寫入 leader CTA 的 shared buffer,再由 leader 完成 cluster 內歸約;當一個 cluster 覆蓋全部 K tiles 時可直接得到最終 row-amax,超出覆蓋範圍則回退 atomic。測試中 n_cluster=16、k_tile=128 可覆蓋 K=2048,增至 256 可覆蓋 K=4096。它只替換 K1 amax,K2 cast 仍獨立執行;multi-cluster 方案沒有收益,已移除。因此適用於單 cluster 能覆蓋或大部分覆蓋的 K 範圍,不能將這一收益直接外推到更大 K。
2. FC1/FC2 GEMM:按歸約長度選擇 tile 與 pipeline。 兩層雖然都使用 grouped NVFP4 GEMM,但 K 長度和 epilogue 重疊條件不同。FC1 的 K 較長、MMA 主循環更長,較大的 MMA_N=256 配合 2SM 能提高單 CTA 處理量,並讓 epilogue 工作更容易與 MMA 重疊。FC2 的 K 較短,若沿用 256 列及 OverlappingAccum,epilogue 反讀可能與下一 stage 的 MMA 寫入爭用,因此採用 MMA_N=128、2SM。此外,TMEM 共 512 列,256 列 tile 使用 2-stage 會佔滿容量,無法再容納 scale,需配套選擇 OverlappingAccum,而非沿用默認 TMEM 分配。這是針對所測 FC1/FC2 形狀的配置,其最優選擇隨 shape 變化。
3. Fused swizzle:在 cast 時直接寫 GEMM 所需的 scale 佈局。 下游 GEMM 需要特定的 swizzled scale-factor layout。原實現先生成 compact M-major scale,再啓動獨立的 nvte_swizzle_scaling_factors 轉換,增加一次 kernel launch 和全局內存讀寫。融合實現為 launch_grouped_fused_cast_bf16 增加 with_swizzle 路徑,在 DO_ROW 中直接按 cuBLASLt 128M × 4K tile layout 寫出;關閉時仍保留 compact 佈局及原獨立轉換路徑。這樣省去中間 scale 重排,優化的是佈局傳遞成本,量化公式保持不變。miniTE per-token 後續專項測試中,fused/unfused 的量化數據、還原到同一佈局後的 scale 與最終輸出逐位一致。
4. Activation 與 epilogue 融合:FC1 輸出後就地完成門控激活與統計。 MoE FC1 的輸出是 gate/up 配對張量,通常緊接 SwiGLU 或 GeGLU,並需要為後續量化計算輸出側 amax。融合 epilogue 同時完成 α/bias 修正、gate/up 配對的激活、router 概率加權和 D 側 amax;按配置保留可選的 GLU 前中間 C 寫出,FP8 路徑還可生成輸出 scale factor。核心數據流為:
ACC = block-scaled GEMM(A, B)
ACC = ACC × α_a[m](可選再乘 α_b[n])+ bias
C = gate | up(GLU 前,寬度 N;按需寫出)
D = act(gate, up) × prob(SwiGLU/GeGLU,寬度 N/2)
同時歸約 D 的 amax;FP8 路徑可生成輸出 scale factor
就地完成 activation 和統計,可減少完整 gate/up 中間結果寫回、隨後再次讀入的流量,以及獨立 activation/amax kernel 的啓動。該融合當前針對前向,適用於 FC1 輸出立即進入門控激活及量化統計的路徑。各項優化是否納入主性能配置單獨記錄,完整收益仍由相應模塊和 learner 計時給出。
5.5 聯合測試怎樣支持實現選擇
我們將聯合工作組織為“參考實現、優化實現、模塊對照、模型測試”。同一精度配方比較用於驗證接口和佈局變化;不同精度配方比較用於評估精度選擇及其成本。BF16、TE 原生 NVFP4、自研 CUTLASS 路徑和上游 per-token 路徑分別承擔不同基線角色。
這套流程使 TE 能力能被 miniTE 接入,也使 miniTE 探索中的瓶頸能回到 TE 接口和內核層處理。公開 per-token 實現與討論見 PR #3045 [9]。具體版本、補丁和測試範圍隨結果給出,貢獻歸屬與上游合入狀態按實際記錄區分。
5.6 單遍融合的進一步探索
我們還研究了 online amax 補償,用於不物化完整中間激活的融合 SwiGLU-FFN 路徑。FC2 沿 K 維消費激活 tile,但處理早期 tile 時,全行 amax 尚未得到。這個方法維護逐行 running amax,並在外層 scale 增大時,把此前部分累加轉換到新的尺度,連接 FC1、SwiGLU、量化和 FC2。
這條路徑主要減少中間激活寫讀和獨立 kernel 調用。補償保證的是各 tile 貢獻在累加時的尺度一致性;提前量化得到的 E4M3 block scale 和 E2M1 編碼,則仍取決於當時的 scale 與舍入。因此,我們將它作為融合研究方向,分別評估補償誤差、與 two-pass 的量化差異和完整調用鏈收益。
展開 Online Amax 補償量化
算法:在當前行尺度下累計 FC2 的部分輸出
記 為第 個 FC2 K-tile 的 SwiGLU 激活。先完成該片 gate/up 的 FC1 歸約,再計算 SwiGLU、逐行絕對值最大值與 16 元素 block 的最大值。逐行 running amax 及外層 scale 為
對 block ,量化器生成 與 。FC2 塊縮放 MMA 計算
這裏 已包含權重的塊縮放,但不包含沿 K 維不變的外層權重 scale ;激活逐行 scale 與權重外層 scale 在最終輸出中按對應維度廣播。若權重外層 scale 隨 tile 改變,應把該變化計入每個 partial,不能統一留到末尾。激活的 bs 在 MMA 內按 block 應用,只有外層 gs 被推遲到 epilogue。
數值條件:避免飽和不等於任意 gs 下誤差不變
對固定數據, 保證未舍入的 block scale 不超過 E4M3 上限 448。在線算法的 running amax 至少覆蓋當前 tile 的最大值,因此當前 tile 滿足這一防飽和條件。
在不考慮 E4M3 舍入時,,外層 scale 的變化可以被 block scale 抵消。實際 bs 需要舍入,乘積會保留與 gs 有關的舍入殘差;gs 過大還可能讓小 block 進入亞正規或下溢區。二的整數次冪縮放在碼本保持正常數、未觸及邊界且舍入規則一致時,可保持相同的解碼步長;任意比例縮放不具有這一保證。
原重尾用例中,一行激活的 amax 約為 29。設計 scale 與其 4 倍的 rel-L2 都是 0.099,而降低到設計值的四分之一時,rel-L2 升至 0.52:
| 外層 scale | rel-L2 | block scale 上界情況 |
|---|---|---|
| amax / 2688 | 0.099 | 1/16 恰好達到 448,未越界 |
| 4 × amax / 2688 | 0.099 | 沒有 block 達到上界 |
| amax / (4 × 2688) | 0.52 | 6/16 超過上界並被截斷 |
這組示例展示了防飽和條件的作用,以及該倍數縮放下的相同誤差;它沒有證明所有滿足下界的 scale 都產生相同編碼或誤差。
補償依據:partial 必須在同一外層尺度下合併
尚未乘回本 tile 的 ,因此不同 tile 的 partial 不能直接相加。遞推式把舊累加器換算到當前尺度;在理想實數運算下展開得到
這個等式恢復的是每個已量化 tile 應有的外層 scale。它不會重算早期 tile 的 bs 或 q,所以不能據此推出與預先知道全行 amax 的 two-pass 方案逐位等價。FP32 中的比值、乘法和累加也會舍入,需要在數值對照中單獨檢查。
原診斷示例使用 amax 分別為 1 和 100 的兩個 slice,以 FP32 結果為參考。不同尺度的 partial 直接相加產生 2618% 的 rel-L2;逐 slice 乘回 scale 後相加,以及順序式 ratio 補償,記錄的 rel-L2 均為 6.0%,回到該用例的量化誤差範圍。
| 合併方式 | rel-L2(%) | 對應含義 |
|---|---|---|
| 兩個 partial 直接相加 | 2618 | 把不同外層尺度的輸出混在一起 |
| 分別乘回各自 gs,再相加 | 6.0 | 恢復逐 tile 的實際貢獻 |
| 運行尺度 ratio 補償,最後乘回 gs | 6.0 | 用遞推形式完成同一尺度換算 |
實現流程與開銷
融合原型面向 SM100(Blackwell)的 CuTeDSL 核。FC1 在 TMEM 中完成該片 gate/up 的累加,隨後轉入寄存器執行 SwiGLU、絕對值 rowmax 與量化,並把 running amax 寫入工作區。FC2 直接消費 E2M1 數據和 E4M3 block scale;epilogue 把 partial 從 TMEM 取出,在寄存器或 SMEM 中補償合併。正常數範圍下的核心流程為:
輸入 X、W_FC1、W_FC2
初始化 gamax = 0、gs_prev = 0、O = 0
for 每個 FC2 K-tile i:
FC1 完成對應 gate/up 片的歸約 → SwiGLU → P_i
rowmax = max(|P_i|);gamax = max(gamax, rowmax)
若 gamax = 0:本行當前貢獻為零,跳過計算
gs = gamax / 2688
按 16 元素 block 生成 E4M3 bs 與 E2M1 q
FC2 塊縮放 MMA → ΔO_i(包含 block scale,不包含 gs)
O = O × (gs_prev / gs) + ΔO_i
gs_prev = gs
Y = O × gs_prev × gs_W2;全零行輸出零
SwiGLU 輸出可能為負,rowmax 必須使用 max(|P|)。全零行或全零 block 需顯式設置 q=0,避免 0/0;非零 block 的 scale 若發生下溢,也應按量化器的零值規則處理並統計相應誤差。
這條路徑避免寫讀完整 FP32 中間激活,但輸出累加器 O 需要在 TMEM 外維護,每個 K-tile 都有 partial 搬運與 merge。補充的 B200、Qwen3-30B-A3B 形狀測試記錄中,原型相對 TE 非融合兩級鏈快 4–8×,精度接近 TE 兩級路徑;與融合單級路徑相比,512-token 小 batch 的 merge 成本更明顯,4096-token 負載下差距約為 5%。這使 prefill 和較大 batch 成為更適合繼續評估的負載。該原型形狀測試與第 6 節 B300 的完整 learner 測試分別計量。
6. 實驗:從數值正確性到完整執行收益
本節驗證前述實現選擇:先檢查量化、接口、矩陣乘法和梯度的正確性,再評估長期學習效果,最後依次測量完整訓練更新、模塊、推理服務與在線 RL 階段的成本。各組實驗既給出結果,也説明這些結果如何影響實現選擇。
主文展示關鍵趨勢和核心結果,完整形狀、梯度、重複運行與配置數據附在相應小節。網頁版可按標題查看詳細數據;打印時,這些數據集中列入附錄 C。
6.1 實驗設置與證據邊界
本節報告 miniTE 的系統性能;TRIAGE 的算法效果見第 3 節。性能測試模型為 Qwen3-30B-A3B,單節點 8×B300,TP/PP/CP/EP 為 1/1/1/4。訓練端測試使用 sequence4096、微批次1、GBS128,每次更新處理 524,288 token,共享檢查點、seed 和凍結 DAPO 文本。模塊、訓練端、推理服務及在線 RL 階段具有各自計時範圍。
| 實驗 | 直接檢驗的問題 | 計時或數值邊界 |
|---|---|---|
| 量化/API/GEMM/梯度 | 優化是否改變數值?誤差來自編碼、縮放因子還是計算? | 參考內核或 FP32 golden;同輸入比較 |
| 長期訓練與任務評測 | 配置能否持續有效學習? | 訓練軌跡和同檢查點的獨立評測 |
| 模塊前向 / 直接 F+B | 局部實現收益與反向成本在哪裏? | 量化與專家 GEMM;dispatch 不計入 |
| 固定文本訓練端 update | 局部優化能否進入完整訓練更新? | 前向、反向、通信、優化器及數據加載 |
| 固定輸出推理服務 | 低精度採樣容量提高多少? | 八推理實例輸出吞吐;不含訓練端或同步 |
| 在線 RL 階段 | 計算收益被什麼系統成本消耗? | logprob+actor train 與轉換/同步分開記錄 |
D3 · 實驗配置、前後向精度及統計單位
| 配置 | 前向路徑 | 反向/量化範圍 | 比較用途 |
|---|---|---|---|
| TE BF16 | TE BF16 GroupedLinear | BF16 | 高精度參考與性能基線 |
| TE NVFP4 | TE 原生 per-tensor NVFP4 | 所測原生精度配方;非專家層 BF16 | 既有 NVFP4 路徑 |
| miniTE CUTLASS | 自研 CUTLASS NVFP4 | 分別測 MXFP8 與 BF16 反向 | 自研路徑與精度選擇 |
| miniTE per-token | 基於 PR #3045 的 per-token NVFP4 | 分別測 MXFP8 與 BF16 反向;僅量化專家層 | per-token 路徑及優化鏈 |
| TE per-token | 固定上游 per-token 實現 | 模塊前向同一精度配方;全模型測試的範圍/反向另見邊界 | 模塊實現參考與配置計時參照 |
表 6-1:比較身份。兩條 miniTE 路徑均保留 MXFP8 和 BF16 反向;主要訓練端配置使用 BF16 反向。
- 模塊使用五次獨立進程運行,各次運行在穩態 block 上取中位數;4k/16k/64k/128k 指每 rank、dispatch 前 token 規模。
- 核心訓練端使用十次獨立運行,每次運行執行 20 次更新;前五次預熱,第 6–15 次更新測量。吞吐和配對速度比各按自己的序列去最高/最低再平均。
- 完整優化鏈每個配置運行一個進程,共 17 次更新;前兩次預熱,其餘 15 次耗時去掉最大值和最小值後,取 13 次平均耗時換算吞吐。這 13 次更新屬於同一個進程。
- 核心版為 miniTE953f17f9;優化輪為 b641179,包含 dense、GEMM-kind 與 fusion。TE 的零專家處理更新和運行3 干擾見附錄 A.3。
6.2 正確性與學習:數值選擇是否保持預期行為?
6.2.1 量化、API、GEMM 與梯度分別驗證
我們先在局部邊界確認數值,再進入完整訓練。對 API 和佈局優化,比較固定精度配方下的編碼、縮放因子與輸出;對量化計算,與反量化後 FP32 參考比較;對反向,以直通估計(STE)語義的 FP32 梯度檢查方向、幅度及符號。這樣能區分“格式固有誤差”與“優化新增誤差”。
miniTE per-token 的 dense quant 與 grouped GEMM 完成 28/28 項逐位等價檢查,fused 佈局在七個合成及真實激活用例上也沒有額外偏差。這些檢查表明,在所測配置下,數據佈局優化保持了原有量化結果。
D4 · 8 類算子路徑與參考實現對應關係
| 類別 | 算子 / 路徑 | 測試目標 | 參考實現 / 判定口徑 |
|---|---|---|---|
| miniTE CUTLASS | group_quantize_nvfp4_pertoken_swizzled | 激活 per-token NVFP4 量化 | 與逐分組參考內核 bit-exact;dequant 行為符合 FP4/E4M3 縮放因子語義 |
| miniTE CUTLASS | group_quantize_nvfp4_tensor_global_packed | 權重 per-tensor/global NVFP4 打包 | FP4 data 與 swizzle 佈局的縮放因子 對齊 逐專家 quantize_weight_nvfp4_swizzled |
| miniTE CUTLASS | grouped_cutlass_gemm_v2 / v2_evt | FP4 grouped GEMM | dequant 後 FP32 GEMM golden |
| CUTLASS 端到端 | miniTE CUTLASS GroupedLinear | 模塊級前向與反向 | 純 BF16 grouped matmul / fp32 golden 梯度 |
| miniTE per-token | nvfp4_per_token_group_quantize_bulk_dense | TE per-token group quant dense API | PR#3045 list API,要求 bitwise identical |
| miniTE per-token | nvfp4_cutlass_grouped_per_token_gemm_dense | TE per-token grouped GEMM dense API | PR#3045 list API,要求 bitwise identical |
| miniTE per-token | fused swizzle / unfused swizzle | 縮放因子佈局融合是否引入額外數值偏差 | fused 與 unfused 端到端 bit-exact |
| 兩條 miniTE 路徑的反向 | dgrad / wgrad | 訓練反向梯度正確性 | fp32 golden 梯度;STE 語義下 cosine 預期 > 0.99 |
表 6-2:正確性檢查的對象與參考。
D5 · 極端輸入、subnormal 與縮放因子歸零行為
| 測試項 | 結果 | 説明 |
|---|---|---|
| CUTLASS 激活量化與權重打包 | 50 passed | 包含新增 16 個極端用例,8 個 bench 用例 deselected |
| per-token dense 量化極端輸入 | 8 passed | 覆蓋 miniTE per-token dense quant 的極端輸入 |
| CUTLASS 權重佈局參數迴歸 | 8 passed | 既有 bit-exact 迴歸未受影響 |
表 6-3:極端輸入工程迴歸。Passed 數量描述實際用例覆蓋,不作為模型訓練穩定性或統計顯著性的證據。
- 激活 per-token 量化:FP4 數據及縮放因子與逐分組參考逐位一致;極大值、接近 BF16 max、subnormal 和混合量級輸入不產生 NaN/Inf。Subnormal 行的全局縮放因子可能 FTZ 到零,對應歸零行為。
- 權重 per-tensor/global 打包:編碼和 swizzled 縮放因子對齊 逐專家參考;subnormal 專家保留約 9e-41 量級輸入,Rel-L2 約 1.56e-2。全局縮放因子檢查採用 3%相對容差,而非宣稱全部浮點縮放因子逐位一致。
- miniTE per-token dense per-token quant:q_row、塊縮放因子與 row_amax 對齊上游 list 路徑;極小行可因 塊解碼縮放因子下溢歸零。所測生產路徑要求 m_splits 為 128 的倍數。
不同路徑的歸零行為取決於縮放因子的計算方式和浮點數下溢處理。
FP32 epilogue 的選擇也有直接數據依據。miniTE CUTLASS 普通 grouped GEMM 與 EVT 路徑都與 dequant 後的 FP32 golden 比較:
| 內核 | cosine | max_abs | norm_rmse |
|---|---|---|---|
grouped_cutlass_gemm_v2 | ≥ 0.999994 | ≤ 0.0156 | ≤ 0.0033 |
grouped_cutlass_gemm_v2_evt | ≥ 0.999999 | ≤ 0.0078 | ≤ 4e-5 |
表 6-4:miniTE CUTLASS GEMM 精度。EVT 將 norm_rmse 上限從約 0.0033 降至 4e-5 量級,支持在該路徑使用高精度 epilogue。
GroupedLinear 與純 BF16 前向的 cosine 約 0.99095、norm_rmse 約 0.135,明顯大於 GEMM 對自身 dequant 參考的誤差。前者包含 FP4 信息損失,後者用於檢查 GEMM 實現;這兩種參考實現不能混為一個“精度”指標。
BF16 反向的 dgrad/wgrad 與 BF16 參考基本重合,最大相對 L2 約 0.001663;MXFP8 反向的相對 L2 約 0.03765,符號一致率約 98.8%。這給第 4 節獨立選擇反向精度提供了數值依據,運行成本則在§6.4 比較。
D6 · 兩條 miniTE 路徑的完整梯度矩陣:cosine、Rel-L2、sign%與專家指標
| Backend | 反向口徑 | dgrad cosine(最小) | dgrad rel-L2(最大) | dgrad 符號一致率(最小) | wgrad cosine(最小) | wgrad rel-L2(最大) | wgrad 符號一致率(最小) | 專家 cosine(最小) |
|---|---|---|---|---|---|---|---|---|
| miniTE CUTLASS | MXFP8 bwdquant | 0.999292 | 0.037626 | 98.802% | 0.999291 | 0.037653 | 98.802% | 0.999287 |
| miniTE per-token | MXFP8 bwdquant | 0.999292 | 0.037626 | 98.802% | 0.999291 | 0.037653 | 98.802% | 0.999287 |
| miniTE CUTLASS | BF16 反向 | 0.999999 | 0.001660 | 100.000% | 0.999999 | 0.001663 | 100.000% | 0.999998 |
| miniTE per-token | BF16 反向 | 0.999999 | 0.001660 | 100.000% | 0.999999 | 0.001663 | 100.000% | 0.999998 |
| BF16 torch 對照 | BF16 matmul | 0.999999 | 0.001660 | 100.000% | 0.999999 | 0.001663 | 100.000% | 0.999998 |
表 6-5:多個隨機種子與形狀 的最差梯度指標。參考為 、 的 FP32 計算。100%符號一致不表示與 FP32 逐位相等。
D7 · dense 接口與 fused/unfused 縮放因子佈局的數據
| 測試對象 | Shape 覆蓋 | 結果 |
|---|---|---|
nvfp4_per_token_group_quantize_bulk_dense | small、8 experts、32 experts、極端輸入 | q / 縮放因子 / amax 全部 bitwise identical |
nvfp4_cutlass_grouped_per_token_gemm_dense | small、fc1-ish、fc2-ish | GEMM 輸出 bitwise identical,max_abs = 0 |
表 6-6:Dense 接口的 shape 覆蓋與結果。
| Case | fused vs unfused Rel-L2 | cosine | max_abs | FP4 data mismatch | 縮放因子 mismatch |
|---|---|---|---|---|---|
| synthetic 多 seed / 多 token 數 | 0 | 1.0 | 0 | 0 / 96 groups | 0 / 96 groups |
| real dump | 0 | 1.0 | 0 | 0 / 12 groups | 0 / 12 groups |
表 6-7:Fused/unfused 輸出與中間量差異。miniTE per-token 的生產路徑與早期實驗路徑使用不同的形狀約束;表中給出生產路徑的獨立檢查結果。
6.2.2 長期學習的補充驗證
圖 5 比較 BF16+TIS、原生 NVFP4+TIS 和 miniTE+TIS。miniTE 在前 1,000 步保持獎勵增長,後期高於原生 NVFP4,BF16 在該區間取得更高獎勵。兩個 NVFP4 配置的平均對數概率差接近,但學習軌跡不同。因此,平均 gap 不能單獨充當任務效果的替代指標。
miniTE 實用路徑的訓練曲線
可交互圖 5:miniTE 實用路徑與對照的學習動態。每個配置一條運行,比較第 0–999 步;左側為平均絕對對數概率差,右側為獎勵。細線為原始值,實線為居中的 21 步均值。三個配置均使用 TIS;該圖與嚴格執行參考屬於不同實驗。
這組補充長訓使用 Qwen3-30B-A3B-Base,BF16、原生 TE NVFP4 和 miniTE 均採用 TIS,routing replay 關閉。表 6-8 給出相同第 999 步檢查點的四項數學任務和 IFEval 指令遵循評估 [11,12,13,14]。每個 AIME 評測任務平均六輪評測,MATH-500、GSM8K 和 IFEval 分別平均四輪;IFEval 使用 Prompt-level Strict accuracy。BF16 檢查點使用 BF16 推理,兩個 NVFP4 檢查點使用 NVFP4 推理。
| 配置 | AIME24 | AIME25 | MATH-500 | GSM8K | IFEval | 五任務平均 |
|---|---|---|---|---|---|---|
| BF16 + TIS | 41.11% | 31.11% | 90.05% | 93.57% | 38.36% | 58.84% |
| TE NVFP4 + TIS | 26.67% | 20.56% | 86.90% | 94.71% | 43.99% | 54.57% |
| miniTE + TIS | 36.67% | 24.44% | 87.45% | 94.79% | 38.40% | 56.35% |
| miniTE 相對 TE NVFP4 的增量 | +10.00 | +3.88 | +0.55 | +0.08 | −5.59 | +1.78 |
表 6-8:補充長訓中第 999 步檢查點的任務成績。最後一行為百分點差。五任務等權,不按評測輪數加權;重複評測同一個檢查點不構成多個獨立訓練種子。
miniTE 相對原生 NVFP4 改善了四項數學成績,五任務平均提升 1.78 個百分點,與 BF16 仍相差 2.49 個百分點。IFEval 的排序不同:miniTE 與 BF16 接近,但低於原生 NVFP4。該結果支持實用數值路徑在所測數學訓練任務上的改善,同時表明收益並非對所有下游任務一致。
這組結果補充了框架的長期訓練驗證。它與第 3 節 TRIAGE 的任務集合、訓練步數和評測協議不同,分別用於描述對應配置的學習效果。
6.3 完整訓練更新:局部改動能否降低整個更新成本?
表 6-9 彙總十次獨立運行的主測試,比較 BF16、TE 原生 NVFP4 和 miniTE。兩條 miniTE 路徑的結果同時展示反向精度選擇對完整訓練更新吞吐的影響。
| 配置 | token/s,十次運行截尾均值 | 相對 BF16 的配對速度比 |
|---|---|---|
| TE BF16 | 24,192 | 1.000× |
| TE NVFP4 | 23,294 | 0.959× |
| miniTE CUTLASS,MXFP8 反向 | 27,607 | 1.148× |
| miniTE CUTLASS,BF16 反向 | 33,140 | 1.369× |
| miniTE per-token,BF16 反向 | 32,517 | 1.334× |
表 6-9:完整訓練更新吞吐。速度比先按運行配對再截尾,計時含前向、反向、通信、優化器和數據加載,不含採樣或權重同步。
完整訓練更新的吞吐與重複測試
可交互兩條 miniTE 路徑的 BF16 反向取得約 1.33–1.37×BF16 速度,TE NVFP4 接近 BF16 量級。miniTE CUTLASS 從 MXFP8 改為 BF16 反向後進一步提高吞吐,説明更低位寬 GEMM 可能被反向量化與準備成本抵消。相對 TE NVFP4,miniTE per-token 的聚合吞吐均值比約 1.396×。1.344×是 miniTE per-token/TE BF16 聚合均值比,與這裏 1.334×的配對估計量不同。
D8 · 十次獨立運行、截尾統計與運行差異
| 運行 | TE BF16 | TE NVFP4 | miniTE CUTLASS MXFP8 反向 | miniTE CUTLASS BF16 反向 | miniTE per-token BF16 反向 |
|---|---|---|---|---|---|
| 0 | 25545.3 | 25863.2 | 30070.0 | 31196.6 | 33463.5 |
| 1 | 24530.5 | 23653.1 | 27773.2 | 34662.4 | 31416.6 |
| 2 | 23384.9 | 23291.4 | 27501.7 | 33288.5 | 34428.9 |
| 3 | 23802.7 | 20997.8 | 24865.7 | 29218.7 | 28959.3 |
| 4 | 23437.2 | 23473.3 | 26551.5 | 34777.1 | 32164.2 |
| 5 | 25292.7 | 21553.5 | 27759.3 | 31109.0 | 32828.9 |
| 6 | 24352.1 | 22381.7 | 26508.3 | 34214.7 | 30948.3 |
| 7 | 22730.2 | 23138.2 | 25925.8 | 32078.5 | 33315.1 |
| 8 | 23191.5 | 26672.6 | 28769.0 | 33794.5 | 32159.6 |
| 9 | 26277.9 | 22993.5 | 34352.4 | 36279.4 | 33835.6 |
| 截尾均值 | 24192.1 | 23293.5 | 27607.4 | 33140.2 | 32516.5 |
表 6-10:各次運行的完整吞吐結果,顯示一位小數;主文彙總顯示整數。
運行3 曾有空閒推理服務進程佔用資源,其量化變體最低值按預先固定的截尾規則剔除。初期與後續 TE 版本處理零 token 專家的行為不同,非空 group 路徑進行了對應檢查。配置按運行編號配對,不宣稱同一時刻運行。配對截尾與聚合均值相除是兩個估計量,不能混用。
數據:十次運行記錄;運行與版本説明。
D9 · 早期三次運行與預留顯存記錄
| 配置 | 早期運行 token/s | 峯值預留(原記錄 MB) |
|---|---|---|
| TE BF16 | 25,545 / 24,531 / 23,385 | 119,914 |
| TE NVFP4 | 25,863 / 23,653 / 23,291 | 122,672 |
| miniTE CUTLASS MXFP8 反向 | 30,070 / 27,773 / 27,502 | 144,598 |
| miniTE CUTLASS BF16 反向 | 31,197 / 34,662 / 33,289 | 137,778 |
| miniTE per-token MXFP8 反向 | 27,493(僅運行0) | 138,458 |
| miniTE per-token BF16 反向 | 33,464 / 31,417 / 34,429 | 133,398 |
表 6-11:早期運行與其峯值預留顯存,單位沿用原記錄 MB;不與後續不同協議的 GiB 數值混合彙總。miniTE per-token MXFP8 反向只有單次運行參考。
miniTE per-token 相對部分 miniTE 變體減少預留顯存,但仍高於這裏的 BF16。保存高精度操作數、量化權重緩存、工作區和填充都影響完整佔用;FP4 位寬不是整體顯存下降的充分依據。
後續完整優化鏈進一步連接 dense 路徑、GEMM-kind、permutation fusion 和 amax 複用,miniTE per-token BF16 反向達到 33,540 token/s,即同輪 BF16 的 1.39×、TE NVFP4 的 1.47×。它是不同版本、不同協議的一輪組合測試:
D10 · 完整融合輪的全部配置與計時口徑
| 配置 | 融合輪 token/s | 同輪 BF16 速度比 |
|---|---|---|
| TE BF16 | 24,134 | 1.000× |
| TE NVFP4 | 22,801 | 0.945× |
| miniTE CUTLASS,MXFP8 反向 | 25,505 | 1.057× |
| miniTE CUTLASS,BF16 反向 | 33,065 | 1.370× |
| miniTE per-token,MXFP8 反向 | 26,516 | 1.099× |
| miniTE per-token,BF16 反向 | 33,540 | 1.390× |
表 6-12:單進程優化輪,每配置一個進程;15 次測量耗時去極值求均值後換算吞吐,保留全部配置。該輪 miniTE CUTLASS MXFP8 反向為 25,505 token/s,低於獨立核心測試的 27,607;協議不同,因此不把 fusion 泛化為穩定加速。
相比核心 miniTE per-token 的 32,517 token/s,33,540 高約 3.1%,但版本、dense/GEMM 配置及 fusion 同時變化。該差值描述組合運行,不能單獨歸因於 amax 或 GEMM-kind。原“gemm_kind 變慢”的錯誤歸因已在版本核查後更正。
關鍵結果 · §6.3兩條 miniTE 路徑的 BF16 反向配置取得約 1.33–1.37× BF16 的完整訓練更新速度。
6.4 模塊與實現:為什麼前向更快,F+B 卻未必更快?
完整訓練更新已經測得收益,我們再用模塊實驗解釋它。圖 6 可切換 FC1/FC2,並選擇前向、直接 F+B 或二者疊加;F+B 使用直接計時結果:
GroupedLinear前向與直接F+B趨勢
可交互圖 6:Qwen3-30B-A3B GroupedLinear,B300、預熱靜態權重、五次運行。實線為前向,虛線為直接 F+B;圖中兩條 miniTE 路徑使用本輪量化反向。橫軸是 dispatch 前 token 規模,不能把該均衡負載等同於完整模型路由。
miniTE per-token 相對 BF16 前向約快 1.09–1.43×,圖中的 F+B 卻慢於 BF16。開啓 BF16 反向後,miniTE per-token 相對自身 MXFP8 反向的 F+B 約快 1.2–1.3×。因此,反向精度應根據完整算子的實測成本選擇。
模塊成本隨負載與反向精度變化
可交互D11 · FC1/FC2 × 4 種規模:前向與直接 F+B 完整毫秒錶
前向
| 模塊 | 配置 | 測量 | 4k ms | 16k ms | 64k ms | 128k ms |
|---|---|---|---|---|---|---|
| FC1 | TE BF16 | 前向 | 0.504 | 0.515 | 0.801 | 1.329 |
| FC1 | TE NVFP4 | 前向 | 1.295 | 1.349 | 1.250 | 1.327 |
| FC1 | miniTE CUTLASS | 前向 | 0.336 | 0.396 | 0.895 | 1.508 |
| FC1 | miniTE per-token | 前向 | 0.372 | 0.424 | 0.582 | 0.932 |
| FC2 | TE BF16 | 前向 | 0.542 | 0.508 | 0.546 | 0.820 |
| FC2 | TE NVFP4 | 前向 | 1.428 | 1.190 | 1.281 | 1.244 |
| FC2 | miniTE CUTLASS | 前向 | 0.339 | 0.355 | 0.677 | 1.111 |
| FC2 | miniTE per-token | 前向 | 0.389 | 0.415 | 0.565 | 0.753 |
MXFP8 反向對應的直接 F+B
| 模塊 | 配置 | 測量 | 4k ms | 16k ms | 64k ms | 128k ms |
|---|---|---|---|---|---|---|
| FC1 | TE BF16 | fwb | 2.461 | 2.543 | 2.572 | 4.309 |
| FC1 | TE NVFP4 | fwb | 4.174 | 3.986 | 4.011 | 4.583 |
| FC1 | miniTE CUTLASS | fwb | 4.006 | 3.987 | 3.923 | 5.631 |
| FC1 | miniTE per-token | fwb | 3.712 | 3.830 | 3.771 | 4.989 |
| FC2 | TE BF16 | fwb | 2.959 | 2.994 | 2.933 | 4.592 |
| FC2 | TE NVFP4 | fwb | 4.604 | 4.790 | 4.802 | 5.414 |
| FC2 | miniTE CUTLASS | fwb | 4.147 | 3.916 | 3.881 | 5.417 |
| FC2 | miniTE per-token | fwb | 3.875 | 3.915 | 3.907 | 5.056 |
BF16 反向對應的直接 F+B
| 模塊 | 配置 | 測量 | 4k ms | 16k ms | 64k ms | 128k ms |
|---|---|---|---|---|---|---|
| FC1 | miniTE CUTLASS | fwb | 2.975 | 2.966 | 3.253 | 5.473 |
| FC1 | miniTE per-token | fwb | 2.964 | 2.992 | 3.018 | 4.869 |
| FC2 | miniTE CUTLASS | fwb | 2.908 | 2.913 | 2.958 | 4.936 |
| FC2 | miniTE per-token | fwb | 3.158 | 2.943 | 3.088 | 4.636 |
表 6-13:各配置對應的五次運行的中位數,保留三位小數。不同反向表不混合;TE BF16/TE NVFP4 沒有該 BF16 反向補測行時顯示在原配置表。
| 配置 | TE BF16 | TE NVFP4 | miniTE CUTLASS | miniTE per-token |
|---|---|---|---|---|
| 128k FC1 峯值預留 GiB | 7.39 | 6.91 | 8.65 | 8.76 |
這裏的顯存佔用在模塊測試中測量,受計時方式和權重緩存設置影響;訓練端峯值顯存另行統計。
原始數據:主模塊記錄、BF16反向記錄。
D12 · miniTE per-token 對 TE 原生 NVFP4 的模塊速度比
| 模塊 | 模式 | 4k | 16k | 64k | 128k |
|---|---|---|---|---|---|
| FC1 | 前向 | 3.48x | 3.18x | 2.15x | 1.42x |
| FC1 | F+B | 1.12x | 1.04x | 1.06x | 0.92x |
| FC2 | 前向 | 3.67x | 2.87x | 2.27x | 1.65x |
| FC2 | F+B | 1.19x | 1.22x | 1.23x | 1.07x |
表 6-14:miniTE per-token/TE NVFP4 的對應配置速度比,>1 表示 miniTE per-token 更快。F+B 使用各自記錄的反向路徑;128k FC1 處並非所有比較都領先。
固定相同前向精度配方後,miniTE per-token 對上游 TE per-token 的專家層前向幾何平均為 2.46×,直接 F+B 為 1.10×。兩者差距提示實現收益主要在前向調用和準備鏈。輸入在計時前完成置換,FC2 激活也在計時區間外準備;模塊計時不包含 token 分發。
D13 · miniTE per-token/TE per-token 的逐錨點實現增量和 amax 消融
| 模塊 | 模式 | 錨點 | TE per-token | miniTE per-token | miniTE per-token speedup |
|---|---|---|---|---|---|
| FC1 | 前向 | 4k / 16k / 64k / 128k | 1.128 / 1.094 / 1.275 / 1.479 | 0.372 / 0.424 / 0.582 / 0.932 | 3.03x / 2.58x / 2.19x / 1.59x |
| FC1 | F+B | 4k / 16k / 64k / 128k | 3.873 / 3.916 / 3.846 / 5.066 | 3.712 / 3.830 / 3.771 / 4.989 | 1.04x / 1.02x / 1.02x / 1.02x |
| FC2 | 前向 | 4k / 16k / 64k / 128k | 1.193 / 1.043 / 1.555 / 1.747 | 0.389 / 0.415 / 0.565 / 0.753 | 3.06x / 2.52x / 2.75x / 2.32x |
| FC2 | F+B | 4k / 16k / 64k / 128k | 4.603 / 4.507 / 4.488 / 6.234 | 3.875 / 3.915 / 3.907 / 5.056 | 1.19x / 1.15x / 1.15x / 1.23x |
表 6-15:模塊延遲和速度比,五次運行。數值等價檢查固定前向精度配方;環境與反向設置見本節實驗配置。
Amax skip-K1 模擬在多數規模持平或略慢,範圍約 0.81–1.11×。這一模擬未計 producer 收益,也保留準備開銷,不能由它單獨否定或證明完整 producer–consumer 融合。Dense 佈局與其他優化組合測量,其單獨貢獻尚無對應消融。
| module | mode | 錨點 | miniTE per-token amax off | miniTE per-token amax on | on vs off |
|---|---|---|---|---|---|
| fc1 | 前向 | 4k | 0.372 | 0.459 | 0.81x |
| fc1 | 前向 | 16k | 0.4241 | 0.4586 | 0.925x |
| fc1 | 前向 | 64k | 0.5823 | 0.6166 | 0.944x |
| fc1 | 前向 | 128k | 0.9319 | 0.8365 | 1.114x |
| fc1 | fwb | 4k | 3.7122 | 3.8659 | 0.96x |
| fc1 | fwb | 16k | 3.8303 | 3.8542 | 0.994x |
| fc1 | fwb | 64k | 3.7713 | 3.8175 | 0.988x |
| fc1 | fwb | 128k | 4.9888 | 4.9196 | 1.014x |
| fc2 | 前向 | 4k | 0.3894 | 0.4017 | 0.969x |
| fc2 | 前向 | 16k | 0.4145 | 0.4407 | 0.941x |
| fc2 | 前向 | 64k | 0.5655 | 0.5927 | 0.954x |
| fc2 | 前向 | 128k | 0.7534 | 0.7842 | 0.961x |
| fc2 | fwb | 4k | 3.8746 | 3.9556 | 0.98x |
| fc2 | fwb | 16k | 3.9151 | 3.995 | 0.98x |
| fc2 | fwb | 64k | 3.9069 | 3.8958 | 1.003x |
| fc2 | fwb | 128k | 5.0562 | 5.1263 | 0.986x |
表 6-15b:miniTE per-token 模塊級 skip-K1 模擬。統計量來自對應模塊測試;producer 收益不計入此表。
數據及原始運行:模塊消融記錄。
D14 · 上游 TE per-token 完整模型計時:保留數據與配置邊界
| 配置 | tokens/s(3 trials) | paired speedup vs TE per-token | max 預留 (MB) |
|---|---|---|---|
| TE per-token | 23125 / 23150 / 22346 | — | 122572 |
| TE BF16 | 25545 / 24531 / 23385 | 1.06x | 119914 |
| TE NVFP4 | 25863 / 23653 / 23291 | 1.04x | 122672 |
| miniTE per-token (mxfp8-bwd) | 27493(運行0 參考) | 1.19x(運行0 配對) | 138458 |
| miniTE per-token (bf16-bwd) | 33464 / 31417 / 34429 | 1.45x | 133398 |
表 6-16:三次運行的完整模型對照。約 1.45×是這兩套配置的計時比,不是固定精度配置下的純實現收益。
TE per-token 量化範圍覆蓋非專家層,反向為其原生 NVFP4 per-token;miniTE per-token 為僅量化專家層,分別採用 MXFP8/BF16 反向。TE per-token 測試還記錄 grad norm 約 1e8–1e11,clipping 後實際更新很小。計時與學習行為一起保留,不能把這行速度比包裝為等價學習路徑的收益。
詳見TE per-token完整模型記錄。
性能分析結果解釋了局部到整體的變化:host 參數準備、分組調用間隙、專家通信與非 GEMM 運算共同影響更新時間。連續佈局減少了計算周圍的組織工作,模型測試則計入真實路由和外圍成本。
D15 · 代表性 profile:多 tensor 調用與 grouped GEMM 路徑
Dispatch/路由對下游 GEMM 調度的影響。 在補充記錄的 Step 8 第一個 microbatch 中,真實權重與真實輸入的路由較均勻,隨機權重與隨機輸入的 mock 路由則高度集中。兩者每 rank 都輸入 4,096 tokens、top-k=8,EP 組內 routed tokens 均為 131,072,因此這裏先比較相同 token 預算下的專家分佈:
| 負載指標 | Real | Mock | 解釋 |
|---|---|---|---|
| 有 token 的 experts | 126/128 | 24/128 | Mock 的 token 集中到少數專家 |
| 零 token experts | 2 | 104 | 參與計算的專家數不同 |
| GroupedLinear M 的 CV | 0.19 | 0.66 | 記錄中的 Real GEMM 行數分佈更均勻 |
M 是專家 GEMM 的 token 行數,CV 表示同一統計口徑下的標準差與均值之比;這裏沿用記錄中的 GroupedLinear M 統計,不從全局專家計數倒推 CV。參與計算的專家更多,會形成更多需要準備和調度的矩陣乘法問題;這部分開銷需要結合 host API 與 kernel 的 profile 觀察:
| 調用指標 | Real | Mock | 解釋 |
|---|---|---|---|
| cuBLASLt heuristic 次數 / 累計時間 | 14.8 萬 / 6.26 s | 3.2 萬 / 1.02 s | Real 調用次數約為 4.6× |
| heuristic 單次中位耗時 | 2.9 µs | 2.9 µs | 單次中位數接近,調用數量差異明顯 |
| nvte_multi_tensor_gemm 次數 / 中位耗時 | 4,608 / 2.29 ms | 4,590 / 0.44 ms | 調用數接近,Real 中位耗時約為 5.2× |
| nvjet kernel 次數 | 11.4 萬 | 0.46 萬 | Real 約為 25× |
第一張表定位到該 microbatch 的路由負載,第二張表保留配套 profile 的調用計數、累計時間與單次中位耗時;累計時間不解釋為這一個 microbatch 的牆鍾時間,也不與 GPU kernel 時間直接相加。
相同 token 預算被拆成更多 GEMM 問題。 對相同的專家矩陣形狀,主要 GEMM 算術量隨各專家 token 行數之和變化。Real 的 token 總量與 Mock 相同,卻分佈在 126 個活躍專家上,而 Mock 只有 24 個,因此 Real 的單專家平均 M 更小,有效問題條目更多。較低的 CV 説明這些問題之間更均衡,但算法準備和調度還取決於問題數量與粒度。許多較小 GEMM 更難攤薄每個問題的固定準備、啓動成本。
cuBLASLt 算法選擇在 host 側反覆執行。 原 profile 記錄將 BF16 的主要瓶頸定位到 AlgoGetHeuristic:多 stream 的 multi-tensor 路徑仍會多次執行算法選擇,同時準備各專家的形狀、佈局和調用參數。表中 heuristic 單次中位數都為 2.9 µs,Real 的調用次數卻約為 Mock 的 4.6×,説明額外代價主要來自這項工作的重複規模。外層 nvte_multi_tensor_gemm 調用次數接近,但一次調用內部處理的專家問題與準備工作不同,因而 Real 的調用中位耗時達到 2.29 ms,約為 Mock 的 5.2×。
更多細粒度 kernel 使提交鏈更長。 Real 的 nvjet kernel 次數約為 Mock 的 25×,表明同一 token 預算對應的 GPU 調用組織不同。若 CPU 端的算法選擇、參數準備和啓動提交成為瓶頸,增加 stream 數量也難以掩蓋 GPU 等待下一批任務的間隙,這就是該路徑中需要關注的 CPU bubble。這裏的計數直接支持重複準備和調度負擔增大;GPU 空檔具體佔多少時間,仍需由對應時間線量化。
Dense grouped GEMM 針對的是這段準備與調度鏈。 第 5 節的連續 buffer、device 側 offset/metadata 和預分配複用,讓多個專家問題沿統一的 grouped 調度路徑執行,減少 host 上逐專家切分、拼列表、參數構建及重複組織的工作。它既影響 GEMM 周圍的開銷,也影響完整調用時間,因此圖中的差異應結合實現路徑來理解。實際收益仍採用同口徑的模塊或 learner 計時;BF16 與低精度方案的比較都應以真實權重和真實路由負載為準。

性能分析截圖

性能分析截圖
圖 7:代表性的性能分析片段,用於觀察調用組織;兩張截圖自身未提供相同形狀、同一 timer 的配對協議,不用 3.594 ms 與 156µs 相除報告速度比。完整速度採用上述模塊/訓練端測試。
6.5 採樣與在線 RL:哪裏出現系統收益,哪裏仍有成本?
採樣端先在固定輸出工作量上測容量。八個推理實例使用 DAPO 真實 prompt,輸出固定 1024 token 且忽略 EOS,兩種配置分別掃描 concurrency 後都選擇 64:
| 配置 | 聚合輸出 token/s | 平均 TPOT | 吞吐比 |
|---|---|---|---|
| BF16 | 49,119.1 | 10.21 ms | 1.000× |
| NVFP4 | 80,675.8 | 6.05 ms | 1.642× |
表 6-17:固定輸出推理服務,BF16 為 Triton MoE,NVFP4 為 FlashInfer TRT-LLM/ModelOpt FP4 及 per-token scaling。它描述對應採樣棧,不隔離 miniTE 訓練算子的貢獻。
固定工作量下的採樣容量
可交互D16 · 八推理實例請求率、單推理實例吞吐和推理服務協議
| variant | BEST concurrency | final sum out tok/s | mean out / 推理實例 | sum req/s | mean TPOT | vs peer |
|---|---|---|---|---|---|---|
| NVFP4 | 64 | 80675.8 | 10084.5 | 78.78 | 6.05 ms | 1.64× vs BF16 |
| BF16 | 64 | 49119.1 | 6139.9 | 47.97 | 10.21 ms | baseline |
表 6-18:完整推理服務結果。固定輸出下 req/s 與 output token/s 對應同一工作量。
靜態顯存比例為 0.6,關閉分段 CUDA Graph;使用對話模板,不填充輸入,不限制請求速率,並清空緩存,上下文長度上限為 8192。先用 64 條提示詞在單個推理實例上掃描 1–96 的併發數,再以選定的併發數 64 在八個實例上運行 512 條提示詞。單實例掃描峯值約為 NVFP4 10206.8、BF16 6063.5 token/s;八實例聚合吞吐作為主結果。
完整 RL 還需要把訓練端和權重更新連接到生成。對於無重疊的順序流程,
存在重疊時以實測 wall time 為準。表 6-19 恢復 BF16、TE 原生 NVFP4 及 miniTE per-token 三個配置的已記錄階段:
| 配置 | 穩態步數 | Train s | 轉換/同步 s | 兩階段合計 s |
|---|---|---|---|---|
| BF16 | 11 | 47.04 | 9.94 | 56.98 |
| TE NVFP4 | 10 | 44.70 | 50.88 | 95.58 |
| miniTE per-token,BF16 反向 | 10 | 42.56 | 55.26 | 97.82 |
表 6-19:在線 RL 的階段均值。Train 含對數概率重算與 actor train;兩階段合計不是完整 iteration。TE NVFP4 使用其原生反向配置,miniTE per-token 顯式關閉反向量化。
計算收益與轉換同步成本
可交互miniTE per-token 的 Train 相對 BF16 約快 1.11×,TE NVFP4 約快 1.05×;轉換/同步卻分別約慢 5.56×和 5.12×。miniTE per-token 的兩階段成本增加 40.84 秒。本次實驗中,採樣提速未能抵消同步成本,因此後續優化需要同時減少轉換和傳輸開銷。
這組結果保留了一個有用的負面發現:低精度算子更快,不保證系統連接成本更低。獨立推理服務比值不能替代同運行窗口的採樣時間,兩階段相加也不能生成完整 RL 速度比。
D17 · 三組 RL 配置、樣本窗口與相對速度
公共配置為單節點 8×B300 共置部署、每採樣端推理實例一張 GPU。丟棄 perf id0–1;BF16 取 steps2–12(11 步),miniTE per-token/TE NVFP4 取各自 steps2–11(10 步),採用算術均值。
| 配置 | Train 相對 BF16 速度 | 同步時間/BF16 同步時間 | 前向/採樣 | 反向 |
|---|---|---|---|---|
| BF16 | 1.000× | 1.000× | BF16,Triton MoE | BF16 |
| TE NVFP4 | 1.052× | 5.119× | TE native 專家 NVFP4;ModelOpt/FlashInfer 採樣端 | 原生精度配方,未設置 DBQ |
| miniTE per-token | 1.105× | 5.559× | miniTE 專家 per-token;同 NVFP4 採樣端 | DBQ=1,BF16 |
表 6-20:時間比的方向明確。舊錶中的 0.90×是 miniTE per-token/BF16 的 Train 時間比,其速度比為倒數;不能當作整輪 RL 速度。TE NVFP4 與 miniTE per-token 採用同類 NVFP4 採樣配置,未重複測量同一推理服務表。
關鍵結果 · §6.5八推理實例固定輸出測試中,miniTE per-token 吞吐約為 BF16 的 1.64×。
6.6 實驗如何回答主線問題
這些實驗共同解釋了 miniTE 的實現選擇。算子與梯度檢查支撐接口、佈局和反向精度的選擇;模塊前向與完整前反向計時定位局部開銷;真實文本訓練驗證這些選擇能否降低完整更新成本;推理服務與在線 RL 測試進一步揭示權重轉換和同步的約束。
低比特訓練的收益因此需要在多個層次驗證:數值正確、持續有效學習、局部計算更快,以及系統連接成本可控。本文保留各層的核心數據和完整配置對照,性能結果統一採用 miniTE 測試記錄。
7. 使用與擴展 miniTE
7.1 通過線性層接口接入現有模型
miniTE 的工程包名為 miniTransformer,基本接入單位是線性層。Linear、LayerNormLinear 和 GroupedLinear 分別面向普通投影、歸一化與線性層組合,以及 MoE 專家計算。現有 Megatron 包裝類可以連接相應模塊,也可直接向層傳入具名配方生成的參數:
import torch
from miniTransformer.module.config import get_qlinear_params
from miniTransformer.module.linear import Linear
params = get_qlinear_params("nvfp4_per_token")
layer = Linear(
1024, 1024,
bias=False,
params_dtype=torch.bfloat16,
device="cuda",
qlinear_params=params,
)
選擇配方決定數值路徑,模塊替換決定模型中哪些層使用 miniTE。MoE 啓動腳本為對應 backend 同時設置這兩項。當前 GroupedLinear 對輸出維度與分組數據佈局有約束,且不支持 sequence parallelism;接入時應檢查具體模型和並行配置。
miniTE 保留面向 TE/Megatron 檢查點的參數命名與兼容接口。當前 extra-state 接口不恢復 TE 的全部內部量化狀態,因此參數加載兼容與完整內部狀態兼容需要分別驗證。
7.2 顯式選擇精度配方與精度邊界
v1.0.0 使用描述數值行為的配方名稱。用户可通過 MINITE_RECIPE 選擇訓練程序的配方,也可使用 get_qlinear_params 構造獨立配置和算子實例:
| 具名配方 | 前向與縮放 | 反向及用途 |
|---|---|---|
nvfp4_per_token | NVFP4 per-token;TE 權重縮放 | MXFP8 反向;首次使用示例 |
nvfp4_per_token_bf16_bwd | NVFP4 per-token | 專用 TE-style BF16 反向算子 |
nvfp4_cursor2_cutlass_v2 | 激活 per-token,權重 per-expert tensor amax;CUTLASS V2 | MXFP8 反向;自研 grouped 路徑 |
nvfp4_block | NVFP4 block scaling | NVFP4 反向;塊縮放配方 |
nvfp4_per_token_w_per_tensor | per-token 激活與 per-expert tensor weight amax | 權重縮放消融 |
unquantized | 實際 dtype 由層參數決定 | 關閉量化,用於高精度對照 |
表 9:v1.0.0 的部分具名配置入口。性能實驗仍沿用其源碼 revision、前後向精度和量化覆蓋;配方名稱用於當前軟件的選擇。
在已接入的訓練程序中,可以顯式選擇:
MINITE_RECIPE=nvfp4_per_token python train.py
這裏 train.py 表示用户自己的訓練入口。按當前命名方式表達報告中 miniTE per-token 的 BF16 layer bypass 路徑時,訓練端的選擇為:
MINITE_RECIPE=nvfp4_per_token DISABLE_BACKWARD_QUANT=1 python train.py
這一 layer bypass 與 nvfp4_per_token_bf16_bwd 的專用反向算子分別實現和記錄。第 6 節兩條 miniTE 路徑的速度結果對應原實驗路徑;專用算子的性能需要使用它自身的測量。重現歷史實驗時,還應使用原 revision 的啓動配置,並固定採樣端量化、檢查點轉換、僅量化專家層範圍與 TE revision。
7.3 將診斷能力作為擴展過程的一部分
配置檢查從運行模型前開始。以下命令在 miniTransformer 倉庫根目錄執行:
python -m miniTransformer recipes
python -m miniTransformer describe nvfp4_per_token
python -m miniTransformer doctor --recipe nvfp4_per_token
bash develop/script/moe_training_e2e.sh \
--backend mini_nvfp4_per_token --profile off --dry-run
recipes 與 describe 無需安裝 Torch 或 TE,即可查看名稱、依賴和當前反向覆蓋。doctor 檢查可見 CUDA GPU、TE quantizer 參數、所選 dense/list 分組接口及算子導入。--dry-run 顯示配方、相關環境變量和完整啓動命令後退出,不啓動訓練或創建日誌與緩存目錄。正常運行將配方名稱、前後向設置、佈局請求和配置來源寫入 run_meta.json。
本輪配置入口的 21 項 CPU 兼容檢查覆蓋解析、配置衝突、無 GPU 依賴查詢、啓動別名、dry-run 和元數據記錄,均已通過。新增的 GPU 等價測試覆蓋配置實例獨立性、支持路徑上的 Dense/GroupedLinear 前後向,以及兩種 BF16 反向選擇;本輪本機尚未執行這些測試。第 6 節的數值與性能結果保留其原實驗身份。
擴展低精度路徑時,我們先檢查單算子輸出,再檢查模塊和跨端結果,最後運行完整訓練。數值鈎子採集激活、權重、輸出和梯度;性能工具定位內核、調用間隙和分配;dump/compare 腳本比較 MoE 中間量與 token 對數概率。新配方在註冊表中説明用途與依賴,在現有參數工廠中接入算子,再沿這條流程檢查數值行為和運行成本。
構建、模塊接入與啓動示例由倉庫 README 承接,雙語配方手冊提供完整選擇與覆蓋規則。模型轉換、採樣和評測需固定各自的版本與運行條件;當前軟件入口和歷史實驗配置分別記錄。
8. 討論:從數值對齊走向端到端學習
前面的實驗沿兩條路線處理低精度 RL:TRIAGE 調整存在失配時的更新,miniTE 減少執行差異並降低計算成本。這兩條路線還沒有解決全部問題。下一步需要同時回答:省下的算力能否變成端到端收益,以及更一致的計算能否帶來更好的學習。
8.1 權重更新與同步仍是關鍵瓶頸
這裏的 update weight 指把訓練後的權重轉換、傳輸並加載到採樣端。它仍是本報告所測配置中壓低端到端收益的核心瓶頸:訓練更新和採樣分別提速,並不意味着完整 RL 迭代按相同比例提速。第 6.5 節中,轉換與同步成本已經抵消了該輪採樣提速帶來的收益。
後續應把訓練端和採樣端的參數表示、量化與打包、傳輸、加載以及同步頻率放在一起優化。可探索在同一權重版本內複用已經生成的低精度表示、合併轉換與傳輸,以及在版本管理明確的條件下重疊同步和採樣。降低同步頻率可能節省傳輸,卻會增加策略滯後;這些選擇應以完整迭代耗時和同等訓練預算下的任務表現共同衡量。Online amax 與更深的算子融合也需要在這一端到端範圍內評估。
8.2 對齊算子之後,低精度為何仍更敏感?
統一算子和量化配方能消除一部分執行差異,但僅有相同的算子名稱,並不保證所有輸入形狀、批次和並行配置下的浮點計算都一致。浮點加法不滿足結合律,歸約順序、融合邊界或分塊方式變化都可能改變結果。固定執行路徑可以做到確定性復現;需要繼續研究的是,當這些執行條件變化時,擾動會在哪裏產生,又如何進入後續更新。
本報告的對齊實驗與長期評測分別揭示了這個問題的兩面:嚴格對齊配置把 gap 降到了約 10⁻⁸,而 miniTE 的長期學習與檢查點評測仍未在所有比較中追平 BF16。兩組結果的配置和測量範圍不同,但它們共同説明,數值一致性和最終學習質量需要分別驗證。我們仍需解釋:為什麼在所測低精度配置中,看似很小的擾動更容易破壞學習?
值得檢查的機制包括誤差的持續偏置、粗量化網格附近的舍入跳變、MoE 路由變化,以及梯度裁剪和優化器狀態對這些誤差的累積響應。它們目前是待檢驗的解釋。更有辨識力的實驗應固定模型與數據,控制擾動的位置、方向和相關性,在 BF16 與低精度下比較後續更新及長程獎勵,而不只比較單步平均 gap。
8.3 從更新規則和最終效果出發優化
平均 logp diff 不能線性換算為 reward。相似的平均差異可能出現在不同 token、優勢值符號和響應片段上,對更新的作用也不同;小 gap 同樣不能保證有效的探索和梯度信號。TRIAGE 的方向分析是一個切入點。下一步可以直接研究誤差如何改變更新,並用同等數據、更新預算和牆鍾預算下的獎勵與評測成績檢驗修正是否有效。
社區的解法也在拓寬。Together AI 的 Score Centering(SC)通過加性修正消除策略梯度中由訓推差異引入的漂移,可與重要性採樣組合 [17]。Qwen 團隊的 TRACE 用採樣端的量化結果指導訓練端的 FP4 舍入,並壓縮保存所需的量化信息 [18]。前者修改梯度估計,後者協調兩端的量化決策;TRACE 仍以對齊為目標,但兩者都説明,可干預的位置已超出統一算子實現。
對 miniTE 而言,這意味着除了繼續提供可控、可比較的數值執行,還應支持更新規則、精度分配和採樣策略的聯合實驗。我們希望社區進一步研究的,是如何保留與任務有關的學習信號、抑制會隨更新累積的偏差,並把這些改進轉化為真實的端到端收益。最終目標是讓低精度 RL 在給定資源內學得更好,而不只是讓某一個一致性指標更小。
附錄 A. 實驗設置與統計方法
A.1 補充算法與訓練資料
TRIAGE 的方法與效果以 TRIAGE 待發布主稿及其診斷附錄為依據。算法結果採用表 3 所列檢查點,五項數學評測任務等權平均;4B 的新版結果為 BF16 58.26%、TRIAGE 58.49%,共同第 300 步的 TRIAGE 為 53.03%。
Characterization 是獨立診斷運行:4B 分析 updates 1–324,30B 分析 updates 1–724;最大 completion 分別為 16,384 和 20,480。4B 測量直接訓練端–採樣端 gap,30B 使用 routing replay 後的殘餘 gap。健康階段全部有效 token 的固定尾部閾值分別為 −0.24208 和 −0.03949。
診斷運行使用 DAPO-Math-17K,訓練端隨機種子為 1234、採樣與數據隨機種子為 42;每輪 16 個 prompt、每 prompt 16 條響應,GBS 為 256。它們使用 RHT 和梯度隨機舍入,相關數值設置不能套用到關閉這些選項的 miniTE 實用路徑。詳細窗口、長度敏感性、一步更新審計及隨機化控制見上述附錄。
TRIAGE 的材料在此僅用於算法與效果。該鏡像未按 miniTE 性能測試進行同等精調,因此其吞吐不能作為 miniTE 性能上限或算法開銷的對照,本文不引用其吞吐結果。
A.2 長期 RL 與檢查點評測補充
miniTE論文附錄整理了圖 5 與表 6-8 對應的配置和評測協議:
| 項目 | 設置 |
|---|---|
| 模型與數據 | Qwen3-30B-A3B-Base;DAPO-Math-17K,math 獎勵 |
| 訓練目標 | GRPO;非嚴格配置均使用 token-wise TIS |
| 隨機性 | Training seed 1234;採樣 shuffle seed 42 |
| Batch | 每輪 32 個 prompt,各 16 條響應;GBS 512 |
| 生成 | Temperature 1.0,top-p 1.0,top-k 禁用,最大響應 20,480 |
| 並行與分配 | 8 節點、每節點 8 actor GPU;TP/PP/CP/EP/ETP = 1/1/1/4/1;actor/採樣端共置部署 |
| 優化器 | Adam,學習率 ,無 warmup;weight decay 0.1,,gradient clipping 1.0 |
| 內存策略 | 全激活重計算、動態微批次;分佈式 precision-aware 優化器、CPU offload 與重疊傳輸 |
| TIS 與裁剪 | Token-wise TIS 權重截於 [0,2];policy update ratio 邊界 [0.80,1.28];routing replay 關閉 |
| 評測 | Step 999;temperature 0.7,top-p 1.0,最大生成長度 20,480 |
| 重複與指標 | AIME 各六輪;MATH-500、GSM8K、IFEval 各四輪;IFEval 為 Prompt-level Strict |
表 A1:miniTE 補充長訓的協議。它與單節點 8×B300 的固定文本訓練端測試採用不同的實驗配置。重複檢查點評測不增加訓練種子數。
三個主訓練配置比較第 0–999 步,每配置一條曲線,疊加居中的 21 步均值。正文圖 4 採用 四面板圖及 15 步平滑;配套論文另整理了同類對齊實驗的兩面板 21 步平滑版本,二者圖注不混用。該嚴格對齊配置聯合改變多個執行組件並移除 TIS,與訓練端性能測試分別計時。
A.3 miniTE 的固定文本訓練測試
| 項目 | 設置 |
|---|---|
| 模型與設備 | Qwen3-30B-A3B,單節點 8×B300 |
| 並行與形狀 | TP/PP/CP/EP = 1/1/1/4;sequence 4096;微批次 1;GBS 128 |
| 工作量 | 每更新 524,288 token;16 個累積微批次 |
| 數據與起點 | 凍結的 657 條 4097-token DAPO 文本序列;同一 BF16 檢查點;seed 20260913 |
| 主要軟件 | PyTorch 2.11.0+cu130,CUDA 13.0.88,NCCL 2.28.9,Megatron-Core 0.16.0rc0 |
| Megatron | Revision 52153937,實驗所需集成補丁 |
| 核心版 | miniTE 953f17f9;十次獨立進程運行,未融合 permutation |
| 優化版 | miniTE b641179;dense、GEMM-kind、permutation fusion 與 amax 複用 |
| TE | 初期 eaca54e9,後續 8ea5a92d 處理零 token 專家;非空 group 路徑檢查一致性 |
| TE per-token | 690ffea4 加 CUDA 13 編譯兼容修正,獨立環境 |
表 A2:固定文本性能協議。數據構建約有 4.3 倍重複;激活重計算、offload 和 CUDA graph 關閉。量化路徑的專家填充成本納入計時。
核心版每進程運行 20 次更新,前五次預熱,updates 6–15 構成測量窗口。每次運行的吞吐由 524,288 除以中位更新耗時得到。跨十次運行去掉一個最大值和一個最小值後平均;配對速度比也按運行編號先計算,再按同樣方式截尾。
優化版每配置一個進程,17 次更新中前兩次預熱,其餘 15 次 update 耗時去掉最大和最小後平均,再用 524,288 tokens 除以該平均耗時換算吞吐;速度比採用同輪基線。兩類估計量分組報告。核心運行 3 存在空閒推理服務進程干擾,相關最小觀測按既定截尾規則剔除;全部十次記錄及版本差異保留在 miniTE 測試彙總中。
表 6-9 使用十次獨立運行的配對速度比。1.334×是各次運行速度比經截尾後的均值,1.344×是聚合吞吐均值之比;兩者的估計方式不同。後續融合實驗使用另一組版本與配置,單獨報告。
A.4 模塊、推理服務與 RL 階段計時
模塊測試使用單 GPU、32 個 local 專家、四個 dispatch 前 token 規模,五次獨立進程運行;權重保持預熱後的固定權重。Dispatch 不計時,FC2 激活預先準備,不能將模塊前向收益直接當作訓練端速度比。上游 TE per-token 的全模型量化範圍和反向精度不同於 miniTE,完整模型比較不用於純實現增量歸因。
推理服務使用固定輸出 1024、ignore_eos=true、8,192-token context limit、靜態顯存比例 0.6,並關閉 piecewise CUDA graph。單推理實例使用 64 個 prompt 掃描 concurrency 1、2、4、8、16、32、48、64、96,雙方選定 64 後在八個推理實例上運行 512 個 prompt。
Colocated RL 階段測試使用一節點 8×B300 和每推理實例一張 GPU。BF16 統計 perf steps 2–12,miniTE 為 2–11。訓練端包含對數概率 computation 和 actor training;weight update 包含 Megatron→SGLang 同步,以及 miniTE 的 BF16→NVFP4 轉換。兩階段之和不包含完整採樣與其他調度工作。
API 和融合佈局檢查比較固定形狀與配置下的編碼、縮放因子和輸出。其逐位一致性結論適用於這些邊界,不直接等同於完整模型的批次不變性。早期實驗路徑中的 swizzle 失敗與 miniTE per-token 生產路徑的檢查採用不同形狀約束,分別解釋。
附錄 B. TRIAGE 的方法約定
本稿採用待發布報告中的響應級歸一化:先在每個響應內計算加權 token 損失的均值,再對響應取平均。若 是有效 token 掩碼, 是 停止梯度傳播的 gate 權重,則
固定 gate 使用 64-token 片段。負優勢值片段的平均 gap 小於 −1.5 時,mean-tier 權重為 0.1;處於 [−1.5, −0.5) 時為 0.3;其餘為 1.0。若片段內 的有效 token 數為 ,tail 權重為 。片段取兩類權重的較小值,只應用於負 gap 的 token。其餘 token 保留原始權重 1。
Repair 使用 128-token 片段,在正優勢值響應內對超過負向邊界的片段施加單側 pseudo-Huber 懲罰。具體 mask、片段歸一化和導數推導見 TRIAGE 方法附錄與主稿方法部分。
組件消融從 full-TRIAGE 的第 300 步檢查點分叉,屬於 continuation 比較。完整圖見 TRIAGE 消融。本文保留這一設計範圍,不將 continuation 解釋為從頭訓練的消融。
網頁圖示與交互呈現參考了《The 4-bitter Lesson》和 LMSYS 的 Blackwell 低精度 RL 文章 [15,16]。圖中構造示例與條件估算單獨標明。
參考文獻
[1] NVIDIA. Pretraining Large Language Models with NVFP4. 2025;2026 年更新。 arXiv:2509.25149.
[2] Cursor Research. Composer 2 Technical Report. 2026. arXiv:2603.24477.
[3] Guangming Sheng et al. HybridFlow: A Flexible and Efficient RLHF Framework. EuroSys 2025. arXiv:2409.19256.
[4] Zhihong Shao et al. DeepSeekMath: Pushing the Limits of Mathematical Reasoning in Open Language Models. 2024. arXiv:2402.03300.
[5] An Yang et al. Qwen3 Technical Report. 2025. arXiv:2505.09388.
[6] Qiying Yu et al. DAPO: An Open-Source LLM Reinforcement Learning System at Scale. 2025. arXiv:2503.14476;DAPO-Math-17K 數據集.
[7] Lianmin Zheng et al. SGLang: Efficient Execution of Structured Language Model Programs. NeurIPS 2024. arXiv:2312.07104.
[8] Mohammad Shoeybi et al. Megatron-LM: Training Multi-Billion Parameter Language Models Using Model Parallelism. 2019. arXiv:1909.08053.
[9] NVIDIA Transformer Engine. Add NVFP4 per-token quantization recipe, PR #3045. 2026. 公開實現與討論.
[10] Zhaopeng Qiu et al. FP8-RL: A Practical and Stable Low-Precision Stack for LLM Reinforcement Learning. 2026. arXiv:2601.18150.
[11] Karl Cobbe et al. Training Verifiers to Solve Math Word Problems. 2021. arXiv:2110.14168;GSM8K 官方倉庫.
[12] Dan Hendrycks et al. Measuring Mathematical Problem Solving With the MATH Dataset. 2021. arXiv:2103.03874. MATH-500 子集劃分見 Hunter Lightman et al., Let's Verify Step by Step, 2023,arXiv:2305.20050及官方劃分説明.
[13] Mathematical Association of America. AMC 官方主頁與 AIME 官方介紹. 本文結果採用實驗記錄中的 AIME 2024、AIME 2025 與 AMC23 評估版本。
[14] Jeffrey Zhou et al. Instruction-Following Evaluation for Large Language Models. 2023. arXiv:2311.07911.
[15] Ziang Li et al. The 4-bitter Lesson. humans&,2026-07-10。文章與交互示例。
[16] Ziang Li, humans& and Miles Team. Towards Blackwell-Native 8-bit and 4-bit RL: End-to-End MXFP8 and NVFP4 RL in Miles. LMSYS,2026-07-29。文章與格式説明。
[17] Martin Marek and Max Ryabinin. Score Centering Stabilizes Off-policy Reinforcement Learning. 2026. Paper.
[18] Xin Wang et al. TRACE: Rollout-Guided Quantization-Aware Training for FP4 Reinforcement Learning of MoE Language Models. 2026. Paper.