BitNet: 100Bパラメータの1ビットモデルをローカルCPU向けに
49日前原文(github.com)
概要
- bitnet.cppは1ビットLLM推論用の公式フレームワーク
- CPU・GPUで高速かつ省エネな推論を実現
- ARM/x86両対応、モデルサイズが大きいほど効果増
- インストール・実行手順が明確に提供
- FAQやベンチマーク、変換ツールも充実
bitnet.cppの特徴と概要
- bitnet.cppは、BitNet b1.58などの**1ビット大規模言語モデル(LLM)**向け公式推論フレームワーク
- CPUおよびGPUでの高速・損失なし推論をサポート(今後NPUにも対応予定)
- 最初のリリースはCPU推論対応、ARM CPUで最大5.07倍、x86で最大6.17倍の高速化
- エネルギー消費も大幅削減(ARMで最大70%、x86で最大82.2%削減)
- 100B規模のモデルも単一CPUで人間並みの速度(5~7トークン/秒)で動作可能
- 並列カーネルや量子化埋め込みなど最新最適化も導入済み
- llama.cppをベースに開発、T-MACのLookup Table技術も活用
公式モデル・対応モデル
- BitNet-b1.58-2B-4Tなど複数の1ビットLLMモデルをサポート
- Hugging Face公開モデルを利用した推論デモも提供
- ARM/x86両対応、モデルごとにカーネル最適化状況が異なる
- 例: bitnet_b1_58-large(0.7B)、bitnet_b1_58-3B(3.3B)、Llama3-8B-1.58-100B-tokens(8.0B)など
インストール要件・セットアップ
-
Python>=3.9、cmake>=3.22、clang>=18が必要
-
Windowsの場合、Visual Studio 2022のC++開発ツール一式が必要
-
Debian/Ubuntuでは自動インストールスクリプトを提供
-
conda環境の利用を推奨
- リポジトリのクローン
- git clone --recursive https://github.com/microsoft/BitNet.git
- cd BitNet
- 依存関係のインストール
- conda create -n bitnet-cpp python=3.9
- conda activate bitnet-cpp
- pip install -r requirements.txt
- リポジトリのクローン
モデルのダウンロードと実行
- モデルの手動ダウンロード
- huggingface-cli download microsoft/BitNet-b1.58-2B-4T-gguf --local-dir models/BitNet-b1.58-2B-4T
- 環境セットアップ
- python setup_env.py -md models/BitNet-b1.58-2B-4T -q i2_s
- 推論実行例
- python run_inference.py -m models/BitNet-b1.58-2B-4T/ggml-model-i2_s.gguf -p "You are a helpful assistant" -cnv
コマンドラインオプション
-
setup_env.py
- --hf-repo:利用するHugging Faceリポジトリ指定
- --model-dir:モデルディレクトリ指定
- --quant-type:量子化タイプ指定(i2_s, tl1)
- --quant-embd:埋め込みの量子化有効化
- --use-pretuned:事前チューニング済みカーネルパラメータ利用
-
run_inference.py
- -m:モデルファイル指定(必須)
- -n:生成トークン数
- -p:プロンプト指定
- -t:スレッド数
- -c:プロンプトコンテキストサイズ
- -temp:生成テキストのランダム性制御
- -cnv:チャットモード有効化
ベンチマーク・ダミーモデル生成
- ベンチマーク実行
- python utils/e2e_benchmark.py -m /path/to/model -n 200 -p 256 -t 4
- ダミーモデル生成
- python utils/generate-dummy-bitnet-model.py models/bitnet_b1_58-large --outfile models/dummy-bitnet-125m.tl1.gguf --outtype tl1 --model-size 125M
- 生成したダミーモデルでベンチマークが可能
safetensorsからの変換
- .safetensorsモデルの準備
- huggingface-cli download microsoft/bitnet-b1.58-2B-4T-bf16 --local-dir ./models/bitnet-b1.58-2B-4T-bf16
- ggufモデルへの変換
- python ./utils/convert-helper-bitnet.py ./models/bitnet-b1.58-2B-4T-bf16
FAQ(よくある質問)
- Q1: llama.cppビルド時にstd::chronoのエラー発生?
- A: llama.cppのバージョン問題。該当コミットを参照し修正
- Q2: conda環境のWindowsでclangビルド時にエラー?
- A: clang -vで環境確認。Visual Studioツールの初期化コマンドを実行
- コマンドプロンプトの場合: "C:\Program Files\Microsoft Visual Studio\2022\Professional\Common7\Tools\VsDevCmd.bat" -startdir=none -arch=x64 -host_arch=x64
- PowerShellの場合: Import-Module "C:\Program Files\Microsoft Visual Studio\2022\Professional\Common7\Tools\Microsoft.VisualStudio.DevShell.dll"、Enter-VsDevShell 3f0e31ad -SkipAutomaticLocation -DevCmdArguments "-arch=x64 -host_arch=x64"
- A: clang -vで環境確認。Visual Studioツールの初期化コマンドを実行
まとめ
- bitnet.cppは超軽量・高速な1ビットLLM推論の最先端フレームワーク
- ローカル環境・エッジデバイスでのLLM運用を大きく前進
- モデル・OSごとの詳細な導入手順・FAQも完備
- 今後のGPU/NPU対応やさらなる最適化にも期待