>_ DevTrendsfr

Langue

Accueil

Langages

Sections

Frontend Backend Mobile DevOps AI / ML GameDev Blockchain Embarqué Sécurité
Python

Comment intégrer l'IA dans des lunettes connectées sans devenir fou à cause du lag

Imaginez que vous développez un logiciel pour des lunettes connectées ou une montre intelligente. Vous avez besoin que l'appareil comprenne les commandes vocales : « éteins les lumières », « quel temps fera-t-il demain à Saint-Pétersbourg ? » ou « réserve une table ». Habituellement, vous appelleriez les API de grands modèles de langage comme Gemini ou GPT-4. Mais alors les problèmes commencent : quelques secondes de latence ruinent toute l'expérience utilisateur, et les factures de tokens augmentent plus vite que votre nombre d'utilisateurs.

L'équipe de Cactus Compute a décidé d'emprunter une approche différente. Elle a pris les connaissances du massif Gemini 1.5 et les a « transférées » dans un petit modèle appelé Needle, qui ne fait que 26 millions de paramètres. Pour comparaison : c'est des centaines de fois plus petit que les « petits » populaires comme Llama-3-8B ou même Qwen-0.5B.

Logo

Ce que ce petit modèle peut faire

Needle n'est pas un chatbot qui discutera avec vous du sens de la vie. C'est un outil à usage spécifique pour l'Function Calling. Il prend une requête utilisateur en langage naturel et la transforme en JSON structuré que votre code peut comprendre.

La fonctionnalité principale ici est la vitesse. Sur leur propre infrastructure, le modèle délivre des performances impressionnantes de 6 000 tokens par seconde en préfill et 1 200 en génération. Mais même si vous l'exécutez localement sur un MacBook ordinaire, cela fonctionne pratiquement instantanément.

Voici quelques éléments qui font de Needle un projet intéressant :

  • Le modèle a été entraîné sur 200 milliards de tokens. C'est une quantité sérieuse pour sa taille.
  • Il est optimisé pour le edge computing — téléphones, wearables et appareils IoT.
  • Il est livré avec un Playground pratique où vous pouvez affiner le modèle pour vos outils spécifiques en quelques clics.

Comment ça fonctionne à l'intérieur

L'architecture s'appelle Simple Attention Network. Si vous regardez le diagramme que les auteurs ont laissé dans le dépôt, vous pouvez voir une solution plutôt élégante.

Le modèle se compose d'un encodeur de 12 couches et d'un décodeur de 8 couches. Curieusement, l'encodeur n'a pas de réseaux Feed-Forward (FFN) traditionnels — il n'a que du Self-Attention et des connexions Gated Residual. Cela économise beaucoup de mémoire et de ressources de calcul. Les poids d'embedding et les poids de la couche linéaire de sortie sont liés, ce qui est également une astuce standard pour réduire la taille du modèle sans perdre en qualité.

Les auteurs le disent honnêtement : Needle est une expérience. Il surpasse FunctionGemma-270m et Qwen-0.6B dans les tâches d'appel de fonctions, mais reste en retrait dans les conversations ordinaires. Les petits modèles ont peu de « mémoire » du monde, il est donc facile de les embrouiller avec une question complexe hors sujet.

Démarrage rapide et affinage

Déployer le projet est un jeu d'enfant. Après avoir cloné le dépôt et exécuté le script d'installation, la commande needle playground ouvre l'interface web. Là, vous pouvez immédiatement tester le modèle avec vos propres exemples.

Si vous avez besoin d'intégrer Needle dans un projet Python, le code semble familier :

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="Сколько градусов сейчас в Сочи?",
    tools='[{"name":"get_weather","description":"Узнать погоду в городе.","parameters":{"location":{"type":"string","description":"Название города."}}}]'
)
print(result)
# [{"name":"get_weather","arguments":{"location":"Сочи"}}]

La chose la plus précieuse est la simplicité de l'affinage. Si vous avez des API spécifiques, vous pouvez « entraîner » Needle dessus. Les auteurs recommandent de préparer au moins 120 exemples par outil pour éviter le surapprentissage. Le dépôt contient même un script pour générer de telles données en utilisant le « grand » Gemini.

Qui devrait l'essayer

Je vois Needle dans des projets où la confidentialité et le fonctionnement hors ligne sont critiques. Par exemple, dans un système de maison intelligente qui ne devrait pas envoyer vos conversations dans le cloud, ou dans une application mobile pour contrôler une interface complexe avec votre voix.

Bien sûr, 26 millions de paramètres imposent des limites. Vous ne pourrez pas lui demander d'écrire une dissertation ou de traduire un texte technique complexe. Mais si votre tâche est de comprendre ce que l'utilisateur veut dire par « baisse le son » ou « planifie une réunion pour jeudi », Needle le gérera plus rapidement et à moindre coût que tout autre modèle.

Le projet est open source, les poids sont sur Hugging Face, et la licence MIT vous permet de l'utiliser dans des produits commerciaux. Si vous cherchiez un moyen d'ajouter de l'IA à un microcontrôleur ou un ancien smartphone — c'est un excellent candidat pour les tests.

Projets similaires