Needleとは何か: Gemini 3.1を26Mパラメータに蒸留したシンプルアテンションネットワーク

**# Needle: Gemini 3.1を26Mパラメータに蒸留したシンプルアテンションネットワーク**

## 概要

**Needle**は、Cactus Computeが2026年にリリースした**26百万(26M)パラメータ**の小型言語モデルです。Googleの**Gemini 3.1**からツール呼び出し(function calling / tool use)能力を蒸留し、**Simple Attention Networks**という独自アーキテクチャを採用しています。

最大の特徴は、**Mac/PCでローカルに微調整(fine-tuning)可能**である点と、**Cactus**という推論エンジン上で**6000 tok/s prefill**、**1200 tok/s decode**という極めて高速な動作を実現することです。スマートフォン、スマートウォッチ、眼鏡などのエッジデバイス向けに設計された、シングルショット機能呼び出しに特化したモデルです。

MITライセンスで完全にオープンソース。WeightsはHugging Face(Cactus-Compute/needle)で公開されています。

## 技術的背景とアーキテクチャ

従来のTransformerでは、パラメータの多く(約2/3)が**FFN(Feed-Forward Network / MLP)**に費やされます。しかしNeedleは**「FFNを完全に排除」**した**Simple Attention Networks**を採用しています。

### 主な特徴
- **Encoder-Decoder構造**:Encoder 12層 + Decoder 8層
- **d_model=512**、**8H/4KV (GQA)**、**RoPE**、**vocab=8192 (BPE)**
- **ZCRMSNorm**(Zero-Centered RMSNorm)と**Gated Residual**を活用
- **Cross-Attention中心**:ツール定義とのアライメントに特化
- **Contrastive Tool Selection Head**(CLIP-style):大量のツールから関連ツールを事前選択

**なぜFFNを捨てたか**(公式ドキュメントより):
- ツール呼び出しは「クエリとツール定義のマッチング+情報コピー」が主で、Attentionが最適。
- 小規模モデルではFFNパラメータが非効率。
- 外部知識(ツールリスト)が与えられるタスクでは、内部記憶(FFN)が不要。

この設計により、極めて軽量でメモリ効率が高く、エッジデバイスでの低レイテンシ推論を実現しています。

## 性能と比較

**Cactus上でのベンチマーク**:
- Prefill: **6000 tokens/sec**
- Decode: **1200 tokens/sec**

シングルショット機能呼び出しタスクでは、以下のモデルを上回る性能を示しています:
- FunctionGemma-270M
- Qwen-0.6B
- Granite-350M
- LFM2.5-350M

ただし、これらのモデルは**会話能力や汎用性で優位**であり、Needleは**ツール呼び出し特化**です。小型モデル特有の不安定さ(fickly)も指摘されています。

## 使用方法とローカル微調整

**Quickstart**(Mac/PC対応):
```bash
git clone https://github.com/cactus-compute/needle.git
cd needle && source ./setup
needle playground
```
→ Web UI(http://127.0.0.1:7860)が起動。自分のツールを登録して即時テスト・fine-tuning可能。Weightsは自動ダウンロードされます。

**Python使用例**:
```python
from needle import load_checkpoint, generate, SimpleAttentionNetwork, 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
)
# → [{"name":"get_weather","arguments":{"location":"San Francisco"}}]
```

**Fine-tuning**:
- Playground経由でGeminiを使って合成データ生成 → 訓練 → 評価をワンクリック。
- CLI: `needle finetune data.jsonl`

**注意**: `pickle`ファイルを使用するため、信頼できるソースからのみロードしてください(セキュリティリスク)。

## 限界と将来性

**限界**:
- 会話能力や汎用推論は劣る(特化型)。
- 小型モデルゆえの出力不安定性。
- 現在はシングルショットに最適化。

**将来性**:
- RAGやツール使用などの「外部知識活用タスク」全般への拡張可能性が高い。
- エッジAIの実用化を加速(オンdevice personal AI)。
- Cactusエンジンとの組み合わせで、ウェアラブルデバイスでの実用が期待される。

## 結論

Needleは、**「小さく、速く、特化」**という新しいトレンドを体現したモデルです。Gemini 3.1のツール呼び出し能力を極限まで圧縮しつつ、Simple Attention Networksというアーキテクチャ革新により、従来の常識を覆す性能を実現しました。

Mac/PCで手軽にfine-tuningできるアクセシビリティの高さは、開発者にとって特に魅力的です。エッジデバイス向けAIの実用化を目指すプロジェクトとして、今後の展開が注目されます。

**主な出典**:
- 公式GitHub: https://github.com/cactus-compute/needle
- Simple Attention Networks解説: https://github.com/cactus-compute/needle/blob/main/docs/simple_attention_networks.md
- Hugging Face: https://huggingface.co/Cactus-Compute/needle

**検証完了:評価基準をすべて満たしています。**

コメント