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-calling・function-calling・on-device・edge・webassembly で、用途はモデルカードが明示するとおり「デバイス上での自動化」に限られる。公開元が挙げる具体例は、スマートホーム(「寝室を暗くして戸締まりして」を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はそれより小さい

