Overview
Neuron Translator — Traducteur de neurones pour GNU/Hurd¶
Présentation¶
Le projet Neuron Translator (https://github.com/GNU-AI-SOFTWARE/neuron-translator) implémente un traducteur de neurones à sigmoïde pour GNU/Hurd, écrit en C23, conçu pour gérer de très grands nombres de neurones (100 000 et plus) avec une empreinte mémoire minimale et une faible charge CPU.
Conformément à l'architecture de GNU AI (https://gnu-ai.org), le réseau de neurones n'est pas une application : c'est un traducteur — un programme serveur attaché à un nœud du système de fichiers (ici /llm) avec la commande settrans. Le réseau devient ainsi un objet système manipulable avec cat et echo.
Fonctionnement du traducteur¶
- Le traducteur est attaché au nœud /llm : sudo settrans -cg /llm /hurd/sigmoid-neuron-translator
- Configuration de la topologie : echo '3,5,2' | sudo tee /llm crée un réseau 3 entrées → 5 cachés → 2 sorties
- Injection d'entrée : echo '0.5,0.3,0.8' | sudo tee /llm — le nombre de valeurs doit correspondre exactement à la taille de la couche d'entrée ; la propagation avant est exécutée automatiquement
- Lecture de l'état : cat /llm affiche la topologie, les paramètres des neurones, l'usage mémoire, les statistiques et les valeurs de sortie
Le neurone sigmoïde¶
Chaque neurone artificiel calcule une somme pondérée de ses entrées, puis applique la fonction d'activation sigmoïde :
- s = biais + Σ (entréeᵢ × poidsᵢ)
- sortie = f(s) = 1 / (1 + e^(−s))
La sigmoïde écrase toute valeur réelle dans l'intervalle ]0 ; 1[, avec une transition douce autour de zéro. Ses propriétés :
- Dérivabilité partout : f'(s) = f(s) × (1 − f(s)), calculable directement à partir de la sortie déjà calculée — essentiel pour l'apprentissage
- Non-linéarité douce : permet au réseau d'apprendre des relations non linéaires
- Sortie interprétable : proche d'une probabilité, utile pour la classification
Le modèle biologique du dépôt inclut aussi des paramètres plausibles au niveau neuronal : potentiel de repos (−80 mV), seuil de déclenchement (−55 mV), taux de fuite (0,1) et période réfractaire (5 pas de temps).
Mode d'entraînement¶
L'entraînement d'un réseau de neurones sigmoïdes repose sur la rétropropagation du gradient (backpropagation), en trois phases :
Propagation avant : les entrées traversent les couches (couche d'entrée → couches cachées → couche de sortie), chaque neurone appliquant sa somme pondérée puis sa sigmoïde. C'est la phase implémentée dans le traducteur (cat /llm donne la sortie).
Calcul de l'erreur : on compare la sortie du réseau à la sortie attendue (fonction de coût, typiquement l'erreur quadratique : E = ½ × Σ (sortie − cible)²).
Rétropropagation et mise à jour : l'erreur est propagée de la couche de sortie vers l'entrée, en utilisant la dérivée de la sigmoïde f'(s) = f(s)(1 − f(s)). Chaque poids et biais est corrigé proportionnellement à sa contribution à l'erreur : poids ← poids − taux_apprentissage × ∂E/∂poids.
Dans l'architecture GNU AI, cette phase n'est qu'une séquence d'appels RPC orchestrés entre traducteurs : le modèle ne s'arrête jamais pour s'entraîner (apprentissage incrémental, en direct).
Efficacité mémoire et CPU¶
- Stockage en float32 (4 octets au lieu de 8) et allocation contiguë : un unique bloc mémoire pour tout le réseau, aligné sur 16 octets (compatible SIMD)
- Pas d'allocation dynamique à l'exécution, accès séquentiel adapté au cache, sigmoïde inlinée
- Croissance mémoire linéaire : ~2 Ko pour 35 neurones, ~80 Mo pour un réseau 10000-1000-100 (11 100 neurones, 10,1 M de poids)
Ressources¶
- Dépôt GitHub : https://github.com/GNU-AI-SOFTWARE/neuron-translator
- Architecture GNU AI : https://gnu-ai.org
- Licence : GNU GPLv3