微軟 BitNet b1.58 震撼登場:跑更快、更省電的 1 位元 AI 模型來了?

AI 發展快到讓人眼花撩亂,但模型的「食量」也越來越驚人?來看看微軟最新的 BitNet b1.58 2B4T 模型,探索這個「1.58 位元」大型語言模型 (LLM) 如何在效能與驚人效率間取得平衡,以及它為何可能改變 AI 的遊戲規則。


你有沒有想過,如果 AI 模型能像個節能高手,既聰明又省電,那該有多好?大型語言模型 (LLM) 的能力越來越強,但它們對計算資源的需求,像是記憶體和電力,也跟著水漲船高。這就像養了一隻超級聰明的寵物,但牠每天都要吃掉一座山的飼料!

不過,微軟研究院最近給我們帶來了好消息,他們推出了一個名為 BitNet b1.58 2B4T 的模型。這可不是一般的 LLM,它是第一個開源的、原生 1.58 位元 LLM,參數規模達到了 20 億級別。聽起來很技術?別擔心,簡單來說,它可能預示著一個更輕巧、更快速、更省錢的 AI 時代的來臨。

➡️ 官方推理程式碼: microsoft/BitNet (bitnet.cpp)

「1.58 位元」到底是什麼黑科技?

我們常聽說的模型參數,通常是用比較精確的數字(像是 16 位元或 32 位元浮點數)來儲存的。這就像用很多種顏色來畫一幅畫,細節很豐富,但檔案也很大。

而 BitNet 走的路線很不一樣,它採用了所謂的 1.58 位元 量化。這是什麼意思呢?你可以想像成,它把模型裡最重要的資訊(權重)用極度簡化的方式來表示,基本上只用三種數值:-1、0、+1。是不是有點像把彩色照片變成極簡風格的黑白灰素描?

這樣做的好處顯而易見:

  1. 記憶體大幅縮減: 模型檔案變得超級小!看看下面的比較就知道,它的記憶體佔用簡直是「羽量級」。
  2. 運算速度飛快: 簡單的數值運算起來自然更快,延遲更低。
  3. 能源消耗降低: 運算量減少,耗電量當然也跟著降低,對環境更友善,部署成本也更低。

最關鍵的一點是,BitNet 不是 把一個訓練好的大模型硬塞進小空間(那種叫訓練後量化),而是從一開始就用這種 1.58 位元的方式進行訓練。這就像是天生就骨骼清奇的武學奇才,而不是後天硬練縮骨功。這讓模型在保持效率的同時,盡可能地維持了原有的「智慧」。

來認識一下 BitNet b1.58 2B4T 本尊

好啦,讓我們來看看這個模型的「身家背景」:

  • 規模: 大約有 20 億 個參數(~2 Billion)。雖然不是最大的,但在同級別中是個狠角色。
  • 訓練資料: 吃掉了 4 兆 (Trillion) 個 token 的資料!這包含了公開的文本、程式碼,甚至還有合成的數學數據。用這麼多資料餵養,難怪這麼聰明。
  • 架構: 骨子裡還是強大的 Transformer 架構,但進行了「魔改」,加入了微軟設計的 BitLinear 層。同時也用上了像是 RoPE (旋轉位置嵌入)、ReLU² 活化函數、subln 正規化這些現代 LLM 的流行技術。而且,為了極致簡化,它在線性層和正規化層都沒有偏置項 (bias terms)
  • 量化細節: 採用 W1.58A8 配置,也就是權重是 1.58 位元 (實際運作是三元值 {-1, 0, +1}),而活化值 (activation) 則是 8 位元整數。
  • 上下文長度: 最大可以處理 4096 個 token 的序列長度。不過官方也貼心提醒,如果你的任務需要處理超級長的文本,最好在正式微調前,先做一些長序列的適應性訓練。
  • 訓練三部曲:
    1. 預訓練: 在海量資料上打好基礎。
    2. 監督式微調 (SFT): 教模型如何聽懂指令、好好對話。
    3. 直接偏好優化 (DPO): 根據人類的偏好來調整模型,讓回答更討喜。
  • 分詞器 (Tokenizer): 使用了和 LLaMA 3 同款的分詞器,詞彙量有 128,256 個。

實力如何?跟其他高手比一比

說了這麼多,BitNet b1.58 到底行不行?微軟把它跟市面上一些同量級的開源全精度模型(像是 LLaMA 3.2 1B, Gemma-3 1B, Qwen2.5 1.5B 等)做了個比較。結果相當亮眼!

指標 LLaMA 3.2 1B Gemma-3 1B Qwen2.5 1.5B SmolLM2 1.7B MiniCPM 2B BitNet b1.58 2B
記憶體 (非嵌入層) 2GB 1.4GB 2.6GB 3.2GB 4.8GB **0.4GB (!!) **
延遲 (CPU 解碼) 48ms 41ms 65ms 67ms 124ms 29ms (超快!)
能耗 (估計) 0.258J 0.186J 0.347J 0.425J 0.649J 0.028J (驚人!)
多項基準測試平均 44.90 43.74 55.23 48.70 42.05 54.19 (非常接近)
MMLU 45.58 39.91 60.25 49.24 51.82 53.17
GSM8K (數學推理) 38.21 31.16 56.79 45.11 4.40 58.38 (勝出!)
MATH-500 (數學推理) 23.00 42.00 53.00 17.60 14.80 43.40

註:LLaMA 3.2 1B 使用了修剪和蒸餾技術。Gemma-3 1B 使用了蒸餾技術。

從表格可以清楚看到:

  • 效率炸裂: BitNet 在記憶體、延遲和能耗上的表現簡直是「碾壓級」的優勢!0.4GB 的記憶體佔用是什麼概念?可能比你手機裡一個普通 App 還小!29ms 的 CPU 解碼速度也快得驚人。
  • 性能不俗: 在 MMLU、GSM8K、MATH 等多個基準測試中,BitNet 的表現跟其他體積更大的全精度模型相比,不僅毫不遜色,甚至在某些項目(如 GSM8K)還拔得頭籌。雖然平均分數略低於 Qwen2.5 1.5B,但考慮到巨大的效率提升,這個表現已經非常厲害了。

這就像是一台超級省油的車,雖然極速可能不是最快,但綜合表現和實用性卻讓人驚艷!

想試試看?你需要知道的幾件事

看到這裡,你是不是也心癢癢,想動手玩玩看了?先別急,有幾個關鍵點你一定要知道:

⚠️ 超級重要警告!關於效率 ⚠️

請注意!請注意!請注意! 如果你打算用大家很熟悉的 Hugging Face transformers 函式庫來跑這個 BitNet 模型,千萬不要期待 你能體驗到前面提到的那種飛快的速度、超低延遲或驚人省電的效果。

為什麼呢?因為 transformers 目前還沒有針對 BitNet 架構進行底層運算核心的最佳化。直接用它來跑,速度和能耗可能跟跑普通的全精度模型差不多,甚至可能更慢!

雖然你可能會觀察到記憶體佔用確實變小了,但 真正的計算效率優勢,必須透過官方提供的 C++ 實作 bitnet.cpp 才能發揮出來!

所以,如果你追求的是極致的效率,請務必移駕到 bitnet.cpp 的 GitHub 倉庫,按照那裡的說明進行編譯和使用。

模型版本選擇:

Hugging Face 上有幾個不同的版本,你要怎麼選?

transformers 嚐鮮 (僅供實驗,無效率優勢):

如果你只是想快速體驗一下模型的回應,並且不介意沒有效率提升,你可以暫時使用一個特別的 transformers 分支版本 (未來可能會整合到主版本):

pip install git+https://github.com/shumingma/transformers.git

然後可以用類似下面的 Python 程式碼來載入和執行 (記得,這跑起來不會比較快):

import torch
from transformers import AutoModelForCausalLM, AutoTokenizer

model_id = "microsoft/bitnet-b1.58-2B-4T"

# 載入分詞器和模型
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(
    model_id,
    torch_dtype=torch.bfloat16 # 雖然模型是1.58bit,載入時可能需要指定dtype
)

# 準備對話輸入
messages = [
    {"role": "system", "content": "You are a helpful AI assistant."},
    {"role": "user", "content": "How are you?"}, # 記得,目前只支援英文
]
prompt = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
chat_input = tokenizer(prompt, return_tensors="pt").to(model.device)

# 生成回應
chat_outputs = model.generate(**chat_input, max_new_tokens=50)
response = tokenizer.decode(chat_outputs[0][chat_input['input_ids'].shape[-1]:], skip_special_tokens=True)

print("\nAssistant Response:", response)

再次強調:要效率,請用 bitnet.cpp

語言限制:目前只懂英文喔!

目前這個 BitNet b1.58 2B4T 模型僅支援英文。如果你輸入中文或其他語言,它可能無法理解或給出正確的回應。這點在使用前需要特別留意。

誰適合用?還有一些小提醒

那麼,這個 BitNet 模型適合誰呢?

  • AI 研究人員: 探索低位元模型訓練和部署的可能性。
  • 對效率極度敏感的開發者: 需要在資源有限的設備 (例如某些邊緣裝置) 上運行 LLM。
  • 想降低 LLM 運營成本的企業或個人: 更低的能耗和記憶體需求意味著更低的伺服器成本。

好消息是,這個模型的權重和程式碼都是在 MIT 授權下發布的,這意味著你可以相對自由地使用和修改它,相當佛心!

不過,也要記得,這畢竟是一個用於研究和開發目的的模型。雖然經過了 SFT 和 DPO 的對齊微調,但它仍然可能產生一些意想不到、有偏見或不準確的輸出。使用時還是要保持判斷力,負責任地使用。

結語:AI 輕量化的一大步?

所以,BitNet b1.58 2B4T 代表什麼?它不僅僅是又一個新的 LLM。它證明了,我們或許不需要總是追求最大、最耗資源的模型。透過像 1.58 位元這樣的原生低位元訓練技術,我們有可能在保持相當不錯性能的前提下,大幅降低 AI 的運行門檻。

這對於 AI 技術的普及、在更多資源受限場景的應用,甚至對於降低整個產業的碳足跡,都可能帶來深遠的影響。當然,這還只是個開始,未來我們肯定會看到更多基於類似理念的、更強大、更有效率的模型出現。

BitNet 的出現,就像是在 AI 這條高速公路上,開闢了一條更節能、更輕快的車道。接下來會怎麼發展?真的讓人非常期待!

Share on:
Previous: OpenAI Codex CLI:你的終端機 AI 程式碼夥伴,上手指南與實用技巧
Next: 限時七天!Windsurf AI 震撼推出免費無限 GPT-4.1 試用,立即體驗頂尖 AI!