Cactus Compute、8〜29MBの自動化モデル「Needle 3」公開

Cactus Compute、8〜29MBの自動化モデル「Needle 3」公開

基本情報

項目 内容
リポジトリ Cactus-Compute/needle3
公開日 2026-09-16
ライセンス apache-2.0
配布形式 safetensors
出典の種類 公開元の一次情報(公式HFリポジトリと公式サイトの一次情報で裏付けあり)

収集・肉付けの時点で当サイトのコードが確定させた値です。日付はJST。

概要

Cactus Compute が、スマートフォン・ウェアラブル・スマートホーム機器・ロボット・車載機器・マイコン向けの「自動化用基盤モデル」として Needle 3 を公開した。公開元によれば、モデル全体が1つの 8〜29 MB のファイルに収まる 2bit 量子化(CQ2)のモデルで、汎用的なチャット能力を意図的に捨てる代わりに、モバイル向けのツール呼び出しでは10倍の規模のモデルを上回り、構造化抽出では2〜3倍の規模のモデルに並ぶとしている。Hacker News の「Show HN」投稿は、収集時点でスコア 128・コメント 67 件を集めている。

Needle 3 がデバイス上で行うのは3つの仕事に絞られている。アプリが公開する関数から適切なものを選んで引数を埋めるツール呼び出し、宣言したスキーマに沿って雑多なテキストから型付きのフィールドを取り出す構造化抽出(分類にも応用できる)、そして同じモデルで文のベクトルを返すテキスト埋め込みである。2つの依頼をすれば2つの呼び出しが順に返り、どのツールにも当てはまらない依頼には推測ではなく空のリストを返す、という振る舞いをモデルカードは強調している。

スペック

  • パラメータ数: 29M〜121M(2層から20層までの「梯子(ladder)」構造。20層で 121M、16層で 98M、8層で 52M、4層で 29M)
  • アーキテクチャ: Laddered Simple Attention Network(Transformer ではない)。FFN の代わりに Monarch Hadamard MLP、因果的な畳み込みタップ付きの GQA アテンション、gather で読み出す engram n-gram メモリ、multi-lane hyper-connections で構成。パラメータの大半が engram 側にあるため、121M のモデルで計算量は 50M 相当だと説明している
  • 「Intelligence laddering」: 2〜20層のどの深さで切っても単体で動くサブネットワークになるよう学習されており、用途に応じて 2L から 20L までサイズを選べる
  • 量子化: Cactus Quants による CQ2-bit(公開元のブログによれば1重みあたり 2.125 bit)。配布形式は独自の .cact
  • 出力の制約: スキーマからコンパイルしたバイト単位の文法(grammar)で全トークンをデコード時に制約し、出力 JSON が必ずパースできることを保証する。各応答には学習済みヘッドによる較正済みの確信度(confidence)が付く
  • 学習データ: 独自の構造化データセット 360B トークン
  • 速度(公開元の測定): Raspberry Pi 5 上でデコード 400〜4k tokens/s、プリフィル 1〜10k tokens/s。同じ構成の Transformer と比べ1トークンあたりの MFLOPs は半分以下

性能

モデルカードは6つのベンチマークの結果を図として載せている。Needle 3 は配布される CQ2 バイナリで確信度ゲートを有効にした状態、比較対象のオープンモデルは vLLM 上の f16、DeepSeek V4 Flash はクラウド API 経由の測定だと注記されている。図の数値をそのまま表に起こす(ツール呼び出しの3つは正解率 %、抽出の3つはフィールド単位の F1 %。空欄は図に無い組み合わせ)。

→ 横にスクロールできます

モデル(規模) Mobile Actions DroidCall BFCL v4 DSTC8 SNIPS gold SNIPS 7-way
DeepSeek V4 Flash(cloud) 88.4 60.5 77.2 80.0 69.4 66.7
Needle3-20L-121M 86.0 47.0 50.2 40.7 30.2 24.7
Needle3-16L-98M 80.7 40.0 41.3 28.5 23.5 19.2
Needle3-8L-52M 36.8 36.5 28.2 15.3 16.6 10.1
Needle3-4L-29M 11.7 21.0 19.5 6.9 7.7 4.3
LFM2.5 1.2B 82.4 35.5 62.0 48.0 43.0 38.0
LFM2.5 350M 72.8 32.5 59.1 20.0 34.0 29.0
LFM2.5 230M 69.3 11.5 46.3 53.0 27.0 22.0
Qwen3.5 0.8B 76.0 28.0 56.8 49.0 35.0 34.0
FunctionGemma 270M 65.1 16.5 46.6 27.0 29.0 14.0
Needle 2(45M) 63.5 17.0
Apple FM(3.0B) 57.6

モデルカードの図によれば、Mobile Actions(スマートフォン向けの命令を Android のインテントに変換する 961 件、完全一致)では 20 層の Needle 3 が 86.0 で、クラウドの DeepSeek V4 Flash(88.4)に 2.4 ポイント差まで迫り、10 倍の規模の LFM2.5 1.2B(82.4)を上回っている。2つの呼び出しを順序どおり返す必要がある DroidCall(200 件)でも 47.0 で、DeepSeek V4 Flash に次ぐ2位につけ、LFM2.5 1.2B(35.5)や Qwen3.5 0.8B(28.0)より高い。

一方で、汎用の関数呼び出しを測る BFCL v4(関数の選択と引数の組み立てが正確かを見る指標)では 50.2 にとどまり、LFM2.5 の 1.2B(62.0)・350M(59.1)、Qwen3.5 0.8B(56.8)に及ばない。抽出系の DSTC8・SNIPS gold・SNIPS 7-way も同様で、LFM2.5 1.2B や Qwen3.5 0.8B より低く、DeepSeek V4 Flash との差は 30〜40 ポイントある。「モバイル向けのツール呼び出しに特化して強い」というモデルカードの説明は表のとおりだが、抽出については「2〜3倍の規模のモデルに並ぶ」という表現ほどの優位は図からは読み取れない(LFM2.5 230M・350M と比べて勝ち負けが分野ごとに分かれる)。

また、投稿タイトルの「DeepSeek V4 Flash に並ぶ」は、素の状態ではなくファインチューニング後の話である。モデルカードによれば、DroidCall でファインチューニングすると全てのサブネットワークが 18〜36 ポイント向上し、4 層(29M)以上では下流タスクで DeepSeek V4 Flash を上回るとしている。逆に言えば、8 層・4 層の小さなサブネットワークは素の状態では Mobile Actions で 36.8・11.7 と実用的な水準になく、自分のツール定義でファインチューニングして使う前提のモデルだと理解しておく必要がある。なお、これらはいずれも公開元自身が公表した数値で、第三者による検証ではない。

得意なこと・想定用途

タグは tool-callingfunction-callingon-deviceedgewebassembly で、用途はモデルカードが明示するとおり「デバイス上での自動化」に限られる。公開元が挙げる具体例は、スマートホーム(「寝室を暗くして戸締まりして」を2つの呼び出しに変換し、ハブとの往復なしにオフラインで実行)、ロボット掃除機への「台所は掃除して寝室はやめて」のような指示、スマートフォン上で写真からアルバムを作る・画面を暗くするといった操作、スマートウォッチでの通知のカード請求を店名・金額・日付に分解する処理、AR グラスでのナビゲーションや周辺検索、車内での空調・メディア・ナビの操作、PC のメール下書きやタイマー起動など、いずれも「話し言葉を、あらかじめ定義した関数呼び出しに落とす」タスクである。

一般的なチャットや文章生成は最初から対象外であり、公開元も「汎用のチャット能力と引き換えにしている」と明言している。ツールの説明文をモデルが文字どおりに読むため、1 アクションに 1 ツール、ユーザーが実際に口にする語で列挙値を命名する、必須引数には既定値を持たせる、必ず特定のツールに届けたい意図には正規表現の triggers を付ける、といった「ツールの書き方」がそのまま精度を左右する設計になっている。確信度は 0.1 未満の呼び出しをエンジン側で suppressed_calls に退避させ、それ以上の値でどう扱うか(即実行・確認・拒否)はアプリ側に委ねる。

Hacker News での反応

議論では、公式のブラウザデモを実際に試した報告が目立つ。「部屋の照明を全部つけて/消して」「浴室が暗い」のような直接的な指示は通るが、「家を暖めて」が照明を暖色に変える呼び出しになった、「寒すぎる」でサーモスタットが下がった、「猫が冷蔵庫の近くで吐いた」でロボット掃除機がリビングを掃除しに行った、といった間接的な言い回しでの誤動作が複数報告されている。誤った応答の確信度は低かったという指摘もあり、デモにしきい値を設けるべきだという意見が出ている。

自分のタスクで比較したという報告もある。ゲームのデータベースに対するツール呼び出しで、BF16 でファインチューニングした FunctionGemma が正しいツール形状 209/230(90.9%)・引数の完全一致 196/230(85.2%)だったのに対し、W4A8 でファインチューニングした Needle 3 は 74/230(32.2%)・47/230(20.4%)にとどまったという。ラベリング用途では MNLI の方が良かったという報告もあり、「用途を相当正確に合わせる必要がある」「小さなモデルが LLM に勝つという主張が増えている今、できないことを明示してほしい」という声が上がっている。一方で、多くのプラットフォームで動く点や梯子構造への評価、データセットの質こそが決定的だという開発経験からの共感もあった。

動作環境

動作環境の目安(Local Model Watch 算出)

手持ちのVRAM 選べる量子化 ファイルサイズ 必要メモリの目安
4GB(ノートPCの内蔵GPU・スマートフォンなど) そのままの精度 0.2GB 0.3GB

推論エンジンの対応状況(各プロジェクトのソースにあるモデル登録表とアーキテクチャ名を当サイトが機械的に照合。2026-09-18 時点): llama.cpp: 未登録、vLLM: 未登録、MLX (mlx-lm): 未登録。「未登録」はその時点の登録表に名前が無いという意味で、動かないことの断定ではありません。

必要メモリは配布ファイルの実サイズに実行時のオーバーヘッド(KVキャッシュ等)を20%見込んだ概算で、文脈長・バッチサイズ・推論エンジンによって増減します。公開元の公称値ではなく、当サイトがファイルサイズから機械的に算出した値です。 他のモデルとの比較はVRAM別の早見表を参照してください。 量子化の名前の読み方は用語集にあります。

入手方法

  • 配布形式: Hugging Face の Cactus-Compute/needle3 に、20 層の needle3.cact、ファインチューニング用の needle3.safetensors チェックポイント、プラットフォームごとの推論エンジン(各 1 MB 未満)が置かれている
  • Python パッケージ: pip install cactus-needle@needle.tool で関数を修飾し、needle.Needle(tools=[...]).run("...") でツール選択から実行、結果の返却までが完結する。抽出は Pydantic のモデルを渡して needle.extract(text, Invoice) のように呼ぶ。エンジンと重みは初回に Hugging Face から取得してキャッシュされる
  • 対応エンジン: llama.cpp や Ollama ではなく専用のエンジンで動く。対象は macOS(Apple Silicon)、Linux(x86_64 / arm64 / armv7 / riscv64 / mipsel)、Windows(x64 / ARM)、Android、iOS、tvOS / watchOS、ブラウザ(wasm)、WASI コンポーネント。needle build --platform <フォルダ名> --layers N でエンジンと任意の深さの重みを並べて書き出し、./needle --model needle3.cact --tools tools.json --prompt "..." の CLI や --serve で使う。C API(libneedle.a / needle.h)も同梱される
  • ファインチューニング: needle finetune data.jsonl --epochs 10 --out adapter.safetensors で 20 層の凍結ベースに LoRA を学習し、needle build --lora adapter.safetensors --out tuned.cact(--layers N で深さを指定)でアダプタを統合し、任意の深さのサブネットワークを 4bit の .cact として書き出す。配布モデルと同じ 2bit の事後学習・量子化は、公開元の Cactus Platform 側でのみ提供される
  • 前掲の「動作環境」の表は、リポジトリの safetensors チェックポイント(ファインチューニング用の元精度)の実サイズから当サイトのコードが算出したもので、実際に配布・実行される .cact はそれより小さい

出典