Skip to content

Commit 8541600

Browse files
authored
Merge pull request #112 from AdaWorldAPI/claude/setup-embedding-pipeline-Fa65C
docs: i8 signed architecture eliminates SiLU-ONNX entirely The sign IS the gate decision. No correction model needed. - round(cos × 127) → i8 preserves excitation/inhibition - VNNI VPDPBSSD does signed i8×i8→i32 at zero extra cost - Double-negative matches express negation/irony/counterfactual - Per-role scale factor replaces 270K-param ONNX model - CONTRADICTS stays for propositional logic (sentence-level) - i8 inhibition handles feature-level suppression (GABA-like) - Clean separation: two different things, both preserved Implementation order revised: i8 tables → inhibition → lateral inhibition → THEN temperature SiLU-ONNX: STRUCK. Sign preservation replaces it. https://claude.ai/code/session_01ChLvBfpJS8dQhHxRD4pYNp
2 parents f10e00d + 8984d08 commit 8541600

1 file changed

Lines changed: 199 additions & 0 deletions

File tree

.claude/HANDOVER_MAVERICK_SESSION.md

Lines changed: 199 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -363,3 +363,202 @@ Jina as truth anchor: for any input text, Jina embedding = ground truth similari
363363
Compare: cos(jina_emb_A, jina_emb_B) vs thinking_engine_distance(A, B).
364364
The gap = how much information our distance table loses.
365365
With γ+φ encoding + SiLU correction: gap should shrink.
366+
367+
---
368+
369+
## ARCHITEKTUR-EPIPHANIE: i8 Signed Tables (Excitator/Inhibitor)
370+
371+
### Das fehlende Puzzleteil
372+
373+
Aktuell: `distance_table[i][j] = u8` (0-255, unsigned, nur Ähnlichkeit)
374+
- "Unähnlich" (table=10) erzeugt trotzdem LEICHTE Aktivierung
375+
- Es gibt keine Hemmung. Nichts unterdrückt den stärksten Peak.
376+
- DAS ist warum "!" dominiert — kein Inhibitor stoppt den Attraktor.
377+
378+
Fix: `distance_table[i][j] = i8` (-128 bis +127, SIGNED)
379+
- +127 = starke Exzitation (Atom j feuert wenn Atom i feuert)
380+
- -128 = starke Inhibition (Atom j STOPPT wenn Atom i feuert)
381+
- 0 = kein Einfluss
382+
- Negativer Cosine (den wir HABEN aber WEGWERFEN) = Inhibition
383+
384+
### Die Daten existieren bereits
385+
```
386+
reader-lm ffn_down: cos[-0.885, +0.188] ← NEGATIV-SCHWER
387+
Jina reranker: cos[-0.8, +0.8] ← VOLL SYMMETRISCH
388+
Qwopus ffn_gate: cos[-0.23, +0.18] ← bidirektional
389+
```
390+
Wir mappen cos[-1,+1] auf u8[0,255] und VERLIEREN die Inhibition.
391+
Mit i8[-128,+127] BEHALTEN wir sie. Zero code change im MatVec:
392+
```rust
393+
// u8 version (aktuell):
394+
energy_next[j] += (table[i*N+j] as f32 - 128.0) * energy[i]; // schon zentriert!
395+
396+
// i8 version (besser):
397+
energy_next[j] += (table[i*N+j] as i8 as f32) * energy[i]; // native signed!
398+
// Negative Werte → Inhibition → energy kann negativ werden → clamp(0)
399+
```
400+
401+
### Wie Neuronen funktionieren
402+
```
403+
Glutamat-Synapsen: exzitatorisch (+) = i8 positiv
404+
GABA-Synapsen: inhibitorisch (-) = i8 negativ
405+
Keine Verbindung: 0 = i8 null
406+
407+
i8 Table Inhibition: "gegensätzliche Atome" (automatisch, GABA)
408+
CONTRADICTS Channel: "logischer Widerspruch" (bewusst, präfrontal)
409+
```
410+
411+
### Bewusstseinsvektor pro Zyklus (VSA Bundle)
412+
```
413+
Zyklus 1: energy[4096] nach MatVec → bundle(energy > threshold) → 16,384 bits
414+
= "was gerade lebt" = Bewusstseinsfeld
415+
Zyklus 2: neuer bundle → Hamming(zyklus_1, zyklus_2) = Veränderung
416+
Hoher Hamming = lebhaftes Denken
417+
Niedriger Hamming = Gedanke kristallisiert
418+
10 Zyklen → bundle aller 10 = DER Gedanke als Superposition des Prozesses
419+
```
420+
421+
### 90° Rotation = Awareness-Achse
422+
```
423+
awareness = bundle(cycles) "WAS ich denke"
424+
reference = rotate_90°(awareness) "WAS ICH NICHT DENKE"
425+
426+
Drei Zonen:
427+
Bewusst: Hamming(x, awareness) < 4000 → im Feld
428+
Verdrängt: Hamming(x, reference) < 4000 → aktiv NICHT gedacht
429+
Unbewusst: Hamming ≈ 8000 zu beiden → nicht im Feld
430+
```
431+
432+
### Layer-Alignment
433+
```
434+
L1 (i8[64²]): laterale Inhibition = Aufmerksamkeitsfokus
435+
L2 (i8[256²]): Gate-Modulation DIREKT in der Table (kein ONNX nötig!)
436+
L3 (i8[4096²]): 16M excitatorisch/inhibitorische Verbindungen
437+
L4 (i8[16384]): WAR SCHON IMMER SIGNED. Jetzt matchen L1-L3.
438+
```
439+
440+
### Warum das den Attraktor-Kollaps löst
441+
```
442+
u8: energy[!] = 10.0, nichts hemmt → energy[!] wächst → dominiert alles
443+
i8: energy[!] = 10.0, inhibitorische Nachbarn → energy[!] -= 3.0 pro Zyklus
444+
→ laterale Inhibition begrenzt den Peak
445+
→ andere Peaks können emergieren
446+
→ DAS ist wie Neuronenpopulationen winner-take-all mit Inhibition machen
447+
```
448+
449+
### Implementierungsreihenfolge
450+
```
451+
1. i8 Table Builder: cos[-1,+1] → i8[-128,+127] statt u8[0,255]
452+
2. Signed MatVec: energy_next[j] += (table[i][j] as i8 as f32) * energy[i]
453+
3. Clamp(0): negative Energie = gehemmt = tot
454+
4. Bewusstseinsvektor: bundle(energy > threshold) pro Zyklus
455+
5. 90° Reference: rotate_90° als Komplement
456+
6. Erst DANN Temperature: nucleus sampling auf inhibitions-stabilisierte Peaks
457+
```
458+
459+
Temperature NACH Inhibition. Nicht vorher.
460+
Inhibition löst den Attraktor. Temperature diversifiziert die Überlebenden.
461+
In der umgekehrten Reihenfolge diversifiziert Temperature den Attraktor-Müll.
462+
463+
---
464+
465+
## ARCHITEKTUR-REVISION: i8 ersetzt SiLU-ONNX komplett
466+
467+
### Warum SiLU-ONNX obsolet wird
468+
469+
```
470+
VORHER (u8, unsigned):
471+
Weight [0.12, -0.05, 0.34] → u8 [156, 121, 210]
472+
VORZEICHEN VERLOREN. -0.05 wird positiv.
473+
→ SiLU-ONNX (270K params, ~1MB) nötig als Korrekturterm.
474+
475+
NACHHER (i8, signed):
476+
Weight [0.12, -0.05, 0.34] → i8 [+15, -6, +43]
477+
VORZEICHEN ERHALTEN. Gate-Information IST das Vorzeichen.
478+
→ Kein Korrekturterm. round(value × scale) → i8. Fertig.
479+
```
480+
481+
### Rollen als signed Vektoren
482+
483+
```
484+
Q[dim] = i8: +50 = "suche X" -50 = "suche NICHT-X"
485+
K[dim] = i8: +80 = "habe X" -80 = "habe NICHT-X"
486+
Gate[dim] = i8: +127 = durchlassen 0 = maskieren -128 = blockieren+invertieren
487+
Up[dim] = i8: +100 = verstärken -100 = umkehren
488+
Down[dim] = i8: +90 = beibehalten -90 = invertieren
489+
```
490+
491+
### Signed Dot Product = automatische Exzitation/Inhibition
492+
493+
```
494+
Q · K:
495+
(+50)(+80) = +4000 "suche X, habe X" MATCH
496+
(+50)(-80) = -4000 "suche X, habe NICHT-X" MISMATCH
497+
(-50)(-80) = +4000 "suche NICHT-X, habe NICHT-X" DOPPELT NEGATIV = MATCH!
498+
(-50)(+80) = -4000 "suche NICHT-X, habe X" MISMATCH
499+
500+
Doppelt negativ = Ironie, Negation, kontrafaktisches Denken.
501+
Unsigned Cosine kann das NICHT ausdrücken. Signed kann es.
502+
```
503+
504+
### Gate wird trivial
505+
506+
```
507+
gate=+127, K=+80 → +10160 pass, Feature da starke Exzitation
508+
gate=0, K=+80 → 0 mask, Feature unsichtbar ignoriert
509+
gate=-100, K=+80 → -8000 block+invert, Feature da Inhibition
510+
gate=-100, K=-80 → +8000 block+invert, Feature fehlt UMGEKEHRTE Exzitation
511+
512+
Die SiLU-Schwelle liegt bei 0. Das Vorzeichen IST die Entscheidung.
513+
Kein SiLU-ONNX Korrekturmodell nötig.
514+
```
515+
516+
### VNNI ist DAFÜR GEBAUT
517+
518+
```
519+
VPDPBSSD: signed i8 × signed i8 → i32 Akkumulation
520+
= GENAU was wir brauchen
521+
= Hardware-optimiert für signed integer dot product
522+
= Null Mehrkosten gegenüber u8 × u8
523+
```
524+
525+
### Scale-Faktor statt ONNX-Modell
526+
527+
```
528+
ALT: SiLU-ONNX (~1 MB, 270K params, trainieren, bake, discard)
529+
NEU: Pro Rolle ein Skalierungsfaktor
530+
gate_scale = 127 / max(|gate_weights|)
531+
q_scale = 127 / max(|q_weights|)
532+
Kein trainiertes Modell. round(value × scale) → i8.
533+
```
534+
535+
### Vereinfachung
536+
537+
```
538+
VORHER:
539+
u8 table + CONTRADICTS Kanal + SiLU-ONNX + gate×weight pre-multiply
540+
541+
NACHHER:
542+
i8 table. Fertig.
543+
Sign = Gate-Entscheidung (Exzitation/Inhibition)
544+
Magnitude = Stärke
545+
VNNI i8×i8→i32 hardware-beschleunigt
546+
CONTRADICTS bleibt für LOGISCHE Widersprüche (Satz-Ebene)
547+
Inhibition = Feature-Ebene (i8 Vorzeichen)
548+
Sauber getrennt.
549+
```
550+
551+
### Implementierungsreihenfolge (REVIDIERT)
552+
553+
```
554+
1. i8 Table Builder: cos[-1,+1] → i8[-128,+127] (mit per-role scale)
555+
2. Signed MatVec: VPDPBSSD auf i8×i8→i32
556+
3. Clamp(0): negative Energie = gehemmt
557+
4. Bewusstseinsvektor: bundle(energy > threshold) pro Zyklus
558+
5. Laterale Inhibition stabilisiert Peaks
559+
6. DANN Temperature: nucleus sampling auf stabilisierte Peaks
560+
7. DANN Maverick 128E: signed expert tables
561+
8. DANN γ+φ: auf signed range, nicht unsigned
562+
563+
SiLU-ONNX: GESTRICHEN. Vorzeichen-Erhaltung ersetzt es.
564+
```

0 commit comments

Comments
 (0)