Handwired : convertir du code JavaScript en réseau de neurones différentiable
Sommaire
En bref
- Handwired est un outil qui transforme du code numérique JavaScript (conditions, boucles, opérations) en circuits différentiables exécutables en navigateur, sans GPU ni entraînement préalable.
- Les démonstrations incluent un mini système d'exploitation avec interface DOM et une recherche dans 100 000 documents JSON via WebGPU.
- La promesse affichée dépasse la réalité : le code source ne peut pas être du JavaScript arbitraire, il doit respecter certaines contraintes de différentiabilité.
Ce que dit la source
L'auteur propose un outil appelé Handwired qui prétend convertir du code JavaScript « régulier » en réseau de neurones exact et entièrement différentiable, exécutable en navigateur sans GPU. La présentation suggère que n'importe quel code logique peut être transformé en circuit neuronal capable d'effectuer des tâches complexes (rendu DOM, parsing JSON, regex) et de devenir entraînable.
- Le processus repose sur la différentiabilité automatique : une condition `a > 4 ? 10 : 12` est convertie en combinaisons de ReLU et d'opérations linéaires
- La démo du mini OS affiche 9 909 poids et 130 couches sans phase d'entraînement initiale
- L'outil propose une galerie « Unfreeze » où les poids d'un programme compilé peuvent être affinés en temps réel
- La recherche dans 100 000 documents JSON utilise WebGPU pour paralléliser le matching et le parsing
- Le code source réel du projet est enrichi de fonctions comme `emiRelu`, contredisant le message « JavaScript régulier »
Dans les commentaires
Débat partagé et sceptique : la confusion porte sur le fossé entre la promesse marketing (« convertir du JavaScript régulier ») et la réalité technique (écrire dans un domaine spécifique avec contraintes de différentiabilité). Plusieurs commentateurs relèvent le surclassement de la présentation.
- Un commentateur établit que le projet ne convertit pas du JavaScript arbitraire, mais impose l'écriture dans un DSL avec des fonctions spéciales (type `emiRelu`), ce que contredisent le readme et la page d'accueil qui affirment le contraire.
- Un cas pratique : passer `a = 4.5` au démonstrateur retourne 11 au lieu d'une interpolation lisse, révélant que la différentiabilité ne capte pas tous les cas limites et que « tout n'est pas différentiable ».
- Plusieurs commentateurs relèvent l'absence de justification explicite du projet : le site mélange plusieurs idées (transformation de code, entraînement temps réel, recherche documentaire) sans clarifier le cœur de la proposition.
Notre lecture
Le projet est techniquement intéressant comme preuve de concept : approcher les programmes via des circuits différentiables ouvre des pistes (affinement des poids, apprentissage incrémental sans déploiement classique). Mais la présentation crée une déconnexion dommageable entre le titre et la substance. Handwired nécessite que le développeur encode sa logique dans les primitives et syntaxe du système, pas « convertit » du code existant. Utile pour explorer l'interaction entre programmes et données via l'optimisation, mais à situer clairement comme un langage/DSL dédié, pas un compilateur transparent. À explorer techniquement si cette approche résout un problème concret du workflow (affinement local de règles métier, test de variations sans redéploiement), mais pas d'adoption large immédiate.