Needle:8〜29MBの端末内「自動化基盤モデル」、スマホ・ウェアラブル・マイコンでツール呼び出しと構造化抽出

Published · AI Daily — AI-assisted deep research, methodology & disclosure

cactus-compute/needleは8〜29MBの単一ファイルモデルで、アプリが公開する関数から呼び出しを選んで引数を埋める、雑多なテキストから型付きフィールドを抽出する、文埋め込みを返す、の3つに特化する。Cactus Compute独自のLaddered Simple Attention Networkを使い、2〜20層のどの深さも単体で配備でき、16.9MBの音声認識モデルWhistleも同梱する。Apache-2.0ライセンスで、執筆時点のスターは約1.39万。性能比較はプロジェクト自身の記述で、独立した再現はまだない。

NeedleはCactus Computeチームがオープンソースで公開する非常に小さなモデルだ。モデル全体が8〜29MBの1つのバイナリで、対象はスマートフォン、腕時計やウェアラブル、ロボット、スマートホーム、自動車、さらにはマイコンまで及ぶ。プロジェクトは「自動化基盤モデル」と名乗り、汎用チャット能力を犠牲にした代わりに、モバイルのツール呼び出しで10倍大きいモデルを上回り、構造化抽出では2〜3倍大きいモデルに並ぶと主張する。これらの比較はREADMEにあるもので、第三者の再現は確認できず、プロジェクト自身の主張として読むべきだ。2026年10月13日時点で、リポジトリは約13,887スター、940フォーク、Apache-2.0ライセンス、主にPythonで、最新の更新は10月11日である。

できることは具体的だ。第一にツール呼び出し。アプリが公開する関数が与えられると、Needleが適切なものを選び、ユーザーの発言からすべての引数を埋める。二つ頼めば順番に二つの呼び出しを返し、どのツールにも当てはまらない依頼には推測せず空のリストを返す。第二に構造化抽出。請求書、予約、通知、フォームなどの形を宣言し、雑多なテキストを渡すと、型付きのフィールドが返る。デコード文法が出力のパース可能性を保証し、抽出は分類にも一般化できる。第三にテキスト埋め込み。同じモデルが文のベクトルを返すので、アプリはローカルで検索、照合、ルーティングができる。第四に姉妹モデルのWhistleは16.9MBの音声認識モデルで、Needleとコンテナ形式とエンジンを共有するため、1回のビルドでNeedleに音声入力が付く。音声が入り、ツール呼び出しが出る。

導入の敷居は低い。pip install cactus-needleのあと、Python関数をデコレーターでツールに指定する。シグネチャが引数の型を、docstringがツールの説明を与え、agent.runが関数を実行して結果を返すところまで閉じる。各ターンはfunction_calls、モデルのreasoning、較正された信頼度confidenceを含む1つのJSONを返すので、アプリは信頼度で実行、確認、拒否を選べる。端末への展開は、needle build --platform macos-arm64のようなコマンドで、プラットフォーム別の事前ビルドエンジンを取得し、needle3.cactの重みを隣に置く。リポジトリにはmacOSやLinux ARM64のターゲットが挙がり、ブラウザやWASIのビルド手順もある。

本当に違うのはアーキテクチャだ。Needle 3は「ラダー式のシンプル・アテンション・ネットワーク」で、通常のフィードフォワード層の代わりにMonarch Hadamard MLP、因果畳み込みのタップ付きグループ化クエリ・アテンション、gatherで読むengram n-gramメモリ、マルチレーンのハイパー接続を使い、2〜20層のどの深さも単体で配備できるよう訓練されている。パラメータの大半はengramにあり、1.21億パラメータのモデルが5,000万パラメータ相当の演算をする。デコード時は、スキーマからコンパイルしたバイトレベルの文法が各トークンを制約し、各応答には較正された信頼度が付く。設計の発想は、数十MBしかない端末では、容量を汎用推論より参照型の記憶に使うほうが得だというものだ。

微調整もこのプロジェクトが強調する点だ。READMEによれば、DroidCallでの微調整で全サブネットワークが18〜36ポイント上がり、4層・2,900万パラメータから、調整後のサブネットワークがDeepSeek V4 Flashを上回る。ローカルの微調整は、基礎重みを凍結したまま注意の射影にLoRAアダプターを学習し、最後に統合して出力する。精度は4ビットで、自分のマシンでJAXを使う。プラットフォーム側の微調整は全モデルを2ビットで学習し、CactusのAPIキーが必要で、自分のデータにNeedleの元データセットを加えて、既に学んだことを忘れないように強化できる。Whistleの数値は、Whisper baseより8.6倍小さく、最初のトークンまで6.6倍速い。LibriSpeech、SPGISpeech、Earnings-22、FLEURS平均では優位で、TED-LIUM、AMI、MLS平均ではWhisper baseが上だ。対応言語は英語、ドイツ語、フランス語、スペイン語、イタリア語、オランダ語、ポーランド語。

私たちの見方では、Needleは非常に具体的な需要を、非常に小さな製品にした。アプリにすでに明確な関数群があり、言葉や音声を確実に呼び出しへ対応づけたいなら、大規模モデルを置くより安く、オフラインでも動く。リスクも具体的だ。すべてのベンチマークはプロジェクト自身のREADMEによる。バイナリはテレメトリがデフォルトで有効なので、プライバシーに敏感な用途ではNEEDLE_TELEMETRY=0とDO_NOT_TRACK=1を設定する必要がある。また会話やオープンドメインの推論はできない。関数群が頻繁に変わるなら、微調整とデータ生成のコストをよく見積もるべきだ。クラウド呼び出しを置き換える前に、自分の実際のツール一覧と実際の話し言葉のサンプルで小規模な評価をすることを勧める。

Sources

FAQ

Needleは何ができて、何ができないのか。

三つのことをする。アプリが公開する関数から呼び出しを選び引数をすべて埋める(合うツールがなければ推測せず空のリストを返す)。雑多なテキストから宣言した形で型付きフィールドを抽出する。文を埋め込みにしてローカル検索やルーティングに使う。汎用チャット能力を捨ててこれらの性能を取ったと、プロジェクト自身が明記している。

「ラダー」構造の実利は何か。

2〜20層のどの深さも配備可能なモデルなので、同じ重みを端末の大きさに応じて切り出せる。READMEによれば、DroidCallで微調整すると全サブネットワークが18〜36ポイント上がり、4層・2,900万パラメータから、調整後のサブネットワークがDeepSeek V4 Flashを上回る。いずれもプロジェクト自身の結果だ。

使うときの注意点は。

バイナリはテレメトリがデフォルトで有効で、NEEDLE_TELEMETRY=0とDO_NOT_TRACK=1で無効にする。性能比較はREADMEにあり、独立した評価はまだない。ローカル微調整は4ビットのLoRAアダプターだけを学習し、プラットフォーム微調整は全モデルを学習してCactusのAPIキーが必要になる。