Exécuter un petit modèle de langage dans un secteur d'amorçage de 510 octets
Un nouveau projet appelé bootgpt exécute un réseau de neurones au niveau des caractères dans le Master Boot Record, générant de faux journaux Linux sur du matériel nu sans système d'exploitation.
Traduit automatiquement depuis l'original anglais.
Le développeur kerlenton a publié bootgpt, un projet qui exécute un petit modèle de langage directement depuis le Master Boot Record (MBR) d'un ordinateur. Publié fin octobre 2026, cet outil fonctionne entièrement en mode réel 16 bits sur du matériel BIOS hérité, ne nécessitant aucun système d'exploitation ni environnement d'exécution C pour fonctionner.
Ce qui s'est passé
Le projet présente un réseau de neurones qui se réveille avec la machine et génère des journaux de démarrage Linux hallucinés. Au lieu de charger un système d'exploitation traditionnel, le code lit ses propres secteurs depuis le disque, charge un modèle de 11,5 Ko stocké dans les secteurs suivants, et commence à imprimer du texte à l'écran en utilisant des interruptions BIOS basiques. La sortie imite les horodatages, les adresses de bus PCI et les événements ACPI pour un matériel qui n'existe pas réellement sur la machine hôte.
Cette approche diffère considérablement des tentatives récentes visant à exécuter des modèles plus grands comme Llama-2 pendant le processus de démarrage. Alors que d'autres projets tels que sectorllm utilisent plus de 1,2 Ko d'assembleur pour exécuter des modèles transformer avec des mécanismes d'attention, bootgpt se limite strictement aux 510 octets de l'espace de code MBR. Les poids et les tables de vocabulaire sont conservés dans des secteurs de données, permettant au moteur d'inférence de rester incroyablement compact tout en produisant des messages système cohérents, bien que dénués de sens.
Le dépôt inclut des outils pour générer des données d'entraînement, entraîner le modèle et enregistrer des démonstrations. Les utilisateurs peuvent écrire l'image de disque fournie sur une clé USB et démarrer n'importe quelle machine compatible BIOS pour voir l'effet. Le système est conçu pour être autonome, ne lisant que ses propres secteurs et redémarrant à chaque frappe de touche.
Comment cela fonctionne
Le cœur du système est un réseau de neurones au niveau des caractères avec une seule couche cachée. Pour tenir dans les contraintes sévères du secteur d'amorçage, le développeur a quantifié tous les paramètres du modèle au format int8 en utilisant des échelles de puissance de deux. Ce choix spécifique permet au processeur en mode réel 16 bits d'effectuer l'intégralité du passage avant en utilisant uniquement la multiplication entière (imul) et une seule instruction de division entière (idiv), évitant ainsi le besoin d'une émulation complexe en virgule flottante.
L'entraînement est géré par un script Python qui génère 3 Mo de faux journaux dmesg. Le générateur varie les versions du noyau et les configurations de disque à chaque session pour empêcher le modèle de simplement mémoriser des chaînes répétitives. Cette variation force le petit réseau à apprendre les motifs structurels des journaux de démarrage plutôt que de répéter simplement du texte statique. Le script d'entraînement simule également exactement les mathématiques entières que le code assembleur exécutera, y compris un Générateur Linéaire Congruentiel (LCG) pour l'échantillonnage. Cela garantit que la sortie de l'environnement d'entraînement Python correspond caractère par caractère à la sortie du secteur d'amorçage.
Le code assembleur d'exécution, contenu dans boot.asm, effectue le travail lourd. Il utilise l'interruption 13h pour charger les poids depuis le disque et l'interruption 10h pour imprimer des caractères dans le tampon vidéo. Les fonctions d'activation sont implémentées via softclip en utilisant les instructions cdq et idiv, tandis que l'échantillonnage repose sur du bruit initialisé par le minuteur système. Parce que le MBR est limité à 512 octets, les deux derniers octets étant réservés à la signature d'amorçage, le code exécutable doit tenir dans 510 octets.
Détails clés
- Le moteur d'inférence tient entièrement dans la limite de 510 octets de code du Master Boot Record.
- Le modèle utilise une quantification int8 avec des échelles de puissance de deux pour permettre des calculs efficaces uniquement en entier sur du matériel de l'ère 386.
- Les données d'entraînement consistent en 3 Mo de journaux de démarrage Linux synthétiques avec des versions de noyau et des configurations de disque variées.
- Le système fonctionne en mode réel 16 bits, utilisant des interruptions BIOS pour les E/S disque et la sortie vidéo.
- Les poids, les chaînes et la table de vocabulaire sont stockés dans les 23 secteurs suivant le MBR, totalisant 11,5 Ko.
- Toute frappe de touche déclenche un redémarrage, et la démo peut être enregistrée sans interface graphique via les sockets moniteur QEMU.
Pourquoi c'est important
Pour les ingénieurs travaillant sur l'IA en périphérie et les systèmes embarqués, bootgpt sert d'exemple extrême d'inférence sous contraintes de ressources. Il démontre comment une quantification soignée et une simplification architecturale peuvent permettre aux réseaux de neurones de fonctionner sur du matériel doté d'une mémoire et d'une puissance de traitement négligeables. Alors que la plupart des déploiements modernes d'IA se concentrent sur les GPU et les grandes empreintes RAM, ce projet met en évidence la viabilité des opérations uniquement en entier sur des CPU hérités, ce qui reste pertinent pour les microcontrôleurs basse consommation et les appareils IoT spécialisés.
Le projet souligne également l'importance de la fidélité de la simulation dans le développement ML embarqué. En garantissant que la boucle d'entraînement Python mime exactement l'arithmétique entière de l'environnement cible en assembleur, le développeur a évité des bugs subtils qui affligent souvent le déploiement de modèles multiplateformes. Cette méthode de vérification que l'entraînement et l'inférence produisent des résultats identiques est une pratique précieuse pour quiconque déploie des modèles sur du matériel non standard ou restreint où le support en virgule flottante est absent ou incohérent.
Ce que vous pouvez faire
- Clonez le dépôt bootgpt et inspectez les scripts de build pour comprendre le pipeline de quantification.
- Utilisez le corpus_gen.py fourni pour créer des jeux de données synthétiques pour d'autres tâches de génération de texte structuré.
- Expérimentez avec la stratégie de quantification int8 dans vos propres projets embarqués pour réduire la taille du modèle.
- Exécutez l'image de disque dans QEMU pour observer le processus de démarrage sans risquer le matériel physique.
- Étudiez le source boot.asm pour apprendre comment les interruptions BIOS gèrent les E/S dans les environnements en mode réel.
- Comparez l'architecture avec sectorllm pour comprendre les compromis entre la complexité du modèle et la taille du code.



