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

Show HN: Needle2: 14MB エージェント型 LLM for スマートフォン、ウェアラブル、スマートホーム、ロボット

概要

  • Needle 2 は、45Mパラメータ・2bit圧縮で14MBの超軽量LLM
  • $200未満デバイス (スマホ、Raspberry Pi、マイコン等)向けに最適化
  • オンデバイスAI として低消費電力・高速・オフライン動作を実現
  • 構造化出力・ツールコール に特化し、従来LLMより圧倒的に小型・高速
  • ファインチューニング やエッジ・クラウド連携もサポート

Cactus Needle 2:$200未満デバイス向け超軽量エッジAI

  • ターゲット は、GPU/NPU非搭載・数百MB RAMの低価格デバイス

    • 例:格安スマホ、Raspberry Pi、マイコン、ウェアラブル、家庭用IoT、簡易ロボット等
    • 世界のIoTデバイス21億台以上の大半をカバー
  • 主な用途

    • ツールコール(例:家電操作、ロボット制御、ウェアラブルのアクション実行)
    • 構造化抽出(スキーマに基づくテキスト分類やフィールド抽出)
  • 設計思想

    • 「関数呼び出し+型付きパラメータ」へのマッピングのみをLLMに任せる
    • 世界知識や自由文生成を排除し、必要パラメータ数を大幅削減(45Mで十分)
  • 出力形式

    • スキーマ+入力文→型付きフィールドを返す構造化出力
    • 全出力は「コール封筒」で返却、拒否時は空コール
    • 宣言済みスキーマから生成したバイトレベル文法で出力を厳密制約
  • エッジ・クラウド連携

    • 各応答に「信頼度スコア」を付与
    • スコアが閾値未満ならクラウドや大型モデルへエスカレーション
    • ほとんどの操作はローカルで完結、プライバシー・即応性・無料を維持
  • 2bit量子化による圧縮

    • Needle 2は事後量子化せず、2bit量子化を学習段階から適用
    • 重み・活性化・KVキャッシュ全てを2bitで統一
    • 14MBに45Mパラメータを完全収容、品質劣化なし
  • モデル&推論エンジンの共同設計

    • すべてのアーキテクチャ選択を実機ベンチマークで決定
    • 単一の依存性ゼロC++バイナリで提供(モデル・トークナイザ・文法コンパイラ内蔵)
    • Cortex-M~x86~WebAssemblyまでワンバイナリで動作、インストール不要
  • ファインチューニング

    • 45Mの小型モデルのため、Mac/PCで数分~数時間で再学習可能
    • 各製品固有のツール語彙・スキーマに最適化したNeedleを容易に作成

省メモリ・高速・省電力アーキテクチャ

  • Simple Attention Network

    • 27層・幅512の多層残差ストリームと固定Walsh-Hadamard変換を活用
    • 固定文法とバイトレベル制約で出力候補を事前に絞り、計算量を最大98%削減
    • Engram(ハッシュn-gramテーブル)で世界知識を外部メモリ化、推論時のコストほぼゼロ
  • メモリ設計

    • 256トークンスライディングウィンドウでKVキャッシュサイズを固定
    • システムプロンプト・ツール宣言はキャッシュから絶対に消えない設計
    • RAM消費は常に28MB(会話長に依存しない)
  • エンジン最適化

    • 2bit重みはRAMに展開せず、ベクタレジスタ内で展開・整数演算のみで推論
    • CPU起動時にカーネル自動選択(SDOT, NEON, AVX2, RISC-V, wasm SIMD等)
    • 出力文法から合法トークンのみ計算、不要な計算を徹底的に省略
    • どの最適化も出力トークン単位でリファレンスと完全一致を保証
  • 消費電力・FLOPs削減

    • 通常トランスフォーマの70~85分の1のFLOPs/トークン
    • 14MBバイナリのみで推論、ストレージ・RAM・バッテリ消費を最小化
    • Always-onアシスタント用途でも高級スマホで十分なバッテリ持ち

ベンチマーク・実績

  • 推論速度

    • Raspberry Pi 5で500トークン/秒、Meta Quest 3SやApple Vision Proで400~1,500トークン/秒
    • Samsung Aシリーズ等$200未満スマホで300~700トークン/秒
  • 精度・比較

    • Google Mobile Actions, DroidCall, Seal-Tools, BFCL v4等の公開ベンチマークでLFM2.5 230MやApple Foundation Modelと同等~上回る精度
    • モデルサイズは5~70分の1、精度は同等または一部勝利
  • 用途例

    • Pebble Index Ring等、画面なしウェアラブルでローカル音声コマンド実行
    • スマートホーム、ロボット制御、産業IoT等、即応性・プライバシー重視の現場実装実績

まとめ・今後

  • Needle 2 は、超小型・高速・省電力なツールコール特化LLM
  • $200未満のエッジデバイス で、クラウド不要のAI体験を実現
  • ファインチューニング・クラウド連携 も容易で、あらゆるIoT・組込用途に最適
  • 公式GitHub やプレイグラウンドで試用・提案歓迎(https://github.com/cactus-compute/needle)

関連リンク・参考

Hackerたちの意見

ウェブデモの面白い結果だね。すごく小さくて、まあ、バカみたいなモデルだってことは分かってるけど、それでもさ。 クエリ: HN 結果: { "function_calls": [ { "name": "lock_door", "arguments": { "door": "front door" } } ], "reasoning": "ユーザーはドアをロックしたい。特定のドアは言及されてないから、デフォルトで「前のドア」を使う。", "confidence": 0 } 理解できないクエリに対しては、少なくとも無視する(ツールを呼ばない)くらいはしてほしいよね。実際、そういうことはしてるみたいだけど、一貫性がないみたい。

いや、これが「HN」って言葉を聞いたときの正しい反応だよ :P

それが最初に送ったメッセージだったの?

ウェブサイトには、このモデルは「ツール呼び出し、デバイス使用、構造化抽出」のためのものって書いてあるね。君の例はあんまり関連性がない気がする。ちなみに、私が試したときはツール呼び出しは結構うまくいったし、これをローカルで動かしてHome Assistantと統合できたらいいなって思ってる。

"confidence": 0だから、しきい値を設定できるかもね。

うん、私も同じ結果だった。まるで0ランクに強く偏ってるみたいだね。私のプロンプトは「potato」って言葉だけだったのに。

だからこそ、信頼度機能が導入されたんだよね。モデルは自分が間違ってるときが分かるから、その部分を隠して「ごめん、関数呼び出ししかできないよ」ってプレースホルダーを返すのもアリかな?それとも、全部見たい?

「ドアをロックしないで」ってプロンプトで同じ出力が出たよ。

それはすごいね!もう「functiongemma-270m-it」を1〜2ビットに圧縮して、ブラウザで完璧に動くようにしようと思ってたところだよ。君の「ファインチューニング」機能はさらに便利だね。

ありがとう、ちょっと試してみるよ!

これいいね!「マイクロ」サイズのLLMの分野はあまり評価されてないと思うから、こういう取り組みを見るのは嬉しい。将来的には、もっと優れたモデルが小さいモデルを特定のタスクを効率的に解決するためにトレーニングする階層的なLLMのパラダイムが見える気がする。こういうのがその一番小さい層になるかも。でも、ウェブデモは特に印象的じゃないね。何を投げても全然ダメだし。ファインチューニングが解決策だってのは分かるけど、もっと大きなモデルから得られるものはあるのかな?これが全体の趣旨に反するのは分かってるけど、14MBのバイナリが28MBのRAMを使うのは必要以上に小さくて、ちょっと無意味な気がする。28MBのバイナリって何ができるんだろう?140MBのバイナリとか、1.4MBのバイナリは?14MBの選択は、特定の要件やパフォーマンス期待を満たしつつサイズを最小限に抑えるためだと思うけど、Pi 5でももっと余裕があるしね。これに関して良い説明があれば知りたいな(投稿をざっと読んだだけだから見逃してるかも)。

つまり、一般的な言語モデルじゃなくて、超小型エッジデバイス向けのツール呼び出しに特化してるんだね。高性能デバイス向けのソリューションはどこにでもあるけど、Needleは200ドル以下のデバイス用だよ。

Hacker Newsで議論の続きを見る