實作目標與數值一致性驗證
DenseCore 是一個使用 Rust 語言編寫的小型深度學習框架,並透過 Python API 介面模擬 PyTorch 的使用方式。開發者表示,若將程式碼中的 import torch 指向 DenseCore,並直接執行 Andrej Karpathy 的 nanoGPT 原始碼,即可獲得與 PyTorch 完全相同的計算結果。
根據開發者的測試,在設定相同隨機種子(manual_seed)的情況下,連續 50 個訓練步驟中的初始權重、損失值、梯度以及更新後的權重,均能達到逐位元(bit for bit)的完全一致。此一致性甚至在啟用 Dropout 機制時依然成立,並非僅為近似值。
達成逐位元匹配面臨的技術挑戰
開發者指出,要實現這種精確匹配需要深入理解 PyTorch 底層的實作細節,因為其行為並非單純遵循教科書上的數學公式。例如,PyTorch 在 CPU 上執行注意力機制(Attention)時,使用的是 Flash Attention kernel 而非標準公式,且當啟用 Dropout 時會切換到不同的計算路徑。
此外,優化器 Adam 的實作也存在細節差異,編譯器對迴圈尾端元素的融合處理導致了最後幾個數值的捨入方式不同。開發者還發現,PyTorch 的梯度裁剪函數 clip_grad_norm_ 內部實際執行的是 reciprocal() * max_norm 而非直接的除法運算,這些底層實作細節都是達成逐位元一致的關鍵障礙。
跨平台一致性限制與框架體積
開發者強調,DenseCore 目前僅在 Apple Silicon Mac 上能與 PyTorch 達成逐位元匹配。這是因為 PyTorch 本身在不同硬體或作業系統間也無法保證數值的一致性。測試顯示,即使在相同版本的 PyTorch 下,於 macOS 與 Linux x86 環境執行時,26 個測試運算中僅有 1 個能產生相同的位元結果。
在資源佔用方面,DenseCore 的體積約為 2 MB,相較之下 PyTorch 的安裝包大小約為 580 MB。開發者目前僅驗證了 nanoGPT 模型的前 50 個訓練步驟,並未涵蓋更長時間或更大規模的訓練任務。
未來發展方向與社群回饋徵詢
開發者向社群詢問此專案是否具有實際應用價值,還是僅作為一個學習性質的個人專案。他提出了三個潛在的發展方向:持續複製 PyTorch 的功能以擴大相容性、將其打造為適用於 Serverless 或 CI 環境的小型 CPU 任務輕量級替代方案,或是開發成一個能解釋為何兩次 PyTorch 執行結果不同的診斷工具。
目前專案已開源於 GitHub,使用者可透過執行特定腳本(python scripts/demo_bit_exact.py)來驗證 nanoGPT 的比較結果。開發者表示歡迎社群提供直接且嚴格的意見回饋,以決定是否繼續投入開發資源。



