概要
- Needle は26Mパラメータの超軽量関数呼び出し(ツール利用)モデル
- 完全オープンソース ・MITライセンスで、Mac/PC上でローカルファインチューニング可能
- FFN(MLP)非搭載 のSimple Attention Network構造、推論速度も高速
- ツール呼び出し特化 でFunctionGemma等の他小型モデルを上回る性能
- Cactus 推論エンジン上で動作、スマホ・ウェアラブル等の端末向け設計
Needle: 超軽量ツール呼び出しモデルの全貌
- Gemini 3.1 を元に、パラメータ数26Mの「Simple Attention Network」へ蒸留
- Mac/PC上でローカルファインチューニング が可能な設計
- Cactus 推論エンジン上で動作、6000トークン/秒(prefill)、1200トークン/秒(decode)の高速処理
- モデル重み・データ生成方法も完全公開 (Cactus-Compute/needle)
- ネットワーク構成
- d=512, 8ヘッド/4KV, BPE=8192
- FFN(フィードフォワード層)非搭載、全層がAttention+Gating
- Decoder 8層、Encoder 12層、クロスアテンション採用
- ZCRMSNorm, Masked Self Attn+RoPE, Gated Residual
- Embeddingは共有、出力はJSON形式でツール呼び出し
- 事前学習
- 16 TPU v6eで2000億トークン(27時間)
- 追加で20億トークン(45分)のシングルショット関数呼び出しデータで後学習
- データセットはGeminiで合成(タイマー、メッセージ、ナビ、スマートホーム等15カテゴリ)
- FunctionGemma-270M, Qwen-0.6B, Granite-350M, LFM2.5-350M をシングルショット関数呼び出しタスクで上回る性能
- ただし、会話的用途では他モデルに軍配
- 小型モデル特有の繊細さ もあるため、用途ごとにファインチューニング推奨
シンプルアテンションネットワークの特徴と設計思想
- ツール呼び出し(Tool Call)=情報検索&組み立て
- クエリ→ツール名のマッチング、引数抽出、JSON生成
- 本質的に「推論」より「検索・組み立て」作業
- クロスアテンションが最適解
- FFNパラメータはこの規模では無駄
- Attention+Gatingのみで十分な表現力
- 外部知識(RAG, Tool Use, Retrieval-Augmented Generation)活用タスクにも一般化可能
- モデル重みに事実を記憶させる必要なし、入力に与えればOK
- スマホ、ウェアラブル、カスタムハードウェア等のエッジ端末でのAI体験を重視
- 大規模モデルはオーバースペックとの問題意識
- 軽量で高速な「エージェント的体験」を実現
利用方法・クイックスタート
- GitHubリポジトリ: https://github.com/cactus-compute/needle
-
クローン&セットアップ
git clone https://github.com/cactus-compute/needle.gitcd needle && source ./setupneedle playground(Web UI起動、http://127.0.0.1:7860)
-
Python API例
from needle import SimpleAttentionNetwork, load_checkpoint, generate, get_tokenizer params, config = load_checkpoint("checkpoints/needle.pkl") model = SimpleAttentionNetwork(config) tokenizer = get_tokenizer() result = generate( model, params, tokenizer, query="What's the weather in San Francisco?", tools='[{"name":"get_weather","parameters":{"location":"string"}}]', stream=False, ) print(result) # [{"name":"get_weather","arguments":{"location":"San Francisco"}}] -
ファインチューニング方法
needle playground(Web UIからデータ生成・学習・評価・バンドルまで一括)needle finetune <data.jsonl>(CLIで独自データ学習)needle run --query "..." --tools(単発推論)needle train(フル学習)needle pretrain(事前学習)needle eval --checkpoint <path>(評価)needle tokenize(データセットのトークナイズ)needle generate-data(Gemini経由で合成データ生成)needle tpu <action>(TPU管理)
Cactus推論エンジンとエコシステム
- Cactus: スクラッチから開発された推論エンジン
- モバイル、ウェアラブル、カスタムハードウェア向け最適化
- 詳細:https://github.com/cactus-compute/cactus
- Cactus関連紹介記事:https://news.ycombinator.com/item?id=44524544
- MITライセンス で利用・改変自由
- モデル重み: https://huggingface.co/Cactus-Compute/needle
- コミュニティ参加・貢献歓迎
まとめと今後の展望
- Needle は「ツール呼び出し特化」の超軽量AIモデル
- エッジ端末でのAI体験刷新 を目指すCactusプロジェクトの一部
- FFN不要論 はRAGやTool Use等の他タスクにも波及可能性
- さらなる実験・結果公開予定
- 開発者・研究者によるテスト・ファインチューニングを推奨