模型 / 資料集
ridgerchu/matmulfreellm avatar
ridgerchu/matmulfreellm

MatMul-Free LM:把矩陣乘法從語言模型裡拿掉之後,剩下什麼

Implementation for MatMul-free LM.

3,092 個 Star202 個 ForkPythonApache-2.0
GitHub

秒懂

它是什麼?
這個專案用三元權重與 HGRNBit 架構取代 Transformer 中的矩陣乘法運算,並提供與 Hugging Face Transformers 相容的實作與 370M 到 2.7B 的預訓練模型。判斷重點不在於它跑得多快,而在於你的硬體與推論路徑是否真的吃得到這個設計的好處。
適合誰用?
如果你要研究無矩陣乘法的語言模型架構,或需要在神經形態硬體上評估這條路線,這個 repo 有可執行的程式碼與 Hugging Face 格式的權重可以直接載入。如果你只是想要一個能穩定生成文字的開源模型,它的模型規模與生態成熟度都不足以取代現有選擇。
可以商用嗎?
可以。Apache-2.0 是寬鬆授權:你可以使用、修改並販售以它為基礎的軟體,只需保留著作權與授權聲明。
還在維護嗎?
有在維護。儲存庫最近一次提交在 10 天前。
用什麼語言寫的?
主要是 Python(依據 GitHub 的語言統計)。

以上回答依據專案的 GitHub 資料(最近同步於 2026年9月15日)與我們的分析,不構成法律意見。

開源專案深度解析

它想解的問題不是速度,而是運算單元本身

一般語言模型的計算量幾乎都集中在矩陣乘法上。這個專案要處理的是更根本的一層:如果推論硬體本身不擅長矩陣乘法,模型架構能不能改成不需要它。README 的敘述是「eliminates the need for Matrix Multiplication (MatMul) operations」,做法圍繞三元權重展開,模型程式碼中的線性層是 FusedBitLinear,而不是標準的 Linear。

目標讀者因此相當明確。不是想找一個便宜替代品的應用開發者,而是研究架構替代方案、或要把模型對應到非 GPU 加速器的人。README 引用的軟體標題寫的是「Code for Scalable MatMul-free Language Modeling on Neuromorphic Hardware」,這句話把意圖講得很清楚:這是一份研究實作的釋出,不是產品。

判斷這個專案時,先問自己一件事:你關心的瓶頸是矩陣乘法,還是別的東西。如果不是,這個 repo 的設計取捨對你沒有意義。

HGRNBitBlock 的結構:注意力層被換成了什麼

從 README 印出的模型結構可以直接讀出機制。以預設 config 初始化後,HGRNBitModel 由 24 層 HGRNBitBlock 疊成,每層包含兩個部分:HGRNBitAttention 與 HGRNBitMLP。

HGRNBitAttention 裡有四個 FusedBitLinear,分別對應 i_proj、f_proj、g_proj、o_proj,每個都掛著一個 eps=1e-08 的 RMSNorm;g_norm 是 FusedRMSNormSwishGate。MLP 端則是 gate_proj 與 down_proj 兩個 FusedBitLinear,中間夾一個 SiLU 啟動函數。值得注意的是 gate_proj 的 out_features 是 11264,而 down_proj 的 in_features 是 5632,兩者不對稱,這代表結構中有額外的維度處理,不是單純的兩層投影。

這不是把 Transformer 的注意力換成另一種注意力,而是把整個運算路徑重新安排。專案說明它改編自 flash-linear-attention,線性注意力的實作脈絡由此而來。README 沒有提供逐層的資料流圖,所以每個投影具體如何組合,需要直接讀 mmfreelm/models 下的程式碼才能確認。

安裝與初始化:三行指令與一個 config 物件

安裝依賴寫得很直接:PyTorch 2.0 以上、Triton 2.2 以上、einops。安裝指令是 pip install -U git+https://github.com/ridgerchu/matmulfreellm,直接從 GitHub 安裝,不走 PyPI。

Triton 這個依賴是關鍵。它意味著這個專案的加速路徑綁定在特定硬體後端上,不是純 PyTorch 就能跑出預期行為。README 沒有說明缺少 Triton 時會發生什麼,也沒有提供 CPU 路徑的說明。

模型初始化用 Hugging Face 的 AutoModel:

from mmfreelm.models import HGRNBitConfig from transformers import AutoModel config = HGRNBitConfig() AutoModel.from_config(config)

預設 config 產生的是 32000 詞彙量、隱藏維度 2048、24 層的模型,對應表格中的 1.3B 級別。要換規模就得自己改 config,README 沒有示範怎麼改。

生成範例在 generate.py,載入時用 AutoModelForCausalLM.from_pretrained(name).cuda().half(),採 half 精度並要求 CUDA。name 變數在範例中是空字串,註解寫著 Change here to our open-sourced model,也就是說你必須自己填入 Hugging Face 上的模型名稱。

三個預訓練模型的實際差異

README 的模型表列出三種規模。370M 是 24 層、隱藏維度 1024、訓練 15B tokens。1.3B 是 24 層、隱藏維度 2048、訓練 100B tokens。2.7B 是 32 層、隱藏維度 2560、訓練 100B tokens。

這裡有個容易忽略的細節:370M 的訓練量只有其他兩者的七分之一。層數與 1.3B 相同,差別在寬度與資料量。如果你的用途需要模型對語言有較完整的覆蓋,370M 這個選項的訓練預算明顯偏低,這一點在評估時應該納入。

三個模型都放在 Hugging Face 的 ridger 帳號下,分別是 MMfreeLM-370M、MMfreeLM-1.3B、MMfreeLM-2.7B。README 提供了模型集合的連結,但沒有列出各模型的評測分數、推論延遲或記憶體佔用。要判斷哪個規模適合,只能自己下載後量測。

scaling law 那張圖能支撐到什麼程度

README 用一段文字描述 scaling law 的結果:在 370M、1.3B、2.7B 三個規模上比較 Transformer++ 與這個模型,並稱後者的 scaling 投影呈現更陡的下降,推論是架構在利用額外算力上更有效率。

這段敘述有兩個需要留意的地方。第一,文中明說「each operation is treated identically, though our model uses more efficient ternary weights in some layers」,也就是比較時把運算當成等價處理,但模型實際上在某些層用了更有效率的三元權重。這個不對稱讓「更陡的下降」這個結論的解讀變得複雜。第二,三個資料點要支撐一條 scaling 曲線的推論,樣本數偏少。

這不代表結論錯,而是說這張圖適合當作研究方向的支持,不適合當作部署決策的依據。README 沒有提供圖中的具體數值,本文也無法引用任何數字。

什麼情況下這個工具是錯的選擇

最明顯的限制是硬體綁定。Triton 依賴加上 cuda().half() 的範例,說明預設路徑是為 GPU 設計的。如果你的目標平台不支援 Triton,這個 repo 的加速實作對你就沒有意義,剩下的只是另一種模型架構。

第二個限制是生態。這是一個研究釋出,README 沒有提到推論伺服器整合、量化工具、微調腳本或部署範例。要把它接進現有推論堆疊,等於要自己處理權重格式、批次處理與記憶體管理。

第三是模型本身的量級。2.7B 是這裡最大的選項,而它的訓練資料量是 100B tokens。對照當前主流開源模型,這個規模的通用能力有明確上限。如果你的任務需要複雜推理或長脈絡處理,這個專案不是合適的工具。

還有一個容易被忽略的失敗模式:FusedBitLinear 的行為取決於底層是否真的走到最佳化核心。如果環境配置不完整而退回一般路徑,模型仍然能跑,但你就完全失去了採用它的理由,而且不會有任何錯誤訊息提醒你。

與 flash-linear-attention 的差別在哪裡

README 開頭就說明這個 repo 改編自 sustcsonglin/flash-linear-attention。兩者的差異不在於線性注意力的實作方式,而在於權重的表示法。flash-linear-attention 提供的是多種線性注意力層的高效實作,權重仍是常規精度;matmulfreellm 則在線性注意力的骨架上,把線性層換成三元權重的 FusedBitLinear。

這個差別的實際後果是:如果你只是想要線性注意力的效率,flash-linear-attention 是更直接的選擇,它不要求你接受三元權重帶來的精度取捨,也不綁定同一組模型權重。反過來說,如果你的研究問題正好是「權重壓到三元之後,線性注意力架構還能不能維持表現」,那 matmulfreellm 就是針對這個問題設計的。

選擇的關鍵不是哪個比較快,而是你的研究或產品問題落在哪一側。

授權、版本與後續維護成本

授權是 Apache License 2.0,寬鬆授權,允許商用與修改,需保留著作權聲明與授權條款。README 沒有提供個別檔案或元件的例外說明,所以如果專案內含來自其他來源的程式碼,授權範圍需要自行核對。這不是法律意見,實際使用前請自行確認。

版本方面,v0.1.0 是與 Nature Computational Science 論文對應的 archival release,執行時期的程式碼基於 commit f24cfe5,另外補上了引用、版本與授權的中繼資料。README 用「archival software release」描述它,這通常意味著這個版本的目的在於可重現性,而不是持續演進。

引用要求是雙重的:使用這個軟體要同時引用 Zenodo 上的軟體釋出與 arXiv 論文 2406.02528。CITATION.cff 裡有對應的書目資料。

維護成本的判斷因此相對單純。這不是一個會頻繁推出新功能、跟著上游框架更新的專案。如果你採用它,等於接受一個固定的架構快照,後續的 PyTorch 或 Transformers 版本變動可能需要你自己處理相容性。

編輯結論

如果你要研究無矩陣乘法的語言模型架構,或需要在神經形態硬體上評估這條路線,這個 repo 有可執行的程式碼與 Hugging Face 格式的權重可以直接載入。如果你只是想要一個能穩定生成文字的開源模型,它的模型規模與生態成熟度都不足以取代現有選擇。動手前先確認三件事:你的環境能否滿足 PyTorch 2.0 與 Triton 2.2 的版本要求、generate.py 中 name 變數要指向哪個 Hugging Face 模型、以及 FusedBitLinear 在你的硬體上是否真的走進最佳化路徑。

官方來源

  1. Issues
  2. License: Apache-2.0
  3. README
  4. Releases
  5. ridgerchu/matmulfreellm on GitHub
社群筆記

社群筆記