Needle - un modèle de 26 millions de paramètres distillé pour l’appel d’outils Gemini
(github.com/cactus-compute)- Needle est un modèle expérimental distillé de Gemini 3.1 en un Simple Attention Network de 26 millions de paramètres, avec possibilité de fine-tuning local sur Mac/PC
- L’objectif est de redéfinir les petites IA utilisées sur des appareils grand public comme les téléphones, montres et lunettes, en se concentrant sur l’appel d’outils à exécution unique pour l’IA personnelle
- En production, il fonctionne sur Cactus et atteint prefill 6000 toks/sec et decode 1200
- Les poids sont entièrement publics sur Cactus-Compute/needle, et la génération du dataset est également publiée
- Le préentraînement a été effectué sur 16 TPU v6e avec 200B tokens pendant 27 heures, et l’entraînement de suivi a duré 45 minutes sur un dataset de 2B tokens d’appels de fonctions à exécution unique
- Sur les appels de fonctions à exécution unique, il est présenté comme meilleur que FunctionGemma-270m, Qwen-0.6B, Graninte-350m et LFM2.5-350m, mais ces modèles couvrent un champ plus large, disposent d’une plus grande capacité et excellent dans des configurations conversationnelles
- Les petits modèles pouvant être délicats à manier, il est recommandé d’utiliser le web UI fourni pour tester avec ses propres outils et effectuer un fine-tuning personnalisé en cliquant sur un bouton
needle playgroundouvre le web UI surhttp://127.0.0.1:7860, et les poids sont téléchargés automatiquement pour les tests et le fine-tuning- En Python, on peut utiliser
SimpleAttentionNetwork,load_checkpoint,generateetget_tokenizerpour injecter une requête et un schéma d’outils afin de générer un JSON d’appel d’outil commeget_weather - La CLI propose
playground,finetune,run,train,pretrain,eval,tokenize,generate-dataettpupour l’inférence, l’entraînement, l’évaluation, la génération de données et la gestion des TPU - La configuration du modèle est
d=512,8H/4KV,BPE=8192, avec 12 couches d’encodeur et 8 couches de décodeur, ainsi que GQA+RoPE, cross attention, gated residual, tied linear et shared embedding
1 commentaires
Avis sur Hacker News
Je me demande s’il existe des exemples ou des données sur la capacité de discernement des modèles utilisant des outils
Un exemple serait quelque chose comme « Quel temps fait-il à San Francisco ? », avec un outil fourni du type
tools='[{"name":"get_weather","parameters":{"location":"string"}}]'J’ai construit il y a plus de 10 ans quelque chose[1] qui pouvait traiter ce genre de problème avec SPARQL et des graphes de connaissances
Ce qui m’intéresse vraiment, c’est de savoir à quel point la gestion de l’ambiguïté fonctionne bien
Si on envoie un message comme « On se voit demain à 10 h pour prendre un café » et une commande comme « sauvegarde ça », je me demande si le modèle peut choisir l’action « ajouter à l’agenda » parmi des dizaines d’outils possibles, sinon des centaines
[1] https://github.com/nlothian/Acuitra/wiki/About
Le prompt était « Je dois prévenir mon patron que je vais être en retard », et le résultat a été
20mins [{"name":"set_timer","arguments":{"time_human":"20 minutes"}}]Il n’a pas utilisé l’outil e-mail, et c’était similaire même en le formulant de 2 ou 3 autres façons
Je me demande s’il n’y a pas lieu de s’inquiéter de la réaction de Google
Google indique répondre aux tentatives de distillation par des « défenses proactives en temps réel pouvant dégrader les performances du modèle étudiant »
S’ils l’ont détecté, ils ont peut-être délibérément servi une variante de Gemini plus stupide mais plausible : https://cloud.google.com/blog/topics/threat-intelligence/dis...
Cela dit, comme ce modèle est petit et uniquement axé sur l’usage d’outils, il est probablement loin des volumes de tokens consommés par ceux qui essaient de distiller un modèle complet
On pourrait peut-être désormais créer une sorte de programme en ligne de commande capable de sélectionner des arguments de manière optionnelle à partir du langage naturel
Bien sûr, beaucoup s’opposeront à l’idée d’ajouter 14 Mo et du calcul juste pour faire du « parsing », et si tout le monde se met à faire ça, ce pourrait être assez mauvais
Mais le simple fait que ce soit désormais possible est vraiment intéressant
On pourrait embarquer avec le programme un modèle finement ajusté pour comprendre son mode d’emploi
Par exemple,
> toolcli what can you doexécuteraittoolcli --help summary, ettoolcli add tom to teamfutz groupdeviendraittoolcli --gadd teamfutz tomCela dit, la même difficulté de fond reste entière
Ce serait bien de publier une démo live du « needle playground »
Vu sa petite taille, le coût pour le faire tourner quelque part sur un petit VPS devrait être assez faible
Cela dit, n’importe qui peut le faire, et c’est aussi facile à exécuter directement sur un laptop
Je vais aussi essayer la piste VPS
L’observation selon laquelle les tâches de recherche n’ont pas besoin de FFN est intéressante
Si la connaissance se trouve dans le contexte, cela revient presque à dire que les poids FFN sont redondants pour cette tâche
Je me demande si cela se généralise aussi aux appels d’outils multi-tours où il faut suivre l’état sur plusieurs appels, ou si ça casse à ce niveau-là
Un appel unique, c’est le cas facile
C’est intéressant, et cela correspond aussi à ce que j’avais observé au début de Claude Code
Sonnet appelait souvent rapidement des outils pour rassembler davantage de contexte, alors qu’Opus avait tendance à raisonner plus longtemps avec le contexte déjà disponible pour résoudre le problème
Cela a créé beaucoup de fonctions redondantes et ralenti le développement, mais avec les nouveaux modèles, GPT-5.5 et Opus 4.6, ce problème semble s’être atténué
Ma conclusion est qu’un modèle « plus bête », donc plus petit, pourrait être meilleur comme coquille d’exécution d’agent, ou au moins plus réaliste à faire tourner, moins cher et plus vite, pour beaucoup de problèmes
Je n’ai pas eu l’impression que Gemini était particulièrement bon pour de longues séquences d’appels d’outils
Ce serait intéressant de distiller des traces de longues chaînes d’appels d’outils entre des requêtes utilisateur, comme dans de vraies sessions Codex ou Claude Code
Personnellement, j’aimerais un modèle un peu plus grand, facile à faire tourner sur une machine du type MacBook Pro M2 32 Go, et visant principalement le renforcement par apprentissage pour l’appel d’outils
Les modèles à poids ouverts comme Kimi ou Qwen s’en rapprochent, mais la quantification nécessaire pour les faire tenir sur de petites machines semble faire assez mal aux performances
La mode actuelle des frameworks d’agents est stupide, et j’ai l’impression qu’elle existe surtout pour augmenter le chiffre d’affaires des entreprises de LLM
Les LLM ont en général une utilité limitée, mais combinés à un seul usage d’outil, ils deviennent bien plus utiles et fiables
J’utilise moi-même, au-dessus de l’API openrouter, un ensemble d’outils très ciblé pour des tâches précises
On appuie sur un bouton, et le LLM fait une chose utile, pas on appuie sur un bouton puis on espère que le LLM boucle sur des appels d’outils pendant 5 minutes en les enchaînant dans le bon ordre
Si plusieurs appels d’outils sont nécessaires, je les relie de manière déterministe dans le code
On peut vérifier la sortie de A avant de passer à B ou C, c’est donc bien plus fiable, et aussi plus efficace en temps et en tokens
Les boucles d’agents ressemblent à une énorme arnaque
Je ne vois pas pourquoi ce serait à nous de faire tous ces efforts pour que « ça marche » tant bien que mal
Google, MS, Meta, OpenAI, etc. essaient maintenant d’appeler discrètement leurs outils « Intelligence », alors que ce n’est même pas de « l’Artificial Intelligence » ; dans ce cas, pourquoi ce n’est ni intelligent ni fonctionnel ?
Plus de mille milliards de dollars ont été investis, et pourtant nous devons encore réfléchir aux meilleurs sorts et réglages pour qu’un générateur de bouillie produise des sorties à moitié valables
Et cela alors même que certains leaders technologiques nous menacent ouvertement de nous soumettre à leur étrange vision de la « civilisation »
J’ai l’impression que nous avons de meilleures façons d’utiliser notre cerveau que de nous rabaisser au rôle d’assistants impuissants d’oracles magiques
Le résultat de l’expérience Cactus selon lequel « tant que le modèle dépend de sources de connaissances externes, on peut supprimer complètement les MLP d’un réseau de transformers » est amusant
Justement, l’un de mes étudiants a présenté aujourd’hui un résultat de recherche confirmant cela
En supprimant les MLP dans Qwen, le modèle pouvait encore effectuer des opérations de transformation sur l’entrée, mais il perdait ses connaissances
La différence entre M et B est beaucoup trop subtile
Je suggère d’écrire 0,026B à la place
Même si les développeurs LLM d’aujourd’hui sont plus habitués aux modèles comptés en milliards, cette notation reste valable
Prometteur, excellent travail
Les modèles edge de Gemma4 étaient censés être bons pour l’usage agentique, mais dans tous les tests que j’ai faits, ils ont été vraiment décevants
Ils échouent même dans les scénarios d’usage d’outils les plus basiques
Je me demande si vous avez exécuté, ou si vous prévoyez d’exécuter, des benchmarks d’usage d’outils pour Needle
Si oui, ce serait bien d’ajouter les résultats au dépôt
Je viens d’essayer la configuration d’une alarme et l’ajout à une liste de courses, et il a fait mieux que Siri