Needle: 26-миллионная модель, которая вызывает инструменты быстрее GPT-4

Needle: 26-миллионная модель, которая вызывает инструменты быстрее GPT-4

Что если способность ИИ звонить в API, заполнять формы и управлять календарём не требует сотен миллиардов параметров? Команда Cactus Compute взяла Gemini 3.1 Flash Lite и перегнала её в модель размером с песчинку — 26 миллионов параметров. Результат работает на MacBook Air, не просит облако и выдаёт шесть тысяч токенов в секунду на этапе предобработки. Название у проекта говорящее — Needle.

Почему это важно

Гонка за масштабом привела к странной ситуации: чтобы заставить языковую модель позвонить в погодный API, мы загружаем в видеопамять сотни гигабайт весов. Миллиарды параметров тратятся на знания о Второй мировой, рецептах пасты и стиле Гемингуэя — хотя задача требует лишь сопоставить запрос пользователя с именем функции и подставить аргументы. Needle разворачивает эту логику вспять: если задача узкая, зачем платить за универсальность?

Проект вырос из простого наблюдения. Вызов инструмента — это не творческое письмо, а ретривал и сборка. Найти подходящий инструмент в списке, извлечь значения параметров из запроса, собрать корректный JSON. Всё это операции выравнивания и копирования между входом и выходом — ровно то, что умеет механизм внимания. Кросс-внимание не нуждается в глубоком семантическом переосмыслении на уровне каждой позиции, поэтому полносвязные слои Feed-Forward Network можно просто выбросить.

Архитектура без MLP

Needle построена как энкодер-декодерная трансформерная сеть с двенадцатью слоями энкодера и восемью слоями декодера. Размерность скрытого состояния — 512, восемь голов внимания, четыре головы для KV-кеша, словарь на 8192 токена. Никаких FFN между блоками внимания. Вместо них — гейтированные остаточные связи, которые учатся усиливать полезные слои и подавлять шум.

Энкодер работает двунаправленно и видит полное определение каждого инструмента сразу — в отличие от авторегрессионной модели, которая читает слева направо и догадывается о структуре. Декодер генерирует ответ, обращаясь к зафиксированному выходу энкодера через кросс-внимание. Поскольку входные токены не попадают в KV-кеш декодера, длина контекста не влияет на скорость генерации — критичное свойство для сценариев с большим количеством инструментов.

Нормализация взята из линейки nGPT и DeepSeek-V3: ZCRMSNorm, где параметр масштабирования инициализируется нулём, и блок на старте ведёт себя почти как тождественное отображение. Вместе с гейтированными остатками это даёт стабильное обучение глубоких сетей без полносвязных слоёв, которые обычно гасят взрывы градиентов.

Как учили и что получили

Предобучение проходило на шестнадцати TPU v6e в течение двадцати семи часов — двести миллиардов токенов. Дообучение на датасете из двух миллиардов токенов single-shot вызовов функций заняло сорок пять минут. Дистилляция шла с Gemini 3.1 Flash Lite, то есть учитель был в сто раз крупнее ученика.

На задаче single-shot function calling для персонального ИИ Needle обгоняет FunctionGemma-270M, Qwen-0.6B, Granite-350M и LFM2.5-350M. При этом она в десять раз меньше ближайшего конкурента. В продакшене на фреймворке Cactus модель выдаёт шесть тысяч токенов в секунду на этапе prefill и тысячу двести на декодировании — достаточно для отзывчивого интерфейса на телефоне или умных очках.

Важный нюанс: авторы честно предупреждают, что Needle — эксперимент, а не универсальный ассистент. Она бьёт крупных соперников именно на вызове инструментов, но проигрывает в разговоре и общих знаниях. Это не баг, а фича. Проект ставит целью переопределить «маленький ИИ» для консьюмерских устройств, а не заменить Claude или GPT-4.

Трюки, которые делают это возможным

Команда применила несколько техник, которые редко встречаются вместе. Первое — контрастивная головка выбора инструмента в стиле CLIP. Энкодер превращает запрос и описание каждой функции в единое векторное пространство, после чего ранжирование по косинусному сходству за доли миллисекунды отбирает top-k кандидатов. Это снимает нагрузку с декодера, когда инструментов сотни.

Второе — INT4 квантование как регуляризация. Каждые сто шагов обучения веса проходят через фейковое квантование до четырёх бит с прямой оценкой градиента. Шум квантования работает как регуляризатор, не давая модели привыкнуть к точным значениям весов. Побочный эффект: после обучения модель уже готова к INT4-инференсу без потерь от пост-тренировочного квантования.

Третье — взвешивание потерь на уровне токенов. Структура JSON учится с весом 1.0, имена инструментов с 2.0, ключи аргументов с 1.5, а значения аргументов с 4.0. Логика простая: модель быстро достигает девяностодевятипроцентной валидности JSON, а вот точные значения — погода в Сан-Франциско, а не в Сан-Диего — требуют дисциплины. Веса совпадают с реальным распределением ошибок.

Четвёртое — двойной оптимизатор. Muon отвечает за проекции Q, K, V и выходные линейные слои, поддерживая ортогональность обновлений через итерации Ньютона-Шульца. AdamW обучает всё остальное. Без FFN модель представляет собой глубокий стек линейных проекций с softmax-маршрутизацией, и Muon предотвращает коллапс представлений, который обычно грозит таким архитектурам.

Что это меняет для разработчиков

Needle — не очередная новость о сжатии модели. Это демонстрация принципа: специализированная архитектура бьёт универсальную при той же задаче на порядок эффективнее. Для разработчика это означает, что tool calling можно встроить в приложение без облачных вызовов, без подписок и без задержек в сотни миллисекунд. Модель весит меньше ста мегабайт в INT4 и запускается на CPU.

Команда открыла веса, датасеты и код обучения. Есть готовый CLI и веб-интерфейс для дообучения на собственных инструментах — процесс занимает минуты, а не дни. Это снижает порог входа для создания персональных агентов, которые работают локально и не утекают в облако.

Часто задаваемые вопросы

Может ли Needle заменить GPT-4 или Claude?

Нет. Needle решает одну задачу — вызов инструментов — и решает её исключительно хорошо. Для разговора, творческого письма или сложного рассуждения она не подходит. Это не конкурент большим моделям, а специализированный компонент для встраивания в приложения.

Почему убрали именно MLP, а не что-то другое?

Потому что задача tool calling не требует поэлементного нелинейного преобразования, которое дают полносвязные слои. Внимание уже выполняет нелинейное смешивание через softmax, а кросс-внимание копирует значения между входом и выходом. MLP в такой задаче занимает две трети параметров и почти не влияет на качество.

Насколько сложно дообучить Needle под свои инструменты?

Очень просто. Репозиторий содержит CLI-команду needle playground, которая запускает веб-интерфейс. Туда загружаешь описания своих API, генерируешь синтетические данные через Gemini, обучаешь и сразу тестируешь. Весь цикл занимает меньше часа на обычном ноутбуке.

Итог

Needle — это напоминание о том, что прогресс в ИИ идёт не только через увеличение моделей, но и через переосмысление архитектуры под конкретную задачу. Двадцать шесть миллионов параметров, ноль MLP-слоёв, шесть тысяч токенов в секунду. Если вы строите агента, которому нужно звонить в API и не ждать ответа из облака — возможно, вам не нужен гигант. Возможно, вам нужна игла.

← Все записи
← Все записи