Needle - modelo de 26 milhões de parâmetros destilado para chamadas de ferramentas do Gemini
(github.com/cactus-compute)- Needle é um modelo experimental destilado do Gemini 3.1 em uma Simple Attention Network de 26 milhões de parâmetros, com possibilidade até de fine-tuning local em Mac/PC
- O objetivo é redefinir pequenas IAs usadas em dispositivos de consumo como celulares, relógios e óculos, com foco em chamadas de ferramentas de execução única para IA pessoal
- Em produção, roda sobre o Cactus e alcança prefill de 6000 toks/sec e decode de 1200
- Os pesos estão totalmente abertos em Cactus-Compute/needle, e a geração do dataset também foi publicada
- O pré-treinamento foi executado em 16 TPU v6e com 200B tokens por 27 horas, e o treinamento posterior foi feito por 45 minutos com um dataset de 2B tokens de chamadas de função de execução única
- Em chamadas de função de execução única, é apresentado como superior a FunctionGemma-270m, Qwen-0.6B, Graninte-350m e LFM2.5-350m, mas esses modelos têm escopo e capacidade mais amplos e se destacam em configurações conversacionais
- Como modelos pequenos podem ser difíceis de lidar, recomenda-se o fluxo da web UI fornecida para testar com suas próprias ferramentas e fazer fine-tuning personalizado com um clique
needle playgroundabre a web UI emhttp://127.0.0.1:7860, e os pesos podem ser baixados automaticamente para teste e fine-tuning- Ao usar Python, é possível fornecer consulta e esquema de ferramenta com
SimpleAttentionNetwork,load_checkpoint,generateeget_tokenizerpara gerar um JSON de chamada de ferramenta comoget_weather - A CLI oferece
playground,finetune,run,train,pretrain,eval,tokenize,generate-dataetpu, cobrindo inferência, treinamento, avaliação, geração de dados e gerenciamento de TPU - A configuração do modelo é
d=512,8H/4KV,BPE=8192, e usa encoder de 12 camadas e decoder de 8 camadas, além de GQA+RoPE, cross attention, gated residual, tied linear e shared embedding
1 comentários
Comentários do Hacker News
Fico curioso se há exemplos ou dados sobre o poder de discernimento de um modelo de uso de ferramentas
Um exemplo seria algo como “como está o clima em San Francisco”, e a ferramenta passada seria algo como
tools='[{"name":"get_weather","parameters":{"location":"string"}}]'Há mais de 10 anos eu cheguei a criar algo[1] que conseguia lidar com esse tipo de problema com SPARQL e grafos de conhecimento
O que realmente me deixa curioso é o quão bem ele lida com ambiguidade
Se você mandar uma mensagem como “vamos nos ver amanhã às 10 para tomar um café” e um comando como “salva isso”, será que ele consegue escolher a ação de “adicionar ao calendário” entre dezenas de ferramentas possíveis, ainda que não sejam centenas?
[1] https://github.com/nlothian/Acuitra/wiki/About
O prompt foi “preciso avisar meu chefe que vou me atrasar”, e o resultado foi
20mins [{"name":"set_timer","arguments":{"time_human":"20 minutes"}}]Ele não usou a ferramenta de e-mail, e eu perguntei de outras 2 ou 3 formas, mas foi parecido
Fico me perguntando se isso não preocupa o Google
Foi divulgado que o Google reage a tentativas de destilação com “defesas proativas em tempo real que podem degradar o desempenho do modelo aluno”
Se isso foi detectado, talvez tenham alimentado de propósito uma variante do Gemini mais burra, mas plausível: https://cloud.google.com/blog/topics/threat-intelligence/dis...
Dito isso, como esse modelo é pequeno e focado só em uso de ferramentas, em consumo de tokens ele provavelmente nem chega perto de quem está tentando destilar um modelo completo
Talvez isso torne possível criar algo como um programa de linha de comando em que dá para especificar argumentos de forma opcional em linguagem natural
Claro, muita gente vai ser contra incluir 14 MB e computação extra só para fazer “parsing”, e se todo mundo começar a fazer isso pode ficar bem ruim
Ainda assim, é muito interessante que agora isso seja possível
Você poderia embutir junto um modelo ajustado para entender como usar o programa
Por exemplo,
> toolcli what can you doexecutariatoolcli --help summary, etoolcli add tom to teamfutz groupvirariatoolcli --gadd teamfutz tomMesmo assim, a mesma tarefa continua aí
Seria legal publicar uma demo ao vivo do “needle playground”
Como ele é pequeno, imagino que o custo para rodar isso em algum VPS pequeno também seria bem barato
Mesmo assim, qualquer um consegue fazer, e também é fácil rodar direto no notebook
Vou tentar a rota do VPS também
Acho interessante a observação de que “tarefas de recuperação não precisam de FFN”
Se o conhecimento está no contexto, isso é quase afirmar que os pesos de FFN são redundantes para essa tarefa
Fico curioso se isso também se generaliza para chamadas de ferramenta multi-turno, em que é preciso acompanhar estado ao longo de várias chamadas, ou se quebra aí
Chamada única é o caso fácil
Interessante, e bate com uma observação que eu tive no começo usando Claude Code
O Sonnet muitas vezes chamava ferramentas rapidamente para reunir mais contexto, enquanto o Opus tendia a raciocinar por mais tempo com o contexto que já tinha para tentar resolver o problema
Isso acabava gerando muita função redundante e deixando o desenvolvimento mais lento, mas nos modelos mais novos, GPT-5.5 e Opus 4.6, esse problema parece ter diminuído
Minha conclusão é que um modelo “mais burro”, isto é, menor, talvez seja melhor como casca de execução de agente, ou pelo menos pode ser mais realista rodá-lo de forma mais barata e rápida em muitos problemas
Não senti que o Gemini fosse particularmente bom em longos trechos de chamadas de ferramenta
Seria interessante destilar rastros como os de sessões reais do Codex ou do Claude Code, em que há longas cadeias de chamadas de ferramenta entre as consultas do usuário
Pessoalmente, eu gostaria de um modelo um pouco maior que rodasse com facilidade em algo como um MacBook Pro M2 de 32 GB, com aprendizado por reforço para chamadas de ferramenta como objetivo principal
Modelos de pesos abertos como Kimi ou Qwen estão chegando perto, mas a quantização necessária para caber em dispositivos pequenos parece derrubar bastante o desempenho
A moda atual de frameworks de agentes é idiota, e acho que em grande parte existe para aumentar a receita das empresas de LLM
Em geral, LLMs têm utilidade limitada, mas quando combinados com um único uso de ferramenta ficam muito mais úteis e confiáveis
Eu mesmo crio conjuntos de ferramentas bem específicos para tarefas em cima da API do openrouter
Você aperta um botão e o LLM faz uma coisa útil, não aperta um botão e fica 5 minutos num loop de chamadas de ferramenta torcendo para processar tudo na ordem certa
Se forem necessárias várias chamadas de ferramenta, eu encadeio isso de forma determinística no código
Dá para verificar a saída de A antes de seguir para B ou C, então fica muito mais confiável, além de ser mais eficiente em tempo e tokens
Acho que loop de agente é quase uma grande fraude
Não sei por que nós é que temos de nos esforçar para “fazer funcionar” de algum jeito
Google, MS, Meta, OpenAI e afins agora querem chamar discretamente suas ferramentas de “Intelligence”, e nem é “Artificial Intelligence”, então por que não é inteligente e por que não funciona?
Entrou mais de 1 trilhão de dólares nisso, e ainda assim continuamos pensando nas melhores magias e configurações para fazer um gerador de porcaria produzir uma saída mais ou menos válida
Enquanto isso, alguns líderes de tecnologia chegam a nos ameaçar abertamente com a ideia de nos subjugar dentro de sua estranha visão de “civilização”
Acho que temos usos melhores para nossos cérebros do que nos rebaixar a assistentes impotentes de um oráculo mágico
Achei divertido o resultado do experimento Cactus de que “enquanto o modelo depender de fontes externas de conhecimento, dá para remover completamente os MLPs da rede transformer”
Por coincidência, um dos meus alunos apresentou hoje mesmo um resultado de pesquisa confirmando isso
Removendo os MLPs do Qwen, o modelo ainda conseguia fazer tarefas de transformação sobre a entrada, mas perdia o conhecimento
A diferença entre M e B é sutil demais
Sugiro escrever como 0.026B
Mesmo que os desenvolvedores de LLM hoje estejam mais acostumados com modelos na casa dos bilhões, essa notação continua válida
Animado com isso, excelente trabalho
Os modelos edge do Gemma4 prometeram ser bons para uso com agentes, mas em todos os testes que fiz foram realmente decepcionantes
Eles falham até nos cenários mais básicos de uso de ferramentas
Queria saber se vocês já rodaram algum benchmark de uso de ferramentas no Needle, ou se pretendem rodar
Se tiverem, seria legal adicionar os resultados ao repositório
Acabei de testar definir um alarme e adicionar algo à lista de compras, e foi melhor que a Siri