Needle: 26M-модель для tool calling выдаёт 6000 ток/с на ноутбуке
Cactus Compute дистиллировала Gemini 3.1 в 26M-параметрическую Simple Attention Network. Открытые веса, MIT, 1.2k звёзд за сутки. Бьёт FunctionGemma-270m и Qwen-0.6B на single-shot function call.

26 миллионов параметров. Шесть тысяч токенов в секунду на префилле и тысяча двести на декодинге — на потребительском MacBook. И всё это для одной задачи: вызвать правильную функцию с правильными аргументами. Команда Cactus Compute показала, что для tool calling — основной задачи AI-агентов — не нужны миллиарды параметров. Достаточно умной дистилляции.
Что произошло
12 мая стартап Cactus Compute опубликовал Needle — открытую 26M-параметрическую модель для function calling, дистиллированную из Gemini 3.1. За сутки репозиторий собрал больше 1200 звёзд на GitHub и стал #1 в Show HN.
Архитектура — то, что авторы называют Simple Attention Network: encoder из 12 слоёв (только self-attention, без FFN), decoder из 8 слоёв с cross-attention. Размерность скрытого слоя d=512, 8 attention-голов, 4 KV. Словарь — 8192 BPE-токенов.
Что внутри:
- 26M параметров (encoder + decoder)
- Веса открыты на Hugging Face (
Cactus-Compute/needle) - Дистилляция через сгенерированный Gemini 3.1 датасет
- Pretrain: 200 млрд токенов на 16 TPU v6e — 27 часов
- Post-train: 2 млрд токенов одиночных function-call сэмплов — 45 минут
- Скорость: 6000 ток/с prefill, 1200 ток/с decode (на runtime Cactus)
- Лицензия: MIT
Запускается одной командой: git clone … && needle playground — открывается локальный веб-UI на 127.0.0.1:7860, где можно тестировать модель на своих инструментах и тут же дообучать на собственных данных.
Почему это важно
Tool calling — узкое место для on-device AI. Голосовые ассистенты, smartwatch-агенты, умные очки, оффлайн-копилоты — всем нужно понимать «какой инструмент позвать» и «с какими аргументами». До сих пор оптимальной точкой считались модели уровня Phi, Qwen-0.6B и Gemma-270m: примерно от 270M до 1B параметров.
Авторы Needle сравнили свою сетку с этим классом на single-shot function call — то есть запрос пользователя → один правильный tool-call. Получилось обойти FunctionGemma-270m, Qwen-0.6B, Granite-350m и LFM2.5-350m. При том что Needle в 10 раз меньше — и без conversational-возможностей.
В этом и трюк: команда честно говорит, что Needle — это специализированная модель. Если нужно «болтать» с пользователем, нужен LLM-классик. Если нужно превратить «закажи мне такси в Внуково» в book_taxi({"to":"Vnukovo"}) — Needle справится быстрее и съест в разы меньше памяти.
Архитектурная любопытность — Simple Attention Network. Encoder без FFN звучит еретически, но для строго детерминированной задачи (текст → JSON-вызов) этот выбор минимизирует параметры без потери качества. Авторы открыто описали архитектуру в docs и приглашают к экспериментам.
Что дальше
Cactus Compute позиционирует Needle как первый эксперимент в семействе SAN — оптимизированных под edge-устройства. Следующие модели, судя по namespace репозитория, будут целиться в watches и AR-очки.
Для всех остальных это сигнал: эра «10B+ моделей для всего» подходит к концу. Когда задача — одна конкретная (function call, classification, JSON-extraction), специализированные tiny-модели становятся не игрушкой, а индустриальным выбором. И теперь они работают со скоростью света на любом железе.

