Présentation
Needle 3 est le dernier modèle de fondation publié par Cactus Compute. Il se présente sous la forme d’un binaire unique de 8 à 29 Mo, destiné aux microcontrôleurs, wearables, robots, systèmes embarqués et smartphones. Le modèle est construit sur une architecture dite Simple Attention Network et utilise une quantisation CQ2‑bit, ce qui permet de réduire la taille du fichier tout en conservant une capacité d’inférence suffisante pour des tâches de dialogue, d’appels d’outils et d’extraction structurée.
Architecture et quantisation
Needle 3 propose une « intelligence ladder » : chaque profondeur de 2 à 20 couches constitue un sous‑réseau autonome. Le sous‑réseau de 4 couches, lorsqu’il est fine‑tuned pendant une époque sur des tâches en aval, atteint les performances de DeepSeek V4 Flash, un modèle cloud dix fois plus volumineux. Le réseau compte 121 M de paramètres, répartis sur 20 layers, avec un embedding de 8 192 × 768 et un vocabulaire SentencePiece BPE de 8 192 tokens. La quantisation CQ2‑bit réduit la représentation des poids à deux bits, ce qui explique la fourchette de taille finale (9 à 29 Mo). Le calcul par token consomme moins de deux fois les MFLOPs d’un transformeur de même configuration grâce à des optimisations telles que l’engram fusion, la convolution causale 3‑tap par canal et l’attention GQA avec RoPE et normalisation QK‑norm.
Performances et comparaison
Le modèle a été entraîné sur 360 B de tokens provenant d’un jeu de données structuré propriétaire. Sur un Raspberry Pi 5, il atteint entre 400 et 4 000 tokens/s en décodage et 1 000 à 10 000 tokens/s en pré‑remplissage, ce qui le rend exploitable en temps réel sur du matériel limité. Les benchmarks montrent que Needle 3 dépasse de dix fois les modèles de taille équivalente sur les appels d’outils mobiles et se situe à 2‑3 fois la performance de modèles plus gros sur les tâches d’extraction. Les évaluations utilisent trois suites d’appels d’outils et trois suites d’extraction, avec des scores F1 supérieurs à ceux de modèles de référence, tout en restant dans une empreinte mémoire de moins de 30 Mo.
Utilisation via l’API Python
import needle
@needle.tool
def get_weather(city: str):
"Get the current weather for a city."
return {"city": city, "temp_c": 27, "sky": "clear"}
agent = needle.Needle(tools=[get_weather])
print(agent.run("what's it like in Lagos right now?")["results"])
# [{'city': 'Lagos', 'temp_c': 27, 'sky': 'clear'}]
L’API charge le moteur d’inférence depuis Hugging Face, le met en cache et ne nécessite aucune compilation supplémentaire. Les développeurs décrivent leurs fonctions via des signatures et des docstrings ; Needle sélectionne alors l’appel approprié, exécute la fonction et renvoie le résultat structuré. Cette approche permet d’intégrer le modèle dans des assistants vocaux, des systèmes de domotique ou des robots sans dépendre d’une connexion réseau.