GitHub の cactus-compute/needle は、ひとことで言うと 「とても小さいデバイスでも動く、関数呼び出し専用のAIモデル」 です。
ここでいう function call は、AIが会話文を返すだけでなく、
「天気を調べる」「カレンダーを開く」「メッセージを送る」といった 外部ツールを呼ぶための命令を作る ことを指します。
たとえば、
get_weather(location="San Francisco")のように、AIが文章ではなく ツール実行用の構造化された出力 を返すわけです。
この用途に特化すると、巨大な会話AIよりもずっと軽くできる。
Needle はその発想を、かなり極端なところまで押し進めたプロジェクトだと感じます。
正直、こういう「でかいモデルを小さく削り込む」系の試みは、見ているだけでワクワクします。
26M は 26 million、つまり2600万パラメータ です。
パラメータはざっくり言うと、モデルが学習で覚えた“つまみ”や“調整ノブ”の数です。一般には多いほど表現力が増えますが、そのぶん重くなります。
最近のLLMは、数十億〜数千億パラメータ級も珍しくありません。
その感覚で見ると 26Mはかなり小さい です。
だからこそ、スマホ、時計、メガネのような consumer devices を狙える、という話につながります。
README でも Needle は
“tiny AI for consumer devices (phones, watches, glasses...)”
を再定義する実験、と説明されています。
この方向性はかなり重要だと思います。
AIはクラウドで動かすだけではなく、端末の中で動くこと に価値があります。通信不要、低遅延、プライバシー面の利点があるからです。
もちろんそのぶん性能は犠牲になりがちですが、用途を絞れば十分意味がある。Needle はその代表例になりそうです。
Needle の README には、モデル構成として Simple Attention Network が示されています。
図を見ると、典型的な巨大LLMというより、かなり設計を絞ったアーキテクチャ です。
README から読み取れる主なポイントは次の通りです。
ここで少し補足します。
特に気になるのは no FFN です。
これはかなり思い切っています。普通のTransformerではFFNは大事な定番パーツなので、それを外しているのは「とにかく軽くする」思想が強いからでしょう。
個人的には、こういう削り方は好きです。
ただし、削れば削るほど万能性は下がるので、何を捨てて何を残すか が勝負になります。Needle はそこを function call に全振りしたモデル、と見ると納得感があります。
README には学習の流れも書かれています。
つまり、まず大量のテキストで事前学習し、その後に function call 用のデータで追加学習しているわけです。
ここでのポイントは、後段の post-training がかなり短く、用途特化である こと。
単なる汎用チャットモデルではなく、「このモデルはツール呼び出しの書き方を覚えさせる」 方向に調整されているのがわかります。
また、README には dataset generation もオープンだとあります。
これは地味に大きいです。重みだけ公開されるモデルは多いですが、どうやって学習データを作ったか まで見えると、再現や改善がしやすくなります。オープンソースとしてかなり誠実な印象です。
README の冒頭では、Needle は production 環境で Cactus 上で動作し、
と書かれています。
ここで簡単に言うと、
です。
一般に、LLMは「最初の読み込み」と「出力を1文字ずつ作る」の両方で性能差が出ます。
なので、この数字が速いのはかなり実用的に見えます。
ただし、これは Cactus 上の production の値 なので、手元のPCやMacで同じ速度が出るとは限りません。
ここは期待しすぎないほうがいいでしょう。とはいえ、超小型モデルとして高速性を押し出しているのは魅力です。
README には quickstart が載っています。
git clone https://github.com/cactus-compute/needle.git
cd needle && source ./setup
needle playground
これで Web UI が立ち上がり、http://127.0.0.1:7860 で試せるようです。
しかも weights are auto-downloaded とあるので、ローカルで手軽に始めやすそうです。

Python からの利用例もあります。
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"}}]
ここで面白いのは、モデルの出力が自然文ではなく、
ツール名と引数の JSON 風データ になっている点です。
これは、AIを「しゃべる存在」として使うだけでなく、アプリの部品として使う ための設計です。
個人的には、今後のAI利用はこの方向が主流になる可能性が高いと思います。人間向けの雑談より、むしろソフトウェア同士の受け渡しのほうが重要になる場面は多いからです。
README には、Mac/PCで local fine-tune できる と書かれています。
さらに、needle playground では 自分のツールを使ってテストし、そのまま fine-tune できる とされています。
コマンド例もあります。
needle finetune data.jsonl
また、CLI にはこんな機能があります。
needle playground : Web UI でテスト・fine-tuneneedle finetune <data.jsonl> : 自分のデータで fine-tuneneedle run --query "..." --tools : 単発推論needle train : フル学習needle pretrain : PleIAs/SYNTH で pretrainneedle eval --checkpoint <path> : 評価needle tokenize : データセットのトークン化needle generate-data : Gemini を使って学習データ生成needle tpu <action> : TPU管理このあたりを見ると、これは単なる研究コードではなく、実験から学習、評価、デプロイまで一通り触れるツール群 を目指しているのがわかります。
ここがかなり重要です。
AIモデルは「重みが公開されました」で終わると、実際にはあまり使われません。
でも Needle は、触る → 直す → 再学習する まで含めて体験できるようにしている。これは開発者向けにかなり親切です。
Needle の魅力は、単に「小さい」ことではありません。
小さいのに、用途をちゃんと絞って成立させようとしている 点にあります。
特に評価したいのは次の3つです。
汎用チャットではなく、function call に集中している。
この割り切りがいいです。小さいモデルに「何でもできる」は無理があります。ならば、できることを絞るのが正解です。
README では weights が fully open、さらに dataset generation も open と明言されています。
これは研究としても実用としても強いです。
スマホ、時計、メガネのようなデバイスで動くAIは、今後ますます重要になるはずです。
Needle はその未来を先取りしている感じがあります。
README には、Needle が single-shot function call では強い一方で、
FunctionGemma-270m, Qwen-0.6B, Granite-350m, LFM2.5-350m のようなモデルは、より広い文脈や会話性能で優れている、と書かれています。
つまり、Needle は「全部で勝つモデル」ではありません。
むしろ、狭い課題に絞って強さを出したモデル です。
そして README にも
“small models can be finicky”
とあります。
これはかなり正直で、好感が持てます。小型モデルは、ちょっとした条件の違いで出力がブレたり、思った通りに動かなかったりしやすい。ここは過度な期待をしない方がよさそうです。
個人的には、Needle は 「AIを小さくする」方向の面白さがぎゅっと詰まったプロジェクト だと思います。
世の中のAIは、とにかく巨大化・高性能化しがちです。
でも実際の現場では、
というニーズがかなりあるはずです。
Needle は、そのニーズにかなり真正面から答えようとしている。
「会話が上手なAI」ではなく、**“道具として使いやすいAI”** を目指しているのがいいんです。
もちろん、26Mでどこまで安定するかは用途次第です。
でも、こういう実験があるからこそ、AIはクラウドの中だけの存在ではなく、もっと身近な端末に降りてこられるのだと思います。
Needle は、26Mパラメータという小ささで function call に特化したモデル を目指す、かなり野心的なオープンプロジェクトです。
ということで、単なる「小型モデルのデモ」にとどまらず、実際に触って育てる前提のプロジェクト になっています。
AIの未来が「でかいモデルの独壇場」だけではないとしたら、その片隅に Needle のような存在があっても不思議じゃない。
むしろ、こういう地味に実用的な方向こそ、あとから効いてくるのではないかと思います。
参考: GitHub - cactus-compute/needle: 26m function call model that runs on incredibly small devices