Cactus Compute выпустила Needle 2 — открытую модель с 45M параметров, предназначенную для вызова инструментов, управления устройствами и структурированного извлечения данных. Вся модель поставляется в виде одного бинарного файла размером 14 МБ и выполняет полный сеанс примерно в 28 МБ оперативной памяти. Это делает её пригодной для работы на устройствах без GPU и NPU.
Почему 45M параметров достаточно
Разработчики исходят из узкого и чётко сформулированного тезиса: преобразование «сырого» предложения в типизированную сигнатуру функции не требует ни знаний о мире, ни свободной генерации текста. Именно поэтому 45M параметров здесь достаточно, и модель нацелена на оборудование без GPU и NPU.
Веса модели обучаются и разворачиваются в 2-битном формате CQ2 (Cactus Quants). Модель «запечатана» в собственном C++-движке, поэтому не требует установки рантайма и не скачивает ничего во время инференса.
Производительность и архитектура
Заявленная скорость декодирования:
- 500 токенов/с на Raspberry Pi 5;
- 400–1500 токенов/с на Meta Quest 3S и Apple Vision Pro;
- 300–700 токенов/с на смартфонах дешевле $200.
Архитектура модели, названная Simple Attention Network, заменяет FFN на Hadamard MLP, сохраняет GQA-внимание, добавляет энграммную key-value память на основе хешированных n-грамм и использует multi-lane гиперсвязи. Сеть состоит из 27 слоёв шириной 512. Исследование выложено на arXiv под названием «A Controlled Study of Attention-Only Transformers».
Предобучение велось на собственном корпусе из 115B токенов, ещё 38B токенов ушло на пост-обучение. Для сравнения, LFM2.5-230M обучалась на 19 триллионах токенов.
Needle 2 тратит 70 MFLOPs на токен, при этом 35M из 45M параметров активны в матричных умножениях. Для сравнения: LFM2.5-230M тратит 460 MFLOPs, FunctionGemma 270M — 540, а Apple FM — около 6000.
Движок, грамматика и уверенность
Веса модели никогда не распаковываются в оперативную память. 2-битные коды разворачиваются в векторных регистрах и объединяются в целочисленные скалярные произведения, поэтому арифметический путь остаётся int8. При запуске бинарник определяет CPU и выбирает подходящий уровень ядра: SDOT, NEON, AVX2, RISC-V vectors, wasm SIMD или scalar.
Грамматика на уровне байтов, скомпилированная из ваших JSON-схем, ограничивает каждый генерируемый токен. Поскольку сопоставитель знает, какие токены допустимы, ещё до вычисления логитов, движок пропускает до 98% проекций словаря на структурных токенах.
Внимание использует скользящее окно в 256 токенов, а системный промпт и объявления инструментов закреплены как KV-sinks. Память остаётся около 28 МБ независимо от длины разговора.
Если объявлено пять или меньше инструментов, они рендерятся напрямую. При большем количестве контрастивная retrieval-голова встраивает каждую схему один раз, оценивает запрос на каждом ходу и допускает только пять лучших. Невыбранные инструменты недоступны, а не просто маловероятны.
Каждый ответ сопровождается значением уверенности — минимумом калиброванной пост-хок головы и вероятности декодирования токенов вызова. На запросы не по теме модель возвращает пустой вызов []. Контракт прост: действовать выше порога, переспросить или эскалировать ниже него.
Результаты на бенчмарках
Cactus оценивает модель на пяти публичных бенчмарках вызова функций, используя упорядоченное строгое точное совпадение, где должны совпасть имена, порядок вызовов и каждый аргумент. Needle 2 работает end-to-end через штатный движок в CQ2-bit с включённой retrieval; базовые модели запускались в f16 под vLLM.
| Бенчмарк | Needle 2 (CQ2) | LFM2.5 230M | FunctionGemma 270M | Apple FM |
|---|---|---|---|---|
| Mobile Actions (961) | 63.7 | 69.1 | 64.0 | 57.6 |
| DroidCall (200) | 17.0 | 11.0 | 17.5 | — |
| Seal-Tools in-domain (700) | 32.6 | 26.9 | 16.3 | — |
| Seal-Tools OOD (654) | 28.7 | 17.0 | 15.6 | — |
| BFCL v4 single-turn (3641), overall | 42.6 | 60.8 | 46.1 | 61.7 |
Needle 2 лидирует в обоих сплитах Seal-Tools и показывает точность имён функций 98.3% на Mobile Actions. Она отстаёт на BFCL v4, что Cactus объясняет распределением данных: её корпус — это действия потребительских устройств, а не общие или корпоративные API. Доля хорошо сформированных ответов на 3641 строках BFCL — 93.4. Команда заранее заявляет две асимметрии: f16-базовые линии играют им на руку, а специализация задач — на руку Needle.
Где разворачивать
Needle 2 поставляется в виде готовых бинарников и статической библиотеки для macOS, Linux (x86-64, ARM64, ARMv7, RISC-V, MIPS32el), Windows, Android, iOS/watchOS/tvOS и WebAssembly. Cactus сообщает, что Pebble уже запускает Needle локально в приложении Index 01 для офлайн-голосовых действий.
Модель предназначена для команд, выпускающих прошивки и приложения на устройствах с ограниченными ресурсами: стартапы в области носимых устройств и IoT, OEM-производители потребительской электроники, робототехника, крупные производители устройств, которым нужен офлайн-фолбэк. Облачным SaaS-командам она принесёт меньше пользы.
Отрасли применения: умный дом, носимые устройства, недорогие мобильные устройства, управление в салоне автомобиля, сервисная робототехника, розничные киоски и POS-терминалы, роутеры и IP-камеры, а также регулируемые среды, где аудио не может покидать устройство.
Типовые сценарии: голосовые команды на устройствах без экрана, офлайн-управление бытовой техникой, извлечение полей из чеков и счетов, тегирование enum-значений и локальная маршрутизация с эскалацией в облако только при низкой уверенности.
Частые вопросы
Кому нужна такая модель?
Командам, которые выпускают прошивки и приложения для устройств с ограниченными ресурсами: умный дом, носимые устройства, робототехника, розничные терминалы, роутеры и IP-камеры. Особенно полезна там, где аудио или данные нельзя отправлять в облако.
Чем Needle 2 отличается от обычных LLM?
Она не генерирует свободный текст, а преобразует запрос в типизированный вызов функции. Поэтому для неё достаточно 45M параметров, и она работает в бинарнике 14 МБ, не требуя GPU.
Как модель помещается в 14 МБ?
Веса обучены и развёрнуты в 2-битном формате CQ2. Они никогда не распаковываются в оперативную память: 2-битные коды разворачиваются в векторных регистрах и объединяются в целочисленные операции int8.
Что такое CQ2-квантование?
Это 2-битный формат от Cactus Quants, в котором модель обучается с самого начала, а не квантуется постфактум. То есть развёрнутая модель — это и есть обученная модель.
Как обрабатывается длинный диалог?
Используется скользящее окно внимания в 256 токенов, а системный промпт и объявления инструментов закреплены как KV-sinks. Поэтому потребление памяти остаётся около 28 МБ независимо от длины разговора.
Что происходит при запросе не по теме?
Модель возвращает пустой вызов [] и значение уверенности ниже порога. Это сигнал для приложения переспросить пользователя или эскалировать запрос в облако.
Сколько инструментов можно объявить?
До пяти инструментов рендерятся напрямую. Если их больше, retrieval-механизм каждый ход выбирает пять наиболее релевантных, остальные становятся недоступны.
На чём модель показывает лучшие результаты?
Needle 2 лидирует на бенчмарках Seal-Tools (in-domain и OOD) и показывает точность имён функций 98.3% на Mobile Actions. На BFCL v4 она уступает более крупным моделям, так как её корпус — действия потребительских устройств.
Где можно запустить модель?
На Raspberry Pi 5 — 500 токенов/с, на Meta Quest 3S и Apple Vision Pro — 400–1500 токенов/с, на недорогих смартфонах — 300–700 токенов/с. Поддерживаются macOS, Linux, Windows, Android, iOS и WebAssembly.
Есть ли альтернативы для локального запуска ИИ?
Для более тяжёлых задач можно рассмотреть модели TwIL-LM 1.7B и 3B, которые тоже работают на локальном железе. А для задач кибербезопасности есть специализированная модель Fugu-Cyber от Sakana AI.
Источник: marktechpost.com