世界を動かす技術を、日本語で。

Show HN: 1ビット盆栽、初の商業的に実用可能な1ビットLLM

概要

  • 1-bit Bonsaiシリーズ は超省メモリ設計のAIモデル。
  • 1-bit重み 採用で、従来のフル精度モデルと同等の精度を維持。
  • 8B/4B/1.7B の3種類を展開し、用途に応じて選択可能。
  • ロボティクスやエッジコンピューティング など、リアルタイム処理に最適。
  • 高い知能密度・高速処理・省エネルギー性能 を実現。

1-bit Bonsai 8Bの特徴

  • 1-bit重み を採用した初の商用モデル
  • メモリ使用量1.15GB という超省サイズ
  • ロボティクス、リアルタイムエージェント、エッジコンピューティング 向け設計
  • フル精度8Bモデル比で14倍小型化
  • 8倍高速化
  • 5倍のエネルギー効率
  • ベンチマークで主要8Bモデルと同等の精度
  • 知能密度10倍超 の実現

1-bit Bonsai 4Bの特徴

  • メモリ使用量0.57GB の軽量モデル
  • M4 Pro毎秒132トークン の高速生成
  • 高精度と省エネルギー性能の両立
  • パフォーマンスとスピードが求められるワークロード に最適

1-bit Bonsai 1.7Bの特徴

  • メモリ使用量0.24GB という極小フットプリント
  • iPhone 17 Pro Max 上で 毎秒130トークン の高速処理
  • 業界最高水準の省エネルギー性能 と安定した精度
  • 軽量ながら高度なタスクにも対応可能 な設計

Hackerたちの意見

大きな機械学習モデルのトレンドは、浮動小数点ではなくビットに向かうと思う。浮動小数点には効率が悪い部分が多いんだよね。通常、浮動小数点は正規分布みたいなものだから、大半の値が狭い範囲に集まってると、重みのストレージや計算が非効率的になる。ニューラルネットワークの基盤は実数値関数に根ざしてるけど、浮動小数点の演算は実際にはビット単位の演算なんだ。問題は、GPUが浮動小数点で動作することと、標準的な機械学習理論が実数に基づいていることだね。

そして標準的な機械学習理論は実数に基づいている。この論文は、トレーニングにもバイナリ数だけを使っていて、しっかりした理論的基盤があるよ: https://proceedings.neurips.cc/paper_files/paper/2024/file/7... TL;DR: 彼らは「ブール変動」という概念を発明していて、これはニュートン/ライプニッツの導関数のバイナリアナログなんだ。これによって、バイナリで直接バックプロパゲーションができるようになったんだ。

そのトレードオフは何なの?もし小さくて速くて効率的なら、パフォーマンスは悪くなるの?素人なんだけど、ちょっと気になってる。

彼ら自身の(おそらく選りすぐりの)ベンチマークでは、モデルが「市場の中間」に位置してるみたい(llama3 3b、qwen3 1.7b)。claudeやchatgtp、geminiとは競争してないね。これらのモデルは直接触りたいものではないけど、分類や簡単な要約、翻訳タスクにはすごく役立つ。サイズに対してかなり印象的なモデルだよね。古いラズベリーパイでも扱えるくらいだし。この手のモデルにはまだまだ使い道があるよ。

彼らのホワイトペーパーを見てみると(https://github.com/PrismML-Eng/Bonsai-demo/blob/main/1-bit-b...)、モデルの知能が低下しているためにいくつかのトレードオフがあることに気づくよ(10ページ)。このモデルのMMLU Redux、MuSR、GSM8K、Human Eval+、IFEval、BFCLv3の平均は70.5で、Qwen3の79.3に対して低いけど、サイズは16倍小さく、4090では6倍速いから、かなり尊敬できるトレードオフだと思う。個人的にはここでファインチューニングのコードに興味があるな。

128ビットごとにFP16スケールファクターの1ビット。こんなにうまくいくのが不思議だね。いくつか試してみたけど、Cursorを動かすことができたのはすごかった。ツールの使用もこなしてたし。Cursorを使っていくつかのウェブページテストを生成させた。πのモンテカルロシミュレーションでは、論理は正しかったけど、テストを開始するインターフェースを作れなかった。変更をリクエストするのはほぼ成功したけど、いくつかの記号が残ってて、それが原因で失敗した。少し手動で編集が必要だった。Simon Wilsonのペリカンも試したけど、すごく抽象的で、鳥や自転車とは全然認識できなかった。結果の写真はこちら: https://x.com/pwnies/status/2039122871604441213 彼らのウェブページにはデモリンクがないみたいだから、もし試したい人がいたら、私のローカルデスクトップで動いてるllama.cppをどうぞ。この投稿の後、数時間は動かしておくよ: https://unfarmable-overaffirmatively-euclid.ngrok-free.dev

こちらがGoogle Colabのリンクだよ: https://colab.research.google.com/drive/1EzyAaQ2nwDv_1X0jaC5... ngrokは多くの人が来たせいでDDoS攻撃を受けたみたい。

スピードがすごいね。投機的デコーディングに似た設定ができればいいのに。

あなたのインスタンスへのリンクをシェアしてくれてありがとう。反応がめちゃくちゃ早かった。いくつか試してみた結果は以下の通り: 1. 都市名と国名を入力して、緯度/経度を見つけてggmapsでマッピングするRスクリプトを生成した。かなり decent なスクリプトが生成されたよ(もっと最適化できるかもしれないけど、モデルのサイズにしては印象的)。geojsonを使うといいという警告もあった。2. ガウス積分方程式を表示するためのlatexスクリプトを生成した - 一般的なバージョンではなく、確率分布関数を使った(と思う)非標準バージョンを生成したけど、それでもポイントをあげたい。式やパラメータの説明、BASHを使ってスクリプトをコンパイルする方法も教えてくれた。3. オイラーの恒等式を表示するためのlatexスクリプトを生成した - これは完璧にこなした。1ビットモデルでこんなに小さくて反応が早いのに、知識の密度がすごいってことに強く同意するよ。

わー、思ったよりクールだった!軽めのセマンティックワークフローにこれを組み込むのが楽しみだな。

なんか初期のChatGPTを思い出すな。ほとんど正しい答えだけど、たまに意味不明なことも言う。速度を考えると、答えをダブルチェックする「思考」フェーズを設けたり、検索を使ったりすると、もっと役立つかもしれないね。

ありがとう。これを動かすのにPrismのllama.cppフォークを使う必要があった?

ありがとう、テストしてみたけど、ストロベリーテストで失敗した。サイズが似てるqwen 3.5 0.8Bは合格して、ずっと使いやすいよ。

いや、ほんとにめっちゃ早いね。デスクトップのセットアップはどうなってるの?GPUは?

GPUがないからCPUオプションを試してみたら、古い2018年のノートパソコンで0.6t/s出たよ。そしたら、Q1_0_g128のCPUカーネルにAVX2が実装されてないことが分かった。それを追加したら、約12t/sになった。古いマシンにしては悪くないね。いいモデルだ。

「悪くない」ってのは大きな過小評価だね。

それ以外に意味のある出力は得られてる?推奨されてるコマンドラインを試したけど、AVX2を有効にしてもすごく遅いんだ。これが出力された内容:$ ./build/bin/llama-cli -hf prism-ml/Bonsai-8B-gguf -p "量子コンピューティングを簡単に説明して。" -n 256 --temp 0.5 --top-p 0.85 --top-k 20 -ngl 99 > 量子コンピューティングを簡単に説明して。( , None ( no for the. (,./. all.2... the ..... by/ 編集:彼らのコラボノートブックでは問題なく動いてるよ。ビルドする前に、llama.cppリポジトリでgit checkout prismをやらなきゃいけないみたい。それが抜けてたら、彼らのフォークに直接行くときは注意だね。今はちゃんと動いてるよ。

誰かこれをCPUで動かす方法知ってる?彼らのllama.cppフォークをソースからビルドする必要があるのかな?リリースページにはCUDAオプションしかないみたいで、CPUモードもサポートしてるかもしれないけど、CUDAがインストールされてないと動かないみたい。ちょっと変だと思う。低スペックのデバイスをサポートするのが目的だと思ってたのに!編集:30分のC++コンパイル時間の後、動かせた。ただ、7GBのRAMを使って、モデルの読み込みでハングする。これって4ビットの量子化よりメモリを食わないと思ってたんだけど?編集2:4Bバージョンを動かせたけど、0.1トークン/sで出力が意味不明だった。同じマシンでqwen 3.5 4Bモデル(4ビット量子化)を正しく動かせるし、約50倍速いよ。

これがどれだけスケールするのかすごく気になる。Bonsaiは1.15GBで8Bモデルを提供してるけど、27Bや35Bモデルはどれくらいのサイズになるんだろう?それでもあの大きなモデルの精度を保てるのかな?スケーリングがうまくいけば、64GBのRAMで100B以上のモデルが見られるかもしれないね。

モデルのトレーニングにどれくらいお金がかかるかにもよるね。フルプレシジョンモデルと同じくらいはかかるんじゃないかな、そうじゃなきゃ言及してないはずだし。

サイトには14倍少ないメモリ使用量って書いてあるけど、ちょっと混乱してる。モデルファイルは確かにすごく小さいけど、俺のマシンでは4ビットの量子と同じくらいのRAMを使ったよ(CPUで)。ただ、実際の英語の出力は得られなかったから、実行中に何かおかしかったのかも。

このモデルは最新のLocally AIアプリのアップデートでiPhoneでも動かせるよ: https://apps.apple.com/us/app/locally-ai-local-ai-chat/id674... サイズ(1.2GBのダウンロード)にしてはかなりすごい。これが俺の電話で描いてくれたペリカンだよ - SVGのコメントは良いけど、画像はあんまりだね: https://tools.simonwillison.net/svg-render#%3Csvg%20width%3D...

自転車を持ったペリカンを頼んだの?それともそれはおまけだったの?

次の5時間はオープンアクセス(8GiBモデル、RTX 3090で動作中)か、サーバーがクラッシュするか、このスポットインスタンスが取られるまで :) => https://ofo1j9j6qh20a8-80.proxy.runpod.net ./build/bin/llama-server \ -m ../Bonsai-8B.gguf \ -ngl 999 \ --flash-attn on \ --host 0.0.0.0 \ --port 80 \ --ctx-size 65500 \ --batch-size 512 \ --ubatch-size 512 \ --parallel 5 \ --cont-batching \ --threads 8 \ --threads-batch 8 \ --cache-type-k q4_0 \ --cache-type-v q4_0 \ --log-colors on サーバーは5つの並列リクエストを処理できて、各リクエストは約13Kトークンに制限されてるよ... 俺がやったベンチマークの一部:1. 入力:700トークン、ttfs:約0秒、出力:1822トークン ~190t/s 1. 入力:6400+トークン、ttfs:約2秒、出力:2012トークンで ~135t/s VRAM使用量は常に約4GiBだったよ。

それは本当にすごかった。https://pastebin.com/PmJmTLJN ほぼ瞬時に。 (すごく弱いモデルではできないことだね。)

ありがとう!そのスピードに感心してるよ。

KVキャッシュはフル精度で保持した方がいいね。

サイズに対して本当に印象的だね。誰かが100B以上のモデルを1ビットでネイティブにトレーニングしたらどうなるか、ちょっと気になる。