Aller au contenu

Expérience · Simulation

L’organisme simulé : un quadrupède rejouable, reprenable et auditable

Cette expérience fait tourner pendant quatre heures un quadrupède simulé dans le moteur physique MuJoCo, piloté par un contrôleur de 50 000 neurones dont la topologie est dérivée du connectome de la drosophile. Le résultat n’est pas la marche : le corps tient debout et se déplace de quelques centimètres. Le résultat est la vérifiabilité. Chaque bloc de l’exécution se rejoue à l’identique, l’état se recharge à l’identique, et chaque organe débranché laisse une trace mesurée.

4 hd’exécution continue : 4 321 500 pas, une seule graineexécution du 28/05/2026, journal scellé
24 / 24sauvegardes rechargées avec une empreinte identiquemesure du 11/10/2026 sur les 24 fichiers
15 / 15blocs identiques après arrêt, rechargement et reprisemesure du 11/10/2026
6 / 6valeurs d’audit du 28/05 retrouvées au bit prèsmesure du 11/10/2026

1. La question

Un corps simulé qui tient debout sous un contrôleur à réseau de neurones n’a rien d’inédit. Ce qui est rare, ce sont les propriétés de l’exécution : peut-on la rejouer à l’identique, l’interrompre puis la reprendre sans écart, et dire ce que chaque organe y apporte en le débranchant ? L’expérience pose ces trois questions à un quadrupède simulé et y répond par des mesures datées. Un calcul dont on peut établir après coup ce qu’il a fait est une condition de l’IA embarquée que l’on veut certifier.

2. Le dispositif

Le simulateur est MuJoCo : un quadrupède à huit articulations (une hanche et un genou par patte), avancé par pas de 0,02 s. À chaque pas, des signaux sensoriels scénarisés entrent dans le contrôleur, un décodeur moteur en tire huit commandes et MuJoCo applique les couples. Le contrôleur est un réseau de 50 000 neurones et 1 571 646 connexions, calculé en virgule flottante simple précision, dont la topologie est dérivée du connectome FlyWire (v783). Le schéma montre la boucle et les trois points où l’on mesure.

SimulateurMuJoCo, quadrupède à 8 articulations, pas de 0,02 s
Contrôleur50 000 neurones, 1 571 646 connexions, float32 ; topologie dérivée du connectome FlyWire (v783)
Exécution28 mai 2026 · 14 411,91 s · 17 286 blocs de 250 pas (4 321 500 pas) · graine 7
VerdictPASS_FORT : 16 portes de contrôle sur 16
SourcePaquet d’exécution scellé du 28 mai 2026 ; journal long_life_timeseries.jsonl, sha256 d1de89fa…da3ad8 ; les valeurs tracées sont en JSON sur cette page. Le paquet n’est pas publié.
Le contrôleur exécute un sous-graphe de 50 000 neurones du connectome complet (139 255 neurones). Les régions motrices sont des approximations non certifiées biologiquement. Le corps est un quadrupède, pas une mouche.
Situation15 blocs en cycle250 pas par blocCapteurs simuléssignaux scénarisés+ état du corpsContrôleur50 000 neuronesfloat32MuJoCo8 articulationspas de 0,02 sl’état du corps revient aux capteurs à chaque pasEmpreinte d’étatSHA-256 des potentiels, des poids,du compteur de pas et de la phase :sauvegarde, rechargement, repriseEmpreinte des actionsSHA-256 de la suite des actionsd’un bloc : rejeu bloc à bloc,17 286 blocs comparésDébranchementun organe coupé, même bloc,même graine : l’effet est l’écartde récompense avec l’organe actif
Schéma de principe de l’expérience (non à l’échelle).

3. L’exécution de quatre heures

L’exécution enchaîne un cycle de 15 blocs de 250 pas (5 s simulées chacun) sur neuf situations de base : tenir debout, éviter un obstacle, fuir une masse qui grossit, chercher une source par la vue et l’odeur, tourner (à gauche et à droite d’un cycle à l’autre), avancer, se rétablir après une poussée, traverser le noir, évoluer dans un monde mixte. Le cycle se répète 1 152 fois, plus 6 blocs. À chaque bloc, le corps est replacé à 0,55 m de hauteur, retombe sur ses pattes et se stabilise.

La figure suit le bloc 1, rejoué le 11/10/2026 : l’angle des huit articulations (en degrés) et la pose du corps toutes les 0,1 s, en vue en perspective et en vue de dessus. Les cinq secondes simulées sont montrées en dix secondes.

vue en perspectivevue de dessus (avant du corps à droite)10 cmP1P2P3P4hauteur du tronc (m)angle des 8 articulations (degrés)0,20,40,6−10°−5°0°5°10°001122334455temps simulé (s)temps simulé (s)P1P2P3P4hanchegenou
Bloc 1 (tenue debout), 250 pas = 5 s simulées, ralenti ×2. Les huit articulations restent à moins de 6° de leur position de repos (butées : ±34° aux hanches, ±40° aux genoux). Le tronc passe de 0,55 m à 0,25 m en 0,24 s, puis se stabilise vers 0,28 m. Données : JSON.

Le déplacement net d’un bloc va de −3,0 cm à +3,2 cm : l’organisme se tient et oscille, il ne marche pas. Le tableau reprend les chiffres de l’exécution entière.

Grandeur Valeur Fichier source
Durée 14 411,91 s (≈ 240 min) long_life_metrics.json
Blocs · pas 17 286 blocs · 4 321 500 pas, soit 24,0 h simulées long_life_metrics.json
Cadence moyenne 300,1 pas/s long_life_metrics.json
Chutes du tronc (< 0,15 m) 0 long_life_metrics.json
NaN · exceptions 0 · 0 long_life_metrics.json
Poussées absorbées sans chute 1 152 / 1 152 long_life_metrics.json
Mises à jour de plasticité 27 187 330 (effet sur les poids non mesuré) long_life_metrics.json
Mémoire vive au pic 144,1 Mo long_life_metrics.json
Déplacement net d’un bloc de −3,0 à +3,2 cm long_life_timeseries.jsonl
Portes de contrôle PASS_FORT · 16 / 16 long_life_metrics.json

4. Rejouabilité et reprise bit-exacte

Une empreinte par bloc

Chaque bloc produit une empreinte : le SHA-256 tronqué de la suite des actions du contrôleur. Sur les 17 286 blocs de l’exécution, il existe 19 empreintes distinctes. À partir du cycle 2, chaque emplacement du cycle redonne la même empreinte à chaque tour, jusqu’au dernier ; seul le virage alterne entre deux empreintes (gauche, droite). Les 24 sauvegardes sont marquées sur l’axe du temps.

0 h1 h2 h3 h4 h1 debout2 obstacle3 masse qui grossit4 source5 source et danger6 virage (gauche, droite)7 monde bruité8 avance9 poussée10 monde mixte11 noir vers lumière12 odeurs en conflit13 obstacle mobile14 zone nouvelle15 long passage noirsauvegarde de l’état (24)Une couleur = une empreinte. Lignes uniformes d’un tour à l’autre, sauf le tour 1 des lignes 1 à 3.Ligne 6 : deux demi-bandes, une par empreinte (virage à gauche, virage à droite).
Empreinte des actions des 17 286 blocs, par emplacement du cycle. Données : JSON.

Rejeu du 11 octobre 2026

Les blocs 1 à 30 (deux cycles) ont été rejoués le 11 octobre 2026 avec le code et la graine de l’exécution du 28 mai, sous MuJoCo 3.15.0. Le tableau compare chaque grandeur au journal de l’exécution. Les sorties du contrôleur coïncident au bit près sur les 30 blocs. Le simulateur physique, en virgule flottante, diffère du journal au dernier chiffre pour 6 déplacements sur 30 (écart maximal 1,5 × 10−16 m). La reproductibilité d’une machine à l’autre n’est pas mesurée.

Grandeur comparée au journal Blocs identiques sur 30
récompense moyenne 30 / 30
empreinte des actions 30 / 30
mises à jour de plasticité 30 / 30
entropie motrice 30 / 30
signal de renforcement 30 / 30
chutes 30 / 30
déplacement du corps (simulateur, virgule flottante) 24 / 30

Reprise bit-exacte

L’exécution a écrit 24 sauvegardes de l’état du contrôleur, une toutes les dix minutes environ, avec l’empreinte de l’état juste avant l’écriture (SHA-256 tronqué des potentiels, des poids, du compteur de pas et de la phase). Le 11 octobre 2026, chacune a été rechargée dans un organisme neuf : les 24 empreintes rechargées sont identiques aux 24 empreintes enregistrées, et les 24 fichiers ont le sha256 consigné.

n° instant empreinte enregistrée empreinte rechargée
1 0 h 10 1b193981f9a03cbe 1b193981f9a03cbe =
2 0 h 20 97c8936682335aa6 97c8936682335aa6 =
3 0 h 30 4b34dfb714b0e2f7 4b34dfb714b0e2f7 =
4 0 h 40 7de3d84b498e9f70 7de3d84b498e9f70 =
5 0 h 50 73b4ca216fb6b1d0 73b4ca216fb6b1d0 =
6 1 h 00 a5a6f037d3343dc4 a5a6f037d3343dc4 =
7 1 h 10 f624527bbfcb0b50 f624527bbfcb0b50 =
8 1 h 20 3e1de520ff3994f8 3e1de520ff3994f8 =
9 1 h 30 0b673d09f635edfd 0b673d09f635edfd =
10 1 h 40 2bfc141efdb2ec59 2bfc141efdb2ec59 =
11 1 h 50 4d635c491b95ebe3 4d635c491b95ebe3 =
12 2 h 00 25618d1f81f9626e 25618d1f81f9626e =
13 2 h 10 14f3886f9001510c 14f3886f9001510c =
14 2 h 20 cd11bbeb65de3e84 cd11bbeb65de3e84 =
15 2 h 30 27bd5774116e7d53 27bd5774116e7d53 =
16 2 h 40 04933df1c99f75fa 04933df1c99f75fa =
17 2 h 50 0f5913faa19291dd 0f5913faa19291dd =
18 3 h 00 d70f50beea507ff6 d70f50beea507ff6 =
19 3 h 10 409bf65931a1a314 409bf65931a1a314 =
20 3 h 20 7193c8a491a67100 7193c8a491a67100 =
21 3 h 30 bd1bece87ede9a53 bd1bece87ede9a53 =
22 3 h 40 341045eab96a8490 341045eab96a8490 =
23 3 h 50 68f77a424b352e19 68f77a424b352e19 =
24 4 h 00 c792e9b06bfb1371 c792e9b06bfb1371 =

Test d’interruption : une exécution continue de 30 blocs, et la même exécution arrêtée après le bloc 15, rechargée dans un organisme neuf depuis le fichier de sauvegarde, puis poursuivie. L’état complet comprend celui du contrôleur et celui du signal de renforcement qui le module ; le second est conservé à part. Les 15 blocs suivants sont identiques (empreinte des actions, récompense, empreinte de la trajectoire du corps) et l’empreinte d’état finale est la même (a24bd32b1cc5ce07). Contrôle négatif : si l’on omet l’état du signal de renforcement à la reprise, les 15 blocs restent identiques mais l’empreinte d’état finale diffère (fbf72165030f234b) : l’empreinte détecte l’omission.

161718192021222324252627282930empreinte des actions du bloc (4 premiers caractères)empreinte d’état finaleExécution continuef2c1fd78096ddb1f69208ad74fa807f636ec666e35a6b5b85c195bd3d263a24bd32b================Arrêt après le bloc 15, rechargement dans un organisme neuf, reprisef2c1fd78096ddb1f69208ad74fa807f636ec666e35a6b5b85c195bd3d263a24bd32b===============≠Reprise avec l’état du signal de renforcement omis (contrôle négatif)f2c1fd78096ddb1f69208ad74fa807f636ec666e35a6b5b85c195bd3d263fbf72165= : mêmes empreintes de bloc. ≠ : l’empreinte d’état finale décèle l’omission.
Test d’interruption, blocs 16 à 30 et empreinte d’état finale. Données : JSON.

5. L’audit causal, organe par organe

Débrancher un organe et mesurer l’effet est la manière de savoir ce qu’il apporte. Six organes sont coupés tour à tour : l’entrée visuelle simulée, la voie de projection sensorielle, un sous-graphe associatif, le signal de renforcement, un sous-graphe intégrateur, et la sortie motrice (mélangée). Pour chaque organe et chacune des neuf situations, un bloc de 60 pas est rejoué avec l’organe débranché, sur un organisme neuf puis sur l’organisme rechargé de la sauvegarde finale. L’effet est l’écart de récompense moyenne avec le même bloc, organe actif.

Organisme neuf (graine 7)deboutobstaclemasse qui grossitsource (vue, odeur)virage à droitemonde mixteavancepousséenoirrécompense intacte0,1670,0520,2980,4990,0320,0670,0500,1950,342Entrée visuelle0−0,002−0,298+0,001+0,0010+0,0010+0,002Voie de projection sensorielle0−0,002−0,298+0,001+0,0010+0,0010+0,002Sous-graphe associatif000000000Signal de renforcement000000000Sous-graphe intégrateur0000−0,022000+0,002Sortie motrice mélangée0+0,005−0,003+0,005−0,003+0,003+0,008+0,034−0,032Organisme rechargé de la sauvegarde finale (4 h)deboutobstaclemasse qui grossitsource (vue, odeur)virage à droitemonde mixteavancepousséenoirrécompense intacte0,1670,0490,3100,4990,0340,0660,0490,1950,340Entrée visuelle00−0,258+0,001−0,002000+0,008Voie de projection sensorielle00−0,258+0,001−0,002000+0,008Sous-graphe associatif000000000Signal de renforcement000000000Sous-graphe intégrateur0000−0,020000+0,002Sortie motrice mélangée0+0,008−0,003+0,005−0,007+0,003+0,0080−0,025récompense plus basserécompense plus haute0 : écart nul au bit près
Écart de récompense moyenne (60 pas) quand l’organe est débranché, par situation. Mesure du 11/10/2026. Données : JSON.

Lecture. La coupure de l’entrée visuelle et celle de la voie de projection ont le même effet, massif sur une seule situation, la masse qui grossit : la récompense passe de 0,298 à 0,000 sur l’organisme neuf et de 0,310 à 0,052 après quatre heures ; l’écart ne dépasse pas 0,008 sur les huit autres situations. Le sous-graphe intégrateur n’agit que sur le virage à droite (0,032 → 0,010 ; 0,034 → 0,013) et pas ailleurs. Le sous-graphe associatif et le signal de renforcement ne changent rien, au bit près, à ces 60 pas. La sortie motrice mélangée déplace la récompense dans les deux sens, de −0,032 à +0,034.

Un écart nul établit seulement que ces 60 pas ne sollicitent pas l’organe. Les six valeurs mesurées à l’issue de l’exécution du 28 mai (situation « obstacle », 60 pas, organisme neuf) ont été retrouvées à l’identique le 11 octobre, ainsi que la mesure horaire de la vision coupée dans la situation de la masse qui grossit (40 pas : 0,2779 avec l’organe, −0,00001 sans, relevée trois fois dans le journal).

6. Ce que cela prépare

Les trois propriétés mesurées ici (rejeu, reprise, audit) sont celles qu’exige une IA embarquée certifiable : rejouer exactement une décision passée après un incident, reprendre après une coupure d’alimentation sans écart, établir ce que chaque composant apporte.

Le contrôleur de cette exécution calcule en virgule flottante : sa reproductibilité est mesurée, elle n’est pas garantie par l’arithmétique. L’arithmétique entière d’ArithSpec, identique d’une machine à l’autre, est la voie visée pour en faire une garantie. Le protocole de cette page (empreinte par bloc, rechargement, débranchement) se rejoue tel quel sur ce futur contrôleur.

Un programme de recherche, une épreuve extérieure

Ces résultats couvrent des domaines sans rapport entre eux : la géométrie des empilements (Packomania, Friedman Packing Center), la mécanique spatiale (ESA SpOC 4), la théorie des nombres (IBM Ponder This) et les graphes (FlyWire Codex). Dans chacun, le résultat est inscrit sur la page d’un tiers, table, classement ou liste, et se revérifie par calcul : l’ESA évalue chaque solution avec son simulateur, Packomania publie les entrées qu’il retient, IBM publie une liste de noms, Friedman tient une page qui crédite les auteurs. Pour FlyWire, la participation s’inscrit dans l’étude de la propagation dans les réseaux de neurones et les graphes, en vue de l’IA embarquée ; les scores partent de solutions publiées par d’autres participants et ont été transmis après la clôture des défis. Ces résultats relèvent d’un même programme de recherche : ne retenir que ce qu’un certificat prouve.

Cette page ne relève pas d’un défi : l’organisme simulé est un travail propre, sans arbitre extérieur. Ses propriétés se vérifient par le calcul, au moyen d’empreintes : rejeu à l’identique, reprise à l’identique, audit organe par organe. Il prépare l’IA embarquée certifiable visée par le programme.

Le principe est public : chaque hypothèse est testée par le calcul et n’est retenue que si un certificat la prouve. Des IA génératives me servent d’assistants, interchangeables : elles proposent, mon IA décide, le certificat tranche. Le fonctionnement interne reste confidentiel. Les résultats, eux, sont publics.

Le certificat change la nature de la preuve. Un résultat se vérifie sans faire confiance à celui qui l’a produit, comme une démonstration se vérifie sans connaître son auteur. C’est ce qui rend cette page possible : vous n’avez pas à me croire, vous revérifiez. Le résultat déposé est figé et son empreinte est publiée.

Tout le travail tourne sur du matériel accessible : un PC de bureau, un Raspberry Pi 5 et un Raspberry Pi Pico, qui servent aussi à vérifier que le calcul reste identique d’une machine à l’autre ; ponctuellement, une instance de 32 processeurs virtuels. Le programme vise une IA embarquée certifiable, jusque sur des machines modestes.

Un résultat vérifiable sans confiance, figé, revérifiable : ces propriétés ouvrent sur les usages visés :

  • l’IA embarquée certifiable, jusque sur des machines modestes ;
  • le pilotage des IA génératives, dont on ne retient que ce qui est prouvé ;
  • l’identité vérifiable des agents d’IA ;
  • l’audit après incident : rejouer exactement une décision passée ;
  • la science reproductible ;
  • la carte ouverte des calculs certifiés : chaque résultat avec son certificat, pour ne pas recalculer ce qui est prouvé.

Le programme de recherche détaille ce cadre. Tous les résultats, avec leurs sources et leurs dates, sont réunis sur la page Résultats.

Tous les résultats, avec leurs sources et leurs dates

→ La page Connectome