3D-Ansicht braucht WebGPU oder WebGL2.

Eingangsneuronengelesene Neuronen

Eine Engine für alle Modelle des Fliegengehirns

Alle unsere Demos rechnen dasselbe Netz: das FlyWire-Konnektom, 138.639 Neuronen und 15.091.983 Verbindungen, mit unveränderter Verschaltung. Ein Modell, das geht, unterscheidet sich von einem, das Doom spielt, nur durch Eingang, Ausgang und das Zeitverhalten jedes Neurons. Diese Woche haben wir die Engine genau so gebaut: eine Rechenregel für jedes Modell, im Training und im Browser.

Eine Rechenregel

Für jedes Neuron i, je Zeitschritt:

u  = g_i · (Σ W⁺·z + (1 − s_i) · Σ W⁻·z) + d_i
a  = f(max(|u| − s_i · g_i · Σ|W⁻|·|z|, 0)) / |u|
z' = R_i · (keep_i · z + α_i · a · u)

W⁺ und W⁻ sind die erregenden und hemmenden Verbindungen des Konnektoms, d_i ist der Antrieb aus den Sinnen, g_i eine Verstärkung. Der Parameter s_i legt fest, wie Hemmung wirkt: zum Eingang addiert (0) oder nur die Stärke der Erregung mindernd (1). α_i und keep_i sind die Zeitkonstante des Neurons: wie schnell es aufnimmt und vergisst. R_i ist entweder ein reeller Faktor oder eine Drehung e^{iω_i}: Mit Drehung trägt jedes Neuron eine Phase; wie schnell sie sich dreht, teilen sich alle Neuronen (Walk, Gaze) oder die Neuronen eines Zelltyps (Doom).

Alles, was die Modelle unterscheidet, ist eine Einstellung dieser Formel geworden. Facettenaugen, Körpersinn und die gelesenen Neuronen schließen die Maschine daran an.

Bitgenau, gleich schnell

Jedes Modell auf dieser Seite liefert dieselbe Ausgabe wie vorher, bis aufs letzte Bit, auf der CPU, in WebAssembly und auf WebGPU. Die Zahlen der Seite reproduzieren sich exakt: Der Doom-Arenalauf ergibt dieselben 200 Runden, die Objektverfolgung dieselben Haltequoten je Sekunde. Bei einem einzigen Seitenaufruf abwechselnd mit altem und neuem Kern gemessen kostet jeder Schritt gleich viel: Cursor 3,9 ms, Walk 5,7 ms, Doom 10,2 ms, Gaze 23,6 ms, jeweils mit Zurücklesen des Zustands.

Aktivität mit und ohne Phase

Ohne Phase rechnet die Engine nur die Aktivität, Bit für Bit gleich dem Phasenmodell mit Phase null, bei etwa halber Rechenzeit (der rekurrente Schritt von Cursor auf WebGPU: 2,8 ms ohne, 5,5 ms mit Phase).

Wie es weitergeht

Ein Lader, flycore.load, öffnet jetzt die Datei jedes Modells mit WebGPU oder WebAssembly als Ausweichlösung. Wir werden die Engine als Open Source veröffentlichen.