needle
- title
- needle
- type
- toolbox
- summary
- Модель на 26M параметров для вызова функций, дистиллированная из Gemini 3.1 для телефонов, часов и очков
- tags
- python, llm, on-device-ai, function-calling, distillation, watchlist
- language
- Python
- license
- MIT
- created
- 2026-05-13
- updated
- 2026-07-29
- lang
- ru
- translation_of
- needle
- source_updated
- 2026-07-29
- translated
- 2026-09-01
- translator
- lllm/antigravity/gemini-3.7-flash-medium
Needle - это модель на 26M параметров для вызова функций (function calling), дистиллированная из Gemini 3.1 командой Cactus Compute. Она выдаёт 6000 токенов/с на этапе prefill и 1200 при декодировании в мобильном runtime'е от Cactus; целевые устройства - телефоны, часы и очки. Веса и код генерации датасета открыты на Hugging Face (Cactus-Compute/needle).
Архитектура
Cactus называет базовую топологию "Simple Attention Network" - это encoder-decoder с cross-attention, в котором encoder полностью лишён FFN:
d=512, 8 heads / 4 KV heads, BPE vocab 8192
- Encoder × 12: ZCRMSNorm → Self-attn (GQA+RoPE) → Gated Residual. No FFN.
- Decoder × 8: ZCRMSNorm → Masked Self-attn (RoPE) → Cross-attn (to encoder) → Gated Residual.
- Embedding shared between input text and decoder input.
- Output projection tied to embedding.
- Output is [EOS]<tool_call> + answer; softmax over the shared vocab.
ZCRMSNorm (zero-centered RMSNorm) и gated residuals - два нестандартных решения; отказ от FFN в encoder'е - третье. Подробное описание приведено в docs/simple_attention_networks.md.
Обучение:
- Pretrain - 16 × TPU v6e в течение 27 часов, 200B токенов (PleIAs/SYNTH).
- Post-train - 2B токенов данных для single-shot вызова функций, 45 минут.
Для чего это нужно
Однократные (single-shot) вызовы функций на персональных ИИ-устройствах: погода, будильники, действия в приложениях. README честно предупреждает, что модель узкоспециализированная: она обходит FunctionGemma-270m, Qwen-0.6B, Granite-350m и LFM2.5-350m в single-shot вызове функций, но диалоговые модели с большей ёмкостью превосходят Needle в обычном общении. Маленькие модели капризны, поэтому рекомендуемый путь - дообучать её под собственные инструменты через встроенный playground.
Использование
git clone https://github.com/cactus-compute/needle.git
cd needle && source ./setup
needle playground # web UI at 127.0.0.1:7860, weights auto-download
Python API:
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,
)
# [{"name":"get_weather","arguments":{"location":"San Francisco"}}]
CLI:
needle playground # web UI: test + finetune on your own tools
needle finetune data.jsonl
needle run --query "..." --tools '...'
needle train
needle pretrain
needle eval --checkpoint <path>
needle generate-data # synthesise training data via Gemini
needle tpu <action> # TPU mgmt (docs/tpu.md)
Цикл fine-tuning'а в needle playground обращается к Gemini для генерации данных, обучает модель, оценивает её и упаковывает результат - концепция звучит прямо: "нажал кнопку - получил инструмент вызова функций для персонального ИИ".
Место в экосистеме
Needle относится к классу компактных on-device решений в теме локальных LLM, начатой в заметке Ронахера о локальных моделях и аргументах Ньюарда в пользу локального ИИ. В тех текстах объясняется, почему локальность важна; Needle предлагает один из вариантов реализации: дистиллировать передовую модель в 26M параметров под конкретную задачу вместо попыток сжать универсала. Сегмент on-device моделей всё сильнее отдаляется от тем вроде claude-emotion-concepts и общих исследований флагманских систем: граница между "исследовательской лабораторией, сжимающей интеллект" и "ОС смартфона со встроенным вызовом функций" вполне реальна, и Needle уверенно держится стороны смартфонов.
Средой развёртывания служит runtime исполнения от Cactus (github.com/cactus-compute/cactus); без него показатели в 6000/1200 токенов/с не воспроизводятся.
Ограничения
- Только single-shot вызов функций. Многошаговое агентное поведение не поддерживается структурой post-train данных.
- Превосходит другие сверхмалые модели в своей нише, но уступает моделям среднего размера во всём остальном.
- "Маленькие модели бывают капризными" - предупреждение из самого README: стоит рассчитывать на дообучение.
- 26M параметров и словарь BPE на 8K токенов означают, что модель обучена только на английском; поддержка других языков потребует новой токенизации и повторного pretrain'а.
- Проект разрабатывается одной командой (Cactus Compute), на момент ingest'а ему было четыре дня - добавлен в watchlist для отслеживания популярности и дистрибуции дообученных весов.
Репозиторий: https://github.com/cactus-compute/needle (MIT, 275 звёзд, single-shot function-calling on-device).