bitnet.cppとは
bitnet.cppは、Microsoft Researchが開発し2024年10月17日にv1.0をリリースしたオープンソースの推論フレームワークだ。「1ビットLLM」と呼ばれる超低ビット量子化モデルを、CPUの整数演算だけで高速に動作させることに特化している。
公式リポジトリ: microsoft/BitNet – GitHub
従来のLLMは16ビット(FP16)や32ビット(FP32)の浮動小数点演算で重みを保持し、推論にはGPUの並列計算能力が不可欠だった。bitnet.cppはこの常識を破り、重みを{-1, 0, 1}の3値に圧縮することで、浮動小数点演算を整数演算に置き換えるというアプローチを取る。
主な特徴
- GPU不要: CPUの整数演算だけで推論が完結する
- 超省メモリ: FP16比で約14分の1のメモリ使用量
- 低消費電力: 最大82%の電力削減(x86環境)
- ロスレス推論: 1.58ビットモデルの品質を劣化なく再現
- クロスプラットフォーム: x86(Intel/AMD)、ARM(Apple Silicon含む)に対応
2026年1月にはCPU推論最適化アップデートがリリースされ、並列カーネル実装やネイティブI2_S GEMM/GEMVサポートにより、さらに1.15〜2.1倍の追加高速化を達成している。
1ビット量子化の仕組み — BitNet b1.58とは
「1ビット」と聞くと0と1の2値を想像するかもしれない。実際にはbitnet.cppが扱うのは1.58ビット量子化、通称BitNet b1.58だ。
3値量子化 {-1, 0, 1}
BitNet b1.58では、モデルの各重みを以下の3つの値のいずれかで表現する。
- -1: 負の方向に影響
- 0: 影響なし(スパース化)
- +1: 正の方向に影響
3つの値を表現するのに必要な情報量はlog2(3) ≈ 1.58ビット。これが「1.58ビット」の由来だ。
なぜCPUだけで動くのか
従来のLLM推論は、16ビットや32ビットの浮動小数点数同士の行列積演算が中心だった。これはGPUの並列浮動小数点演算ユニットが得意な領域であり、CPUでは非常に遅い。
一方、BitNet b1.58では重みが{-1, 0, 1}しかないため、行列積の計算が実質的に加算と減算だけで完結する。
- 重みが+1 → 入力値をそのまま足す
- 重みが-1 → 入力値を引く
- 重みが0 → 何もしない(スキップ)
GPUが得意な浮動小数点の乗算が一切不要になるため、CPUの整数演算ユニットだけで十分な速度が出る。これがbitnet.cppの根本的な設計思想だ。
後量子化(PTQ)との違い
llama.cppなどで使われるGGUF形式の量子化(Q4_K_M、Q8_0など)は、FP16で学習済みのモデルを後から低ビットに圧縮する「後量子化(Post-Training Quantization)」だ。この方法では、ビット数を下げるほど品質が劣化する。
BitNet b1.58は根本的に異なる。モデルの学習段階から1.58ビットで訓練されているため、低ビットであっても品質の劣化が最小限に抑えられる。これが「ネイティブ1ビットモデル」と呼ばれる理由だ。
パフォーマンスデータ — 数字で見るbitnet.cppの実力
以下のデータはMicrosoft公式、PrismML公式、および第三者ベンチマークから取得したファクトチェック済みの数値だ。
速度向上(llama.cpp比)
| 環境 | 速度向上倍率 |
|---|---|
| x86(Intel/AMD) | 2.37〜6.17倍 |
| ARM(Apple Silicon含む) | 1.37〜5.07倍 |
注意: 6.17倍はx86環境での最大値。ARM環境の上限は5.07倍であり、「全環境で6倍速い」わけではない。
メモリ使用量の比較
| モデル形式 | メモリ使用量 |
|---|---|
| FP16(16ビット) | 16.38GB |
| BitNet b1.58(1.58ビット) | 1.15GB |
FP16と比較して約14分の1のメモリで済む。
エネルギー効率
| 指標 | BitNet | Qwen2.5(FP16) |
|---|---|---|
| 1トークンあたりエネルギー | 0.028J | 0.347J |
| 効率比 | — | 約12倍 |
出典: emelia.io 等の第三者検証
消費電力削減
| 環境 | 削減率 |
|---|---|
| x86(Intel/AMD) | 71.9%〜82.2% |
| ARM(Apple Silicon) | 55%〜70% |
重要: 「消費電力82%削減」というデータはx86環境の最大値だ。ARM環境(Apple Silicon含む)では55〜70%にとどまる。この点は多くの紹介記事で正確に伝えられていないため注意してほしい。
100Bモデルの推論速度
bitnet.cppのREADMEには「100Bパラメータモデルを単一CPUで5〜7トークン/秒」という記載がある。ただし、これは理論値/シミュレーション結果であり、実機で誰でも試せる100Bの1ビットモデルは2026年4月時点で公開されていない。この点は明確に区別する必要がある。
対応モデル一覧(2026年4月時点)
bitnet.cppが公式にサポートするモデルは以下の通りだ。
Microsoft公式モデル
| モデル名 | パラメータ数 | 備考 |
|---|---|---|
| BitNet b1.58-2B-4T | 2.4B | Microsoft公式のフラッグシップ。4兆トークンで訓練。GGUF版あり |
| bitnet_b1_58-large | — | 初期リリースモデル |
| bitnet_b1_58-3B | 3.3B | コミュニティ派生を含む |
コミュニティモデル
| モデル名 | パラメータ数 | 備考 |
|---|---|---|
| Llama3-8B-1.58-100B-tokens | 8B | Llama 3ベースの1.58ビット変換 |
| Falcon3-1B-Instruct-1.58bit | 1B | TIIのFalcon3を1.58ビット化 |
| Falcon3-3B-Instruct-1.58bit | 3B | 同上 |
| Falcon3-7B-Instruct-1.58bit | 7B | 同上 |
| Falcon3-10B-Instruct-1.58bit | 10B | 同上 |
PrismML Bonsai-8B(注目モデル)
bitnet.cppではなくllama.cppフォーク版で動作するが、1ビットLLMの代表格として紹介する。
| 項目 | スペック |
|---|---|
| パラメータ | 8B |
| ファイルサイズ | 1.15GB |
| アーキテクチャ | ネイティブ1ビット({-1, +1}の2値。0なし) |
| M4 Pro速度 | 131トークン/秒 |
| RTX 4090速度 | 368トークン/秒 |
| 推論エンジン | PrismML製llama.cppフォーク / MLX |
| ベンチマーク平均 | 70.5(Llama 3 8Bの67.1を上回る) |
| 知能密度 | 1.06/GB(他の7-8Bモデルは0.10/GB以下) |
| リリース日 | 2026年3月31日 |
出典: PrismML公式
Bonsai-8BはBitNet b1.58とは異なるアーキテクチャ({-1, +1}の2値で、0を含まない)だが、「1ビットLLM」というカテゴリでは最も注目されているモデルだ。推論にはPrismML公式のllama.cppフォーク版が必要であり、bitnet.cppでは動作しない点に注意。
インストール・セットアップ手順
ここではbitnet.cpp公式のセットアップ手順を解説する。
動作要件
| 要件 | 詳細 |
|---|---|
| Python | 3.9以上 |
| CMake | 3.22以上 |
| パッケージ管理 | Conda推奨 |
| Windows | Visual Studio 2022(C++ビルドツール) |
| Linux | Clang 18+ / LLVMツールチェイン |
| macOS | Xcode Command Line Tools |
Step 1: 環境構築
conda create -n bitnet-cpp python=3.9
conda activate bitnet-cpp
git clone https://github.com/microsoft/BitNet.git
cd BitNet
pip install -r requirements.txt
Step 2: モデルのダウンロード
Microsoft公式の2Bモデルをダウンロードする。
huggingface-cli download microsoft/BitNet-b1.58-2B-4T-gguf \
--local-dir models/BitNet-b1.58-2B-4T
Step 3: ビルド環境のセットアップ
python setup_env.py -md models/BitNet-b1.58-2B-4T -q i2_s
このスクリプトが自動的にCMakeビルドを行い、1.58ビットモデル向けに最適化されたカーネルを生成する。
Step 4: 推論の実行
python run_inference.py \
-m models/BitNet-b1.58-2B-4T/ggml-model-i2_s.gguf \
-p "You are a helpful assistant" \
-n 100 \
-temp 0.8
主なオプション:
| オプション | 説明 |
|---|---|
-m | モデルファイルのパス |
-p | プロンプト文 |
-n | 生成トークン数 |
-temp | 温度パラメータ(創造性の制御) |
-t | 使用スレッド数 |
Bonsai-8Bを動かす場合
Bonsai-8Bはbitnet.cppではなく、PrismML製のllama.cppフォーク版が必要だ。
git clone https://github.com/PrismML-Eng/llama.cpp
cd llama.cpp
cmake -B build -DGGML_METAL=ON && cmake --build build
cmake -B build && cmake --build build
huggingface-cli download prism-ml/Bonsai-8B-gguf \
--local-dir models/Bonsai-8B
./build/bin/llama-cli -m models/Bonsai-8B/Bonsai-8B.gguf \
-p "Explain quantum computing in simple terms" \
-n 200
重要: 標準のllama.cpp(brew install llama.cppやOllama経由)ではBonsai-8Bは動作しない。1ビット専用テンソル形式に対応したPrismMLフォーク版のビルドが必須だ。Ollamaでの起動は「500 Internal Server Error」、標準llama.cppでは「invalid ggml type 41」エラーとなる。
実際に動かしてみた — 正直な感想
note記事で公開した検証結果を要約する。テスト環境はApple M2 MacBook Air(8GB RAM)。
Bonsai-8Bのリアルな動作状況
- メモリ使用量: 実測約3.1GB(モデル1,099MB + コンテキスト3,096MB + コンピュート304MB)。公式の「1.15GB」はモデル重みだけの数値であり、実行時には3倍近いメモリが必要だった
- 体感速度: ChatGPTの無料版よりやや遅い程度。実用的な速度ではある
- 日本語: 事実知識が弱い傾向(「東京タワーの高さ」を東京スカイツリーの634mと回答)
- 英語コーディング: FizzBuzzの構造は概ね正しいが、else節の欠落など不完全な部分あり
動作までのハードル
ネット上の「簡単3ステップ」系の記事は、2026年4月時点ではほとんど機能しない。
- Ollama → 500 Internal Server Error
- 標準llama.cpp → invalid ggml type 41 エラー
- 標準MLX → 1ビット非対応エラー
PrismML公式のllama.cppフォーク版を自分でビルドするのが、2026年4月時点で最も確実な方法だ。ビルド自体は5分程度、モデルのダウンロードも数分で完了する。
llama.cpp(GGUF量子化)との比較
ローカルLLMの定番であるllama.cppとbitnet.cppを比較する。
アーキテクチャの違い
| 項目 | bitnet.cpp | llama.cpp |
|---|---|---|
| 量子化方式 | ネイティブ1.58ビット(学習時から) | 後量子化(PTQ: Q4, Q8等) |
| 演算方式 | 整数演算(加減算中心) | 浮動小数点演算 |
| GPU | 不要(CPU専用設計) | GPU推奨(CPUでも動作) |
| モデル形式 | 専用GGUF(i2_s) | 汎用GGUF |
| エコシステム | 発展途上 | 成熟(Ollama, LM Studio等) |
パフォーマンス比較
| 指標 | bitnet.cpp(1.58bit) | llama.cpp(Q4_K_M) |
|---|---|---|
| メモリ(8Bモデル) | 約1.15GB | 約4.9GB |
| 速度(CPU) | 2.37〜6.17倍高速(x86) | 基準 |
| 消費電力 | 最大82%削減(x86) | 基準 |
| プロンプト処理 | 3.4〜5.2倍高速 | 基準 |
どちらを選ぶべきか
bitnet.cppが向いている人:
– GPUを持っていない、またはGPUなしで動かしたい
– 消費電力やバッテリー寿命を重視する
– エッジデバイス(Raspberry Pi、組み込み機器)での推論を想定している
– 1ビットLLMの技術に興味がある
llama.cppが向いている人:
– GPUを持っている、またはOllama・LM Studioなどの使いやすいツールで動かしたい
– 対応モデルの豊富さを重視する(Llama 3、Gemma、Qwen等、数千モデルが対応)
– 本番プロダクションで安定して使いたい
– 日本語タスクの品質を重視する
2026年4月時点では、一般的な用途ならllama.cppの方が実用的だ。ただし、GPU不要・省電力が必須要件の場合はbitnet.cppに大きなアドバンテージがある。
今後の展望
短期(2026年中)
- GPU推論カーネルの正式対応: 2025年5月にGPU推論カーネルが公式リリースされており、CPU+GPUのハイブリッド推論が進展する見込み
- NPU対応: Intel/QualcommのNPU(Neural Processing Unit)向けカーネルの開発が進行中
- 対応モデルの拡大: Falcon3の1.58ビット版が既にコミュニティから提供されており、今後も主要モデルの1ビット版が増えていく
中期(2026〜2027年)
- 100B級ネイティブ1ビットモデルの公開: 現時点で公開されている最大モデルは10B(Falcon3-10B-Instruct-1.58bit)。100Bクラスのモデルが公開されれば、「CPUで超大規模モデルを動かす」という当初のビジョンが現実になる
- エッジAIの普及: スマートフォン、IoTデバイス、車載システムなど、GPU非搭載のデバイスでLLMを動かすユースケースが広がる
- Bonsai-8Bの後続モデル: PrismMLは$16.25Mの資金調達を完了しており、より大規模な1ビットモデルの開発が期待される
1ビットLLMが変えるもの
1ビットLLMの真のインパクトは「速度」や「メモリ削減」だけではない。AIの民主化だ。
高性能GPUを持たない開発者、クラウド費用を払えない個人、ネットワーク接続が不安定な環境。これまでLLMの恩恵を受けられなかった層に、1ビットLLMは手を差し伸べる。消費電力の劇的な削減は、AI推論の環境負荷を下げるという意味でも重要だ。
まとめ
bitnet.cppは、「GPUがないとLLMは動かせない」という常識を覆すフレームワークだ。
押さえておくべきポイント:
- Microsoft Researchが開発した1.58ビット推論エンジン。CPUの整数演算だけでLLMを動かせる
- メモリ使用量はFP16の約14分の1、消費電力は最大82%削減(x86環境)
- 「100BモデルをCPUで5〜7tok/s」は理論値。公開モデルは最大10B(2026年4月時点)
- Bonsai-8B(PrismML)は1.15GBで8B級の性能を発揮するが、PrismMLフォーク版のビルドが必要
- llama.cppと比較して、GPU不要・省電力では圧倒的に有利。ただしエコシステムの成熟度では劣る
- 日本語タスクの品質はまだ発展途上。英語タスクでは実用レベルに近い
次のステップ:
- まずはBitNet b1.58-2B-4Tで手軽に試す(約400MBで体験可能)
- 余裕があればBonsai-8B(1.15GB)をPrismMLフォーク版でビルドして体感する
- 100B級モデルの公開に備えて、bitnet.cppのセットアップ方法を把握しておく
1ビットLLMは「未来の技術」ではなく、「今日から試せる技術」だ。GPUの呪縛から解放される日は、もうすぐそこまで来ている。
参考リンク:
– microsoft/BitNet – GitHub(公式リポジトリ)
– BitNet b1.58-2B-4T – Hugging Face(公式2Bモデル)
– PrismML Bonsai-8B 公式発表
– Bonsai-8B GGUF – Hugging Face
– BitNet公式ドキュメント
– PrismML llama.cppフォーク版
– Getting Started – DeepWiki(セットアップ詳細ガイド)

コメント