Needle 3 : le mini-modèle IA de 8 Mo qui tourne 100 % hors ligne et défie des modèles 10× plus gros
▶ Voir la vidéo
🔥 Veille IA · Edge & on-device

Needle 3 : le mini-modèle IA de 8 à 29 Mo qui tourne 100 % hors ligne — et taquine des modèles 10× plus gros

Un modèle assez petit pour tenir dans une icône d’application, capable d’appeler vos outils, d’extraire des données structurées et de créer des embeddings… sans jamais toucher un serveur. Décryptage sans hype de la pépite signée Cactus Compute.

📺 Panda Making Money ⏱️ Vidéo 20 min 48 📅 Publié le 19 sept. 2026 ☕ ~12 min de lecture
01 · Introduction

🧵 Needle 3 en 30 secondes

Imaginez un fichier de 8 Mo au minimum, 29 Mo au maximum — plus léger que certaines photos — qui embarque un modèle d’IA complet. Un modèle qui tourne entièrement sur votre téléphone, votre montre, votre hub domotique ou même un microcontrôleur, sans aucune connexion internet, à aucun moment. C’est la promesse de Needle 3, la troisième génération du modèle on-device de Cactus Compute, avec une affirmation qui fait lever un sourcil : battre des modèles dix fois plus gros que lui sur des tâches réelles.

Dans cet article, on décortique ce que Needle 3 est vraiment, comment son architecture en « échelle d’intelligence » fonctionne, ce que les benchmarks disent réellement (spoiler : les titres racoleurs méritent un peu de nuance), et à qui ce modèle s’adresse — ou pas.

8–29 Mo
binaire CQ2-bit complet
29–121 M
paramètres selon la profondeur
100 %
offline, aucune donnée envoyée
Apache 2.0
licence open source
02 · Contexte

🌵 Cactus Compute & la saga Needle

Cactus Compute est une startup de San Francisco passée par Y Combinator (promotion S25), fondée en 2025 par Henry Ndubuaku et Roman Shemet. Son credo tient en une phrase : l’IA doit tourner là où se trouve votre main — pas dans un datacenter. Pourquoi ? Parce que les modèles cloud exigent une connexion, coûtent de l’argent à chaque appel, et envoient vos données ailleurs avant de vous répondre. Cactus construit donc des modèles et un moteur d’infusion pensés pour court-circuiter tout ça.

Et Needle 3 n’arrive pas de nulle part : c’est le troisième acte d’une histoire déjà bien écrite.

Début 2026

Needle 1 — 26 M paramètres

Présenté comme une version distillée des capacités de tool calling de Gemini, assez petite pour tourner sur un téléphone d’entrée de gamme. Open source dès le jour 1 (licence MIT).

Été 2026

Needle 2 — 45 M paramètres, 14 Mo

Toujours minuscule : un binaire de 14 Mo, ~28 Mo de mémoire en session, grâce à une fenêtre de contexte glissante de 256 tokens avec les outils « épinglés » comme points de référence fixes. Un spécialiste assumé : pas de longs dialogues, pas de dissertations — juste le bon fonction, avec les bons arguments.

Septembre 2026

Needle 3 — l’échelle d’intelligence

Un saut qualitatif : un seul jeu de poids entraînés dont chaque profondeur, de 2 à 20 couches, est un modèle déployable. C’est LE tour de magie de cette release, on y revient juste après.

03 · Crédibilité

🤝 Un projet déjà bien installé (et déjà dans un vrai produit)

Avant de juger sur fiche technique, regardons les signaux de santé du projet. Le dépôt GitHub de Needle affiche environ 11 300 stars, plus de 700 forks et des dizaines de contributeurs actifs. La licence est récemment passée de MIT à Apache 2.0, et l’historique de commits montre des correctifs du moteur et des mises à jour de gestion d’état interne… dans les derniers jours. Bref : un projet vivant, pas un coup d’éclat sans lendemain.

💍
Le test du monde réel : Pebble. Pebble (les montres, et la bague Index 01 sans écran) embarque déjà Cactus Needle dans son application. Le fondateur Eric Migicovsky l’explique simplement : sa bague n’ayant aucun écran, une commande vocale doit aboutir à chaque fois, avec ou sans internet. Plutôt qu’un service cloud, Pebble fait tourner Needle localement dans l’app — empreinte minuscule, fiabilité au rendez-vous. Ce n’est plus un benchmark : c’est une technologie en production, dans des mains réelles.
04 · Cas d’usage

🧰 Trois métiers, zéro cloud

Needle 3 ne prétend pas tout faire. Il fait trois choses, entièrement sur l’appareil — rien n’est envoyé à un serveur, rien n’attend une connexion.

1 · Tool calling

Vous donnez à Needle une liste de fonctions et leur description ; il lit la demande de l’utilisateur et décide quelle(s) fonction(s) appeler, avec quels arguments. Deux demandes dans une phrase ? Deux appels, dans le bon ordre. Aucune fonction adaptée ? Il renvoie une liste vide plutôt que d’inventer — l’app sait qu’il ne faut rien faire.

2 · Extraction structurée

Vous fournissez un schéma (vendor, total, date d’échéance…) et un texte brut (facture, confirmation de réservation, notification) ; Needle rend un objet propre et typé. Une grammaire de décodage contraint la génération token par token : la sortie correspond au schéma, garanti. Bonus : cette approche se généralise bien aux tâches de classification.

3 · Embeddings de texte

Le même modèle transforme une phrase en vecteur — son empreinte numérique de sens. Résultat : recherche, matching et routage 100 % locaux. Retrouver LA bonne note parmi des centaines, choisir l’outil le plus proche d’une demande floue, ou fusionner deux alertes qui disent la même chose — précieux sur une montre où l’attention est rare.

🗣️
Exemple concret (donné par Cactus) : dites « Baisse la lumière de la chambre et verrouille la maison » à votre app domotique → Needle produit deux appels de fonction (tamiser la chambre, verrouiller les portes), exécutés immédiatement sur l’appareil. Ni hub central, ni aller-retour cloud.

Pourquoi c’est notable : ces trois métiers sont souvent assurés par trois modèles spécialisés différents… ou par un gros modèle cloud. Needle 3 propose un seul petit modèle local pour les trois — une vraie simplification pour qui construit ce type d’app.

05 · Sous le capot

🪜 L’« intelligence ladder » : un jeu de poids, toutes les tailles

Le problème classique : une montre, un Raspberry Pi et un téléphone flagship ne veulent pas du même modèle. La solution habituelle ? Entraîner un modèle par taille — donc multiplier les entraînements et les fine-tunings. Cactus a pris l’autre route : entraîner un seul jeu de poids où chaque profondeur, de 2 à 20 couches, est un modèle complet et utilisable, chaque échelon étant réellement plus capable que le précédent. Les profondeurs ayant été entraînées ensemble, chaque sous-réseau hérite de tout l’entraînement — et reste fine-tunable indépendamment.

L’échelle en un coup d’œil (mêmes poids, profondeur au choix)

Sur un Raspberry Pi 5 : ~4 000 tokens/s en décodage à 2 couches, ~400 à 20 couches (prefill : ~10 000 → ~1 000 tokens/s). Entraînement : 360 Md de tokens de données structurées propriétaires.

Les briques qui rendent ça possible

Monarch Hadamard MLP — remplace le FFN classique GQA + taps convolutifs causaux Engram — mémoire n-grams lue par gather Hyper-connexions multi-lanes Grammaire byte-level compilée depuis vos schémas Tête de confiance calibrée sur chaque réponse

L’astuce la plus contre-intuitive : l’essentiel des paramètres vit dans l’engram, une mémoire de motifs mémorisés plutôt que calculés. Résultat : le modèle de 121 M params fait l’arithmétique d’un 50 M. Au total, Cactus annonce plus de 2× moins d’opérations flottantes par token qu’un transformeur de configuration équivalente — donc moins de batterie brûlée et moins de chaleur sur un petit appareil.

⚖️
Honnêteté intellectuelle : le partage de poids entre plusieurs tailles n’est pas une idée neuve en recherche. Ce qui est nouveau, c’est de l’expédier en produit fonctionnel, avec ce niveau de finition, assez petit pour tourner sur des appareils minuscules. Nuance importante — et c’est tout à l’honneur du projet.
06 · Chiffres

📊 Benchmarks : ce que les nombres disent vraiment

Cactus a évalué Needle 3 sur des suites dédiées au tool calling et à l’extraction structurée, en exact-match ou field-F1 sur les splits de test complets :

SuiteTypeTailleMétrique
Mobile ActionsTool calling961 lignescommandes téléphone → intents Android, appel exact
DroidCallTool calling200 lignesrequêtes dont certaines exigent 2 appels dans l’ordre
BFCL v4Tool calling3 641 lignesBerkeley Function Calling, AST match + aucun appel si hors sujet
DSTC8Extraction1 813 toursslots de dialogue → schéma, field F1
SNIPS goldExtraction700 lignesslot filling avec schéma fourni, field F1
SNIPS 7-wayExtraction700 ligneschoisir le schéma parmi 7, puis le remplir

Un protocole volontairement « réaliste »

Detail qui compte : les sous-réseaux Needle (20, 16, 8 et 4 couches) ont été testés via le binaire CQ2-bit réellement livré aux développeurs, tandis que les modèles de référence tournaient en précision f16 sous vLLM, et que DeepSeek V4 Flash était interrogé via son API cloud. Autrement dit : Needle est mesuré dans sa forme la plus compressée (celle qui tournera chez vous), face à des concurrents dans leur forme la plus forte. C’est une manière honnête de répondre à « qu’aurai-je si je déploie aujourd’hui ? » — mais ce n’est pas une comparaison « à armes égales » au sens strict, et c’est bien de le dire.

10×
bat des modèles 10× plus gros sur le tool calling mobile
2–3×
égale des modèles 2–3× plus gros en extraction
+18→36
points gagnés par sous-réseau après fine-tuning DroidCall
4L / 29 M
1ᵉʳ échelon fine-tuné qui passe DeepSeek V4 Flash
🧠
« Passe DeepSeek V4 Flash » : ce que ça veut dire (et ne veut pas dire). Une fois fine-tuné sur DroidCall, le sous-réseau dès 4 couches (29 M params) dépasse DeepSeek V4 Flash sur DroidCall et Mobile Actions. Ce n’est pas un modèle de 29 M params devenu « plus intelligent » qu’un modèle frontier en général : c’est un spécialiste entraîné pour une tâche étroite qui bat un généraliste non optimisé pour cette tâche. C’est déjà un résultat très utile pour qui construit justement cette tâche-là, offline — mais ce n’est pas le même claim que « battre un modèle frontier », et la précision compte.
07 · Pratique

👩‍ Le workflow développeur : simple comme un décorateur

L’installation est un pip install classique ; le modèle est téléchargé une fois depuis Hugging Face puis mis en cache localement. Ensuite, le moyen le plus simple de donner un outil à Needle est de décorer une fonction Python : la signature déclare les types attendus, et le docstring devient la description que lit le modèle. Un seul appel à run() gère toute la boucle : Needle choisit l’outil, exécute votre fonction, réinjecte le résultat et renvoie la réponse finale.

# pip install cactus-needle
from needle import tool, run

@tool
def regler_lumieres(piece: str, niveau: int):    """Baisse ou monte les lumières d'une pièce."""
    ...

reponse = run("Baisse la chambre à 30 % et verrouille la porte.")

Les triggers, filet de sécurité. Quand une description ne suffit pas à couvrir toutes les formulations utilisateurs, on peut attacher des expressions régulières à un outil : si ça matche, le décodage est restreint à cet outil et l’appel est garanti — même si la confiance est sous le seuil. Parfait pour « allume les lumières » qui doit aboutir à chaque fois.

Extraction : le même principe, à l’envers. On déclare la forme voulue avec un modèle Pydantic, on appelle extract() avec le texte brut, et on récupère un objet entièrement typé — zéro parsing manuel.

from pydantic import BaseModel
from needle import extract

class Facture(BaseModel):
    fournisseur: str
    total: float
    echeance: str

resultat = extract(texte_brut, Facture)  # objet typé, champs remplis

Chaque réponse — appel d’outil ou extraction — revient sous forme d’un seul objet JSON cohérent : les appels effectués, un fil de raisonnement écrit, un score de confiance calibré (issu d’une tête dédiée), et des métriques utiles (vitesse prefill/decode, mémoire pic). Et ce score n’est pas décoratif :

✅ > ~0,7

Confiance haute → exécutez l’action immédiatement, sans demander.

👀 Zone médiane

Montrez à l’utilisateur ce que le modèle veut faire, demandez confirmation.

⛔ < 0,1 / vide

Sous le plancher de 0,1, l’appel part dans suppressed_calls ; rien du tout = refus poli du modèle.

Et pour aller plus loin ? Le fine-tuning passe par une CLI simple : entraînement LoRA sur le modèle de base 20 couches gelé, puis export quantisé à la profondeur de votre choix sur l’échelle — du 20 couches complet au petit sous-réseau pour appareil contraint.

08 · Déploiement

📱 Une couverture plateforme rarement vue à cette taille

Chaque cible embarque un moteur précompilé de moins de 1 Mo qui charge les poids needle3.cact au démarrage, à 20 couches ou à n’importe quelle profondeur inférieure. La liste donne presque le vertige :

🍎 macOS (Apple Silicon) 🐧 Linux ×5 (x86-64, ARM64, ARMv7, RISC-V, MIPS) 🪟 Windows ×2 (x64, ARM) 🤖 Android ×3 (arm64, armv7, riscv64) 📱 iOS 📺 tvOS ⌚ watchOS 🌐 WebAssembly (navigateur/Node) 🧩 Composant WASI

💶 Open source… et un vrai modèle économique

Needle 3 est totalement ouvert : poids sur Hugging Face, code et moteur sur GitHub (Apache 2.0), téléchargeables et utilisables gratuitement. La partie payante, elle, vit un étage au-dessus : la Cactus Platform, qui donne accès aux jeux de données curatés de Cactus, au processus de quantization CQ2, aux outils de conception et suivi d’évaluations, et à l’infrastructure de fine-tuning complète. Un schéma « open core » classique et sain : le modèle gratuit est un excellent point de départ, la plateforme payante sert à qui veut le mouler sur son produit sans construire tout un pipeline d’entraînement. C’est aussi ce qui donne à Cactus une vraie raison de maintenir Needle sur la durée — un signal de pérennité plus fort que n’importe quel benchmark.

09 · Verdict

⚖️ Forces, limites & pour qui ?

💚 Où Needle 3 brille

  • Action sur commande vocale ou texte court, 100 % offline : domotique, wearables, robots, embarqué contraint.
  • Trois métiers en un seul binaire minuscule (tool calling, extraction, embeddings) — moins de complexité côté app.
  • L’intelligence ladder : on choisit exactement la taille qu’autorise chaque appareil, depuis les mêmes poids.
  • Confiance calibrée, triggers, grammaire de décodage : des garde-fous pensés pour la production.
  • Déjà éprouvé en production chez Pebble ; communauté GitHub active ; licence Apache 2.0.

🚧 Là où il ne faut pas l’emmener

  • Ce n’est pas un assistant conversationnel généraliste : ni longs dialogues, ni questions ouvertes, ni création textuelle. Cactus ne l’a jamais prétendu.
  • Les benchmarks, excellents sur tool calling/extraction, ne disent rien d’une capacité de raisonnement plus large.
  • Écosystème encore jeune : projet plus récent et plus petit que certains vétérans de l’on-device — à peser si la fiabilité long terme est critique.
  • Les suites de test sont en partie choisies par le fabricant : gardez un œil critique.
🎯
Le conseil pratico-pratique : ne décidez pas sur la foi des graphiques de la page de release. Prenez vos définitions d’outils, vos schémas, votre cas d’usage réel, et testez Needle 3 dessus. Un benchmark construit par le fabricant sera toujours flatteur ; le vrai test, c’est votre tâche exacte.

En une phrase : Needle 3 n’est pas « un petit GPT » — c’est un spécialiste de l’action locale, remarquablement bien engineered, qui résout un problème précis (l’IA fiable sans réseau) que les modèles généralistes n’ont jamais été conçus pour résoudre. Et dans cette lane étroite, il mérite vraiment votre attention.

10 · La source

🎬 La vidéo originale & son sommaire cliquable

Cet article s’appuie sur le breakdown complet de la chaîne Panda Making Money. Cliquez sur la miniature pour lancer la vidéo, ou sur un chapitre pour arriver directement au bon moment sur YouTube. 👇

Annexe

🔎 Vérification des faits & corrections de la retranscription

La retranscription audio de la vidéo a été recoupée avec les sources officielles (page de release Cactus Compute, dépôt GitHub, fiche Hugging Face, blog Cactus, annuaire Y Combinator, site Pebble). Corrections et précisions apportées :

  • « Eric Mijikovski » → Eric Migicovsky, fondateur de Pebble ; l’anneau cité est le Pebble Index 01 (bouton + micro, sans écran).
  • « DSDC8 » → DSTC8 (Schema-Guided Dialogue, 1 813 tours, field F1) ; « Snips Gold / SNIPS 7way » → SNIPS gold / SNIPS 7-way (700 lignes chacun).
  • « Laura training » → LoRA ; « pyandic » → Pydantic ; « mgabytes » / « floatingoint » → megaoctets / floating-point (MFLOPs).
  • « Monarch » seul → Monarch Hadamard MLP (bloc remplaçant le FFN) ; complété par : attention GQA + taps convolutifs causaux, engram (mémoire n-grams lue par gather), hyper-connexions multi-lanes.
  • Tailles précisées : binaires CQ2-bit 8–29 MB ; échelons 2L = 25 M, 4L = 29 M, 8L = 52 M, 16L = 98 M, 20L = 121 M params ; fichier needle3.cact 20 couches = 29 MB.
  • Protocole de comparaison précisé : baselines en f16 sous vLLM, DeepSeek V4 Flash via son API cloud, Needle via le binaire CQ2-bit réellement livré.
  • Compléments vérifiés : vitesses RPi 5 (decode ~4 000 → ~400 tok/s, prefill ~10 000 → ~1 000 tok/s) ; Cactus Compute = YC S25, fondée en 2025 par Henry Ndubuaku & Roman Shemet ; entraînement sur 360 Md de tokens structurés propriétaires ; Needle 1 = 26 M params (MIT), Needle 2 = 45 M params / 14 MB / ~28 MB RAM.
🌵 Edge AI · Le Blog — article rédigé à partir de la vidéo de Panda Making Money, vérifié auprès des sources officielles. Septembre 2026. ↑ Retour en haut

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Défiler vers le haut