Needle 2: 超軽量14MBでエッジデバイスを賢くする最先端のツール呼び出しモデル
/ 10 min read
Table of Contents
リポジトリ
- cactus-compute/needle
- 主要言語: Python / ライセンス: MIT / ★ 5,582
Needle 2 とは
「Needle 2」は、わずか14MBという驚異的なサイズで、ツール呼び出し、デバイス制御、構造化データ抽出といったタスクに特化したオープンな基盤モデルです。スマートフォン、ウェアラブルデバイス、スマートホーム機器、ロボットなど、限られたリソースしかないエッジデバイス上での動作に最適化されています。
従来のLLMがクラウド環境を前提とする中で、Needle 2はデバイス自体でインテリジェンスを発揮させる「オンデバイスAI」の可能性を大きく広げます。その軽量性にもかかわらず、FunctionGemma 270MやLFM2.5 230Mといった他の小型モデルと比較しても遜色ない性能を、はるかに小さいモデルサイズ(5〜70倍)と2ビット量子化で実現しています。
本リポジトリは、このNeedle 2モデルのPythonパッケージを提供しており、推論、LoRAによるファインチューニング、そしてモデルのエクスポート機能を含みます。pip install cactus-needleで簡単に導入でき、Pythonコードからツールを記述し、モデルに呼び出させることができます。
なぜ Needle 2 がエッジAI分野で注目されるのか
Needle 2がエンジニアコミュニティで注目を集める理由は多岐にわたりますが、特に以下の点が挙げられます。
1. 圧倒的な軽量性と効率性
Needle 2の最大の特長は、モデルサイズが単一の14MBバイナリであることです。フルセッションでも約28MBのRAMしか消費せず、エッジデバイスのメモリとストレージ制約を大幅に緩和します。これは、独自の「Simple Attention Network」アーキテクチャと「Cactus Quants」によるCQ2ビット量子化技術によるものです。さらに、会話がどれだけ長くても総メモリ使用量を約28MBに維持する「限定されたメモリ(Bounded memory)」設計も特徴です。
2. 自己完結型でシンプルな統合
モデルの重みが単一のバイナリファイルに焼き付けられているため、モデルファイルの管理が不要で非常にシンプルです。推論エンジンはHugging Faceから一度フェッチされキャッシュされるため、複雑なビルドプロセスは不要。オフライン環境やエアギャップ環境(外部ネットワークから隔離された環境)での導入も容易です。
3. 高度なツール呼び出しと構造化データ抽出
Needle 2は、Python関数を@needle.toolデコレータで定義するだけで、ユーザーの意図を解釈して適切なツールを呼び出すことができます。ツール呼び出しは構造化データ(テキスト入力、JSON出力)として返されるため、外部システムとの連携が容易です。また、Pydanticモデルを用いた構造化データ抽出機能も強力で、テキストから必要な情報を型付けされたオブジェクトとしてシームレスに取得できます。大規模なツールカタログを宣言しても、内蔵の検索ヘッドが関連性の高い上位5つのツールのみを動的にレンダリングする「ツール検索(Tool retrieval)」機能も備えています。
4. 信頼性を高める確信度ゲート
各応答には、学習済みのヘッドから出力される確信度スコアが含まれています。これにより、開発者は応答の信頼性を評価し、閾値を設定することで、信頼度が高い場合にのみ自動でアクションを実行し、低い場合には人間による確認や代替処理にエスカレートさせるといった、より堅牢なシステムを構築できます。
開発者向けクイックスタート
Needle 2の利用は非常にシンプルです。まず、Pythonパッケージをインストールします。
pip install cactus-needleツール呼び出しの例
Python関数を@needle.toolデコレータで装飾するだけで、モデルがそのツールを認識し、適切な引数で呼び出すことができます。
import needle
@needle.tooldef get_weather(city: str): "Get the current weather for a city." return {"city": city, "temp_c": 27, "sky": "clear"}
agent = needle.Needle(tools=[get_weather])print(agent.run("what's it like in Lagos right now?")["results"])# [{'city': 'Lagos', 'temp_c': 27, 'sky': 'clear'}]構造化データ抽出の例
テキストから構造化データを抽出するには、Pydanticモデルでデータの「形」を宣言し、needle.extract()を呼び出します。型付けされたオブジェクトが返されます。
from pydantic import BaseModel
class Invoice(BaseModel): vendor: str total: float due_date: str
invoice = needle.extract("Invoice from Acme Corp, $1,200.00, due 2026-09-01", Invoice)print(invoice.vendor, invoice.total) # -> Acme Corp 1200.0ファインチューニング
Needle 2は、LoRA(Low-Rank Adaptation)を使用して、凍結されたベースモデル上で効率的なファインチューニングを可能にします。ファインチューニング後もアダプターはベースモデルにマージされ、単一の.cactファイルとしてエクスポートされるため、モデルの軽量性が損なわれることはありません。
ファインチューニングのワークフローは以下の通りです。
- データ合成(オプション):
needle generate-dataコマンドとOpenRouter APIキーを使用して、ツールスキーマから学習データを自動生成できます。 - LoRAファインチューニング:
needle finetuneコマンドを実行し、合成または既存のJSONLデータセットを使ってモデルを学習させます。JAXをベースとしているため、NVIDIA GPUやApple SiliconのMetal GPUなど、JAXがサポートする任意のアクセラレータ上で高速に学習できます。 - チューニング済みモデルのビルド:
needle buildコマンドで、学習済みのアダプターをベースモデルにマージし、量子化された単一の.cactファイルを生成します。このファイルは、ベースモデルと同様に既存のエンジンで実行可能です。
どんな現場で役立つか
Needle 2は、その特性から多岐にわたる現場で非常に有用なソリューションを提供します。
- 組み込みシステム・IoTデバイス: スマートスピーカー、スマートサーモスタットなど、限られたデバイス上でオフラインでの音声コマンド処理やイベント応答を実現します。ユーザーのプライバシーを保護しつつ、迅速な対応が可能です。
- モバイルアプリケーション: スマートフォンアプリ内で、ネットワーク接続に依存しない自然言語処理やタスク実行機能を提供します。例えば、写真の自動分類、オフラインでの翻訳、デバイス設定の音声制御などが考えられます。
- 産業用ロボット: 工場や倉庫で稼働するロボットが、リアルタイムで環境の変化を認識し、適切なツールを自律的に判断・実行するために活用できます。ネットワーク遅延がないため、ミッションクリティカルな操作に適しています。
- ウェアラブルデバイス: スマートウォッチやAR/VRグラスで、バッテリー寿命を保ちながら、軽量なAIアシスタント機能、視覚情報に基づくオブジェクト認識などをオンデバイスで実現します。
- セキュリティとプライバシーが重要なシステム: 医療機器や金融システムなど、機密データを外部サーバーに送信することなく、デバイス上で処理を完結させる必要がある場合に、Needle 2のオンデバイス推論が非常に有効です。
まとめ
cactus-compute/needleが提供するNeedle 2は、「エッジデバイスでの高性能かつ軽量なAI」に対する強力な回答です。14MBという圧倒的な小ささで、高度なツール呼び出しと構造化データ抽出能力を提供し、スマートフォンからロボット、スマートホームデバイスまで、あらゆる「小さなデバイス」に賢さを注入する可能性を秘めています。
リソースが限られた環境でのアプリケーション開発、オフライン環境での自律動作、リアルタイム性が求められるシステムにおいて、Needle 2は新たな可能性を切り開く、まさに「針(Needle)」のように鋭く、しかし確実に未来を指し示す存在となるでしょう。
参考文献
Needle 2の技術的基盤である「Simple Attention Network」については、以下のarXiv論文で詳細が解説されています。