- Microsoftのbitnet.cppは、1ビット大規模言語モデル(LLM)の公式推論フレームワークであり、CPUとGPUで高速かつ損失のない推論をサポート
- ARM CPUで1.37〜5.07倍の高速化と55.4〜70%の省エネルギー化、x86 CPUで2.37〜6.17倍の高速化と71.9〜82.2%の省エネルギー化を達成
- 並列カーネル実装と埋め込み量子化を追加し、従来比で1.15〜2.1倍の追加性能向上を提供
- BitNet b1.58モデルを単一CPUで毎秒5〜7トークンの速度で実行可能で、ローカル環境での超大規模モデル運用の可能性を拡大
- llama.cppとT-MACを基盤に開発され、低ビットLLM推論の効率化に向けたオープンソースエコシステムの拡大に貢献
bitnet.cpp 概要
- bitnet.cppは**1ビットLLM(例: BitNet b1.58)**のための公式推論フレームワークで、CPUとGPU向けに最適化されたカーネルを提供
- 初回リリースではCPU推論をサポートし、ARMとx86アーキテクチャの両方で速度とエネルギー効率の改善を実証
- ARM CPU: 1.37〜5.07倍の高速化、55.4〜70%の省エネルギー化
- x86 CPU: 2.37〜6.17倍の高速化、71.9〜82.2%の省エネルギー化
- 100BパラメータのBitNet b1.58モデルを単一CPUで毎秒5〜7トークンの速度で実行可能
最新の最適化
- 並列カーネル実装、タイリング構成、埋め込み量子化機能が追加され、従来比で1.15〜2.1倍の追加高速化を達成
- 多様なハードウェアプラットフォームとワークロードで性能向上を確認
- 詳細な技術内容は
optimization guide文書で提供
デモと公式モデル
- Apple M2でBitNet b1.58 3Bモデルを実行するデモを提供
- 公式モデルとしてBitNet-b1.58-2B-4TがHugging Faceで公開されており、x86およびARM CPUでサポート
- 対応モデルにはbitnet_b1_58-large(0.7B)、bitnet_b1_58-3B(3.3B)、Llama3-8B-1.58、Falcon3、Falcon-Eシリーズを含む
インストールとビルド
- 要件: Python 3.9以上、CMake 3.22以上、Clang 18以上
- WindowsユーザーはVisual Studio 2022のインストールが必要
- Debian/Ubuntuユーザー向けには自動インストールスクリプトを提供
- Conda環境の使用を推奨し、
setup_env.pyでモデル環境を設定可能
- Hugging Faceからモデルをダウンロードし、ローカルパスで実行可能
使い方とベンチマーク
run_inference.pyで量子化モデルの推論を実行
- 主な引数: モデルパス(-m)、プロンプト(-p)、スレッド数(-t)、コンテキストサイズ(-c)、温度(-temp)
e2e_benchmark.pyスクリプトでトークン数、プロンプト長、スレッド数を指定して性能測定が可能
- 公開モデルがない場合は、
generate-dummy-bitnet-model.pyでダミーモデルを生成してからベンチマークを実行可能
モデル変換とFAQ
.safetensorsチェックポイントをgguf形式に変換するスクリプトを提供
- FAQでは**llama.cppのビルドエラー(std::chrono関連)**の解決方法と、Windowsでのclang環境設定手順を案内
- Visual Studio開発者コマンドプロンプトまたはPowerShellで環境の初期化が必要
1件のコメント
Hacker Newsの意見
Microsoftは実際には 1.58ビットではなく2ビット を使っている
この場合、-1、0、1、2 の4つの値を表現できる
抑制性シナプスが20〜30%を占めることを考えると、この構造は 生物学的な脳の構造 とよく一致していると思う
私はしばしば「最小機能LLM」がどんな形になるのか気になる
つまり、最小限の情報だけを持ち、残りはググって補っても十分に妥当な答えを出せるモデルのことだ
Encyclopedia Britannica のようなところがデータをLLMに販売し、結果の検証サービスも提供すれば、大きな違いを生むかもしれない
Wikipediaも良いが、人間の誤りや偏り が多いのが惜しい
小さなLLMはすでにこうした方向に発展しつつあり、一般知識は乏しくても ツール活用能力(例: ググること) はどんどん向上している
ただし、自分が知っていることと知らないことを明確に区別するのは、依然として難しい問題だ
まるで特定の機器を知らないエンジニアのように、問題解決能力はあるが細部の知識はない
こうしたモデルが単なるググりやWiki検索で解決できるのかは疑問だが、エッジLLMアーキテクチャ は今後標準になる気がする
訓練データに含まれている情報ほど検索と解釈がしやすくなる
したがって、内部記憶よりも 外部メモリ(検索など) 依存型の訓練のほうが実用的かもしれない
私はむしろ逆だと思う
元論文(pdf)によると、fp16モデル比で約 4〜5倍のパラメータ が必要になる
自分でビルドすることはできるが、最初から学習しなければならないので、選択肢は限られている
それでも、最新の4ビット・8ビット量子化モデルより 推論速度 は速いと予想される
本当の要点は 省エネルギー効果 だ
CPU推論で70〜82%の削減が可能だという
もし1ビットモデルが十分に良くなれば、GPUなしでも一般的なハードウェアでLLMを動かせるようになり、アクセシビリティの構図 が変わるだろう
bitnet.cpp は1ビットLLM(BitNet b1.58 など)の公式推論フレームワークだというが、
「1ビットなのか1トリット(trit)なのか」という混乱がある
この2つの概念を混ぜて使うのは紛らわしい
このプロジェクトが継続して開発されているのを見てうれしい
去年 関連文 を読んで可能性を感じたが、新モデルが出てこなくて残念だった
本当に面白いのは、浮動小数点演算なしで バイナリモデルを直接学習 する方向だ
関連論文は NeurIPS 2024 にある
「100B BitNetを実行できる」というのは モデルが存在するという意味ではなく、推論フレームワークが可能だという意味 だ
「1-bit 100b model」で検索しても、ダウンロード可能なモデルは見当たらない
モデル出力の品質は GPT-2レベルのぶつぶつした出力 に近く、段落をそのまま繰り返す
しかも
(Jenkins, 2010)のような 偽の引用 を繰り返し再利用するタイトルが誤解を招く
実際には学習済みの100Bモデルではなく、それを 処理できる推論フレームワーク だ
私は M2 Max 96GB で llama.cpp + LiteLLM により 70B量子化モデルを動かしているが、メモリ帯域幅 がボトルネックになっている
1.58ビットのアプローチは 行列積を加算に置き換える構造 なので、CPU上では根本的に異なる計算パターンを持つ
もしCPUの単一コアで100B級モデルを毎秒5〜7トークンで動かせるなら、オンデバイス推論の転換点 になるだろう
フレームワークは整ったので、あとは 誰かが実際にモデルを学習 しなければならない
宣伝に比べて実質的な成果が乏しい
学習には依然としてGPUが必要だろうが、推論向けハードウェア ははるかに単純化できるかもしれない
私は7トークン/秒で出力するモデルを使ったことがあるが、歩くのが遅い人の後ろをついていくようなもどかしさ があった
ローカル環境では最低でも毎秒10トークン以上を目標にすべきだ
現代CPUの FMA(Fused Multiply-Add) 命令は、単純加算とほぼ同じスループットを持っている
今後 NPU搭載PC が本格的に成果を出すのはいつなのか気になる
AMDはNPU/iGPUハイブリッド推論カーネルで良い結果を出している
こうした大型モデルがNPUで動けば、CPU比で 電力効率 ははるかに良くなるだろう
それ以来、NPUのファンになった。もちろんRTX 5090級ではないが、CPUよりはるかに効率的だ
ソフトウェアエコシステムは不安定だが、CPU/GPU使用率ほぼ0 で動作する
私はそれらが 低消費電力重視の設計 だと理解していた