克雷西 發自 凹非寺量子位 | 公眾號 QbitAI
密集模型的推理能力也能和DeepSeek-R1掰手腕了?
華為利用純昇騰叢集訓練出的盤古Ultra,在數學競賽、程式設計等推理任務當中,和R1打得有來有回。
關鍵是模型引數量只有135B,整個訓練過程零英偉達含量,而且沒有出現損失尖峰。

透過改進的模型架構和系統最佳化策略,盤古Ultra擁有優異的效能表現和52%以上的算力利用率。
並且有網友表示,訓練過程中沒有出現損失尖峰這一特徵,似乎此前從未實現。

135B密集模型比肩DeepSeek-R1
作為一個引數量135B密集模型,盤古Ultra達到了同尺度密集模型的最優表現,甚至可以與DeepSeek-R1等引數量更大的MoE模型競爭。
在預訓練階段模型的評測中,盤古Ultra在絕大部分英文基準任務和全部中文任務上取得了最佳效能,優於Llama 405B、DeepSeek-V3等baseline模型。
尤其在MMLU、TriviaQA、GSM8K等具有挑戰性的資料集上,盤古Ultra展現出了卓越的語言理解和推理能力。

經過指令調優後,盤古Ultra的效能進一步提升,尤其在AIME 2024、MATH-500等數學推理任務和LiveCodeBench等程式設計競賽題上達到了SOTA水平。
綜合來看,盤古Ultra超越了包括GPT-4o、Mistral-Large 2等強大模型,與DeepSeek-R1等MoE模型競爭激烈。
同時,盤古Ultra在Arena Hard、MMLU-pro等涵蓋通用語言理解和推理的評測中也表現優異。

那麼,為了實現這樣的效果,盤古Ultra採用了哪些關鍵技術呢?
“三明治”層歸一化架構
如前文所述,盤古Ultra是一款135B引數量的密集模型,使用了94層的網路結構。
盤古Ultra採用了分組查詢注意力(GQA)機制,包含96個查詢頭(query head)和8個鍵值頭(key-value head)。
為了解決訓練超深網路面臨的不穩定性和收斂困難等問題,盤古Ultra在模型架構上做出了兩個關鍵改進——深度縮放的Sandwich-Norm層歸一化和TinyInit引數初始化策略。
傳統的Transformer通常使用Pre-LN層歸一化,但在深度模型中,Pre-LN容易導致每個子層輸出尺度的波動,引發訓練不穩定。
盤古Ultra使用的Sandwich-Norm層歸一化,則是在殘差連線前對每個子層的輸出做歸一化,並根據網路深度對初始化值進行縮放,從而有效消除了訓練過程中的loss尖峰,使訓練過程更加平穩。
用更容易理解的話說,傳統方法僅在每個子層的輸入進行歸一化,但這種方法針對輸出也進行了歸一化,形成了Pre-Norm + 子層 + Post-Norm的“三明治”結構。

但是,僅僅使用Sandwich-Norm還不足以完全消除深度模型訓練中的不穩定性——隨著網路層數的增加,每一層的輸出尺度仍然可能出現累積性的漂移。
為此,盤古Ultra在Sandwich-Norm的基礎上,進一步引入了深度縮放機制,對Post-Norm中的放縮引數γ進行了深度相關的初始化。

至於整個模型的初始化,傳統的初始化通常採用的Xavier初始化方法僅考慮模型寬度,而盤古Ultra採用的TinyInit同時依據模型深度和寬度來縮放初始化權重的標準差。
這種初始化方式有助於在前向傳播和反向傳播過程中,維持各層梯度的方差在一個合理的範圍內,避免了梯度消失或爆炸問題,使得訓練過程更加穩定,同時也加速了收斂。
實驗表明,TinyInit在深度模型訓練中取得了更好的收斂速度和下游任務效能;同時針對embedding層,保持權重的標準差接近1也能提升訓練穩定性。
另外,盤古團隊也針對Tokenizer進行了最佳化,透過在通用中英文、程式碼、數學等不同領域分別進行詞頻統計,再合併去重,最終得到了一個兼顧領域覆蓋和編碼效率的153376個token的平衡詞表。

8192張昇騰NPU訓練叢集
盤古Ultra的整個訓練流程主要分為三個階段——預訓練、長上下文擴充套件和指令調優。
其中預訓練又可以分為三個子階段:
-
通用階段:側重建立語言理解和知識儲備,使用了大量中英文通用語料,覆蓋網頁、書籍、百科等多個來源; -
推理階段:引入更多高質量的數學和程式碼資料,以增強模型的推理能力。同時還使用instruction資料來幫助模型學習執行任務; -
退火階段:幫助模型鞏固知識和推理能力,並強化指令遵循能力。大量使用問答對和人類反饋資料。
研究者們採用了基於規則和模型的資料清洗方法,並設計了curriculum learning策略,讓模型循序漸進地學習不同難度的樣本。
預訓練中使用了AdamW最佳化器,並動態調整超引數。

預訓練後,模型在最長128K的長上下文資料上進一步訓練,透過擴大RoPE的基頻來實現長序列建模,以增強處理長文件的能力。
最後的指令調優階則段使用監督微調(SFT)和強化學習(RL)來使模型更好地適應下游任務,學會執行指令並與人類偏好對齊。
訓練設施方面,盤古Ultra使用了一個由8192個昇騰AI處理器組成的大規模計算叢集。
叢集中每個節點包含8個NPU,透過華為快取記憶體一致性互聯HCCS以全互聯的拓撲結構連線,每個NPU配備64GB記憶體,節點間則透過200Gbps的RoCE(RDMA over Converged Ethernet)網路互聯。
為了實現盤古Ultra的高效訓練,研究團隊還採用了一套系統的並行策略和最佳化技術。
在並行策略的選擇上,盤古Ultra綜合考慮了模型的規模、資料的特性以及硬體的拓撲,最終採用了資料並行、張量並行、序列並行和流水線並行等多種並行方式的組合:
-
128路資料並行,將訓練資料分片到不同裝置,保證了資料吞吐; -
8路張量並行,利用裝置內部高頻寬切分層內張量,實現高效通訊; -
序列並行用於處理超長序列以降低視訊記憶體壓力; -
8段流水線並行,將不同層分佈到不同裝置,形成高效的計算流水線。

在並行策略的基礎上,盤古Ultra還從多個角度對訓練系統進行了深度最佳化。
一方面,透過使用ZeRO(Zero Redundancy Optimizer)分散式最佳化器,將模型狀態分片到不同裝置,大幅降低了單個裝置的記憶體佔用,在提高資料並行度的同時,確保了每個裝置的記憶體負擔在可接受範圍內。
另一方面,研究者們透過各種通訊和計算最佳化技術,最小化了通訊開銷,提升了計算效率:
-
透過運算元融合(Kernel Fusion)將多個小運算元合併,減少了記憶體訪問和kernel啟動; -
透過通訊計算重疊(Communication-Computation Overlapping)實現通訊和計算的深度交織,隱藏通訊延遲; -
MC^2(Merged Computation & Communication)和BOA(Batch Optimization Accelerator)分別對張量並行和規範化層的通訊進行了專門最佳化……

在演算法、工程、資料各個層面的精細最佳化下,盤古Ultra實現了52%以上的算力利用率。
技術報告:https://github.com/pangu-tech/pangu-ultra/blob/main/pangu-ultra-report.pdf