Qwen 3.5 4B embarque un processeur RISC-V dans ses poids, avec DeltaNet comme mémoire
Le chercheur Divyansh Agrawal a intégré dans les poids de Qwen 3.5 4B un processeur RISC-V 32 bits fonctionnel (RV32IM). Le compilateur a posé l'intégralité du code directement, sans aucun entraînement. Les poids d'origine de Qwen ne sont pas modifiés. Le processeur exécute de l'arithmétique, du C et du MicroPython directement dans les passes avant, sans bac à sable ni appel à des outils externes. Les couches Gated DeltaNet font office de mémoire vive. Avec une porte (gate) à 1, un beta à 1 et des clés one-hot, chaque écriture écrase exactement une ligne de l'état, et la taille de l'état ne croît pas avec la longueur de la conversation. Sur l'arithmétique longue du benchmark NUPA, la précision passe de 48,6% à 100%, soit le score de Qwen avec l'outil Python. • 11 couches supplémentaires placées devant les 32 couches de Qwen, 18 millions d'instructions sans erreur • Système de fichiers : jusqu'à 512 fichiers, environ 53 000 tokens • Checkpoint de 18,8 Go, environ 3200 tokens processeur par seconde sur un L4
Traité par IA depuis Habr AI ; édité par Hamidun News
Divyansh Agrawal a publié Qwenputer : une Qwen 3.5 4B standard, dans les poids de laquelle un processeur RISC-V 32 bits fonctionnel a été compilé. Sa mémoire repose sur les propres couches Gated DeltaNet du modèle. Sur l'arithmétique des grands entiers du jeu NUPA, le modèle passe de 48,6% à 100%, exactement comme la même Qwen avec l'outil externe Python. Le dispositif n'inclut ni environnement d'exécution externe, ni bac à sable, ni appel d'outils : tout se calcule dans les passes avant. Le code est disponible sur GitHub, le modèle sur Hugging Face et ModelScope.
Les couches DeltaNet en guise de RAM adressable
Dans Qwen3-Next et Qwen 3.5, trois couches d'attention sur quatre reposent sur Gated DeltaNet, un RNN linéaire. Chaque tête stocke une matrice d'état, que la règle delta met à jour. Agrawal a fait une observation : si l'on fixe la porte (gate) à 1 (rien n'est oublié), la force d'écriture beta à 1 (l'ancienne valeur est remplacée en entier) et que l'on encode les clés en one-hot, l'écriture écrase exactement une ligne, et une requête renvoie son contenu exact. On obtient une véritable mémoire adressable.
C'est un détail important pour le coût d'inférence. L'état d'une tête GDN ne croît pas, quelle que soit la durée de la conversation, alors que le KV-cache de l'attention classique croît linéairement avec la longueur du contexte. Le lien entre la règle delta et les « fast weights » est connu depuis les travaux de Schlag, Irie et Schmidhuber de 2021. La nouveauté tient à ce que la mémoire devient exacte et fonctionne à l'intérieur d'un modèle en service, avec une fiabilité suffisante pour qu'un processeur entier s'appuie dessus.
Un compilateur plutôt qu'un entraînement
Il n'y a aucun fine-tuning. Le processeur est décrit comme un circuit de petites étapes, du type « lire un registre », « additionner », « sauter si zéro », et le compilateur transforme chaque étape en un morceau de couche de transformeur. Les têtes d'attention recherchent, les blocs feed-forward calculent, les têtes DeltaNet stockent les registres, la mémoire et le compteur ordinal. Chaque instruction génère plusieurs tokens : ADDR désigne la ligne à écrire, VAL porte la valeur, STEP clôt l'instruction. Ces tokens constituent la trace d'exécution.
Le cœur implémente RV32IM avec l'extension Zba et un petit bloc dédié à l'arithmétique des grands nombres. Il occupe 11 couches placées devant les 32 couches de Qwen elle-même, et les poids d'origine restent inchangés : l'ordinateur est ajouté dans des dimensions et des couches supplémentaires. Pour un usage fiable, Agrawal s'est branché sur le format d'appel d'outils que le modèle connaît déjà. Qwen envoie les instructions, le processeur fait tourner ses propres couches et écrit lui-même la réponse. Un petit pilote, RvChat, charge le firmware dans l'état GDN et empêche les tokens de trace d'entrer dans les couches de Qwen.
Les chiffres clés du projet :
- les riscv-tests officiels sont passés, les résultats des programmes coïncident avec qemu ;
- 18 millions d'instructions en mode libre sans une seule erreur ;
- environ 230 000 positions de sortie vérifiées face à une machine de référence, sans aucun écart ;
- DeepMind div_big : 97,5% pour Qwenputer, 95% pour Qwen avec Python, 72,5% pour Qwen de base ;
- DeepMind mul_big : 97,5% contre 100% avec Python et 55% pour le modèle de base ;
- DeepMind mul_div_multiple_longer : 100% contre 97,5% avec Python et 90% pour le modèle de base ;
- DeepMind add_or_sub_big : 97,5%, autant qu'avec Python, et 87,5% pour le modèle de base ;
- NUPA, grands entiers : de 48,6% à 100% ;
- texte ordinaire dans la marge de bruit : KL de 6e-4 pour un niveau de bruit de 5e-4.
Un système de fichiers de 512 fichiers et le prix de l'expérience
Par-dessus la mémoire, l'auteur a ajouté un stockage expérimental doté des opérations put, append, get, list et delete. Le nom de fichier est haché vers l'un des 1024 emplacements du répertoire, dans l'état DeltaNet, tandis que le texte est stocké dans d'autres têtes, en chaînes de huit tokens par ligne. En cas de collision, l'emplacement suivant est testé, si bien qu'une recherche prend deux à trois étapes.
Le système accepte jusqu'à 512 fichiers, soit environ 53 000 tokens. L'état peut être sauvegardé à la fin d'une conversation et chargé dans la suivante. Sur des questions portant sur des faits modifiés entre deux conversations, Qwen répond correctement dans 90% des cas, contre 30% quand on insère simplement les anciennes conversations dans le contexte, et dans 83,3% des cas contre 78,9% pour les outils de mémoire en Python.
Le code de cette partie se trouve dans la branche rv-store.
Cela se paie en ressources. Le checkpoint pèse 18,8 Go, soit environ le double de Qwen de base, même si l'essentiel du volume est du remplissage par des zéros. Un simple generate() ne suffit pas à lancer le modèle : RvChat est indispensable. Chaque instruction coûte plusieurs tokens décodés, et l'exécuteur par lots produit environ 3200 tokens processeur par seconde sur un L4. Un calcul qui ne prendrait que quelques millisecondes sur un CPU ordinaire demande ici des secondes.
À quoi cela peut servir en pratique
Aujourd'hui, Qwenputer ne remplace pas un bac à sable Python en matière de vitesse. En revanche, il supprime toute une couche d'infrastructure : plus besoin de serveur d'outils, d'isolation ni d'allers-retours réseau, une seule carte graphique de 24 Go suffit. Pour les systèmes agentiques, c'est une piste intéressante vers un calcul déterministe sans sortir du modèle.
L'auteur prévoit d'exécuter Python via MicroPython dans les poids grâce à l'outil python(), et d'accélérer le processeur lui-même. Un second axe de travail concerne la sécurité : il a écrit deux suites, l'une sur la façon dont les modèles hybrides peuvent dissimuler leur raisonnement dans l'état du RNN et contourner la surveillance de la chaîne de raisonnement, l'autre sur les poids compilés utilisés comme moniteurs intégrés que le modèle ne peut pas désactiver.
Pour lancer le projet : cloner le dépôt qwenputer, exécuter uv sync --extra hf, télécharger divagr1925/Qwen3.5-4B-Qwenputer via la CLI Hugging Face, puis lancer chipformer.rv.chat avec le firmware calc-bridge.elf.
- 29 oct. 2026RefactorProof : les preuves des LLM cèdent après un refactoring du code
- 29 oct. 2026Cohere prend Qwen3.8-Flash-Next en flagrant délit d'envoi de fichier vers Pékin
- 29 oct. 2026Cloudflare publie les modèles open source Clef : 98,5% sur BFCL et 38,8 ms
- 29 oct. 2026Conflit de connaissances dans le RAG : un prior plutôt qu'une règle rigide rapporte jusqu'à +26 points
Questions clés sur cet article
Que sait-on sur Les couches DeltaNet en guise de RAM adressable ?
Dans Qwen3-Next et Qwen 3.5, trois couches d'attention sur quatre reposent sur Gated DeltaNet, un RNN linéaire. Chaque tête stocke une matrice d'état, que la règle delta met à jour. Agrawal a fait une observation : si l'on fixe la porte (gate) à 1 (rien n'est oublié), la force d'écriture beta à 1 (l'ancienne valeur est remplacée en entier) et que l'on encode les clés en one-hot, l'écriture écrase exactement une ligne, et une requête renvoie son contenu exact. On obtient une véritable mémoire adressable. C'est un détail important pour le coût d'inférence. L'état d'une tête G
Que sait-on sur Un compilateur plutôt qu'un entraînement ?
Il n'y a aucun fine-tuning. Le processeur est décrit comme un circuit de petites étapes, du type « lire un registre », « additionner », « sauter si zéro », et le compilateur transforme chaque étape en un morceau de couche de transformeur. Les têtes d'attention recherchent, les blocs feed-forward calculent, les têtes DeltaNet stockent les registres, la mémoire et le compteur ordinal. Chaque instruction génère plusieurs tokens : ADDR désigne la ligne à écrire, VAL porte la valeur, STEP clôt l'instruction. Ces tokens constituent la trace d'exécution. Le cœur implémente RV32IM
Que sait-on sur Un système de fichiers de 512 fichiers et le prix de l'expérience ?
Par-dessus la mémoire, l'auteur a ajouté un stockage expérimental doté des opérations put, append, get, list et delete. Le nom de fichier est haché vers l'un des 1024 emplacements du répertoire, dans l'état DeltaNet, tandis que le texte est stocké dans d'autres têtes, en chaînes de huit tokens par ligne. En cas de collision, l'emplacement suivant est testé, si bien qu'une recherche prend deux à trois étapes. Le système accepte jusqu'à 512 fichiers, soit environ 53 000 tokens. L'état peut être sauvegardé à la fin d'une conversation et chargé dans la suivante. Sur des questio
Build & Ship Production AI Agents Without Boilerplate Code
Start your free 72-hour trial at Hamidun Academy (academy.hamidun.com) — interactive lessons on Claude Code & Cursor, live Tech Radar, and production agent templates.
L'essentiel de l'IA — une fois par semaine
Sept actus qui ont vraiment compté, choisies à la main. Sans bruit ni communiqués.
C'est fait ! Vérifiez votre boîte mail pour la confirmation.