Ein strukturierter Lernpfad — von den Fundamenten bis zu deinem Framework über ExecuTorch / TFLM auf der ECU.
Pfeiltasten / Space: weiter · O: Übersicht · Strg+Klick auf Karte: Region ansteuern
Was du schon angefangen hast — und was fehlt, um „Inference" zu verstehen.
Du hast 6 Datensätze (qm, preis) und willst eine Formel preis = w·qm + b.
| qm | 60 | 75 | 90 | 110 | 130 | 150 |
|---|---|---|---|---|---|---|
| preis (Tsd€) | 180 | 225 | 270 | 330 | 390 | 450 |
Auge: pro +1 qm steigt der Preis ~3 Tsd€ → w≈3, b≈0. Das ist lineare Regression. „Lernen" = die beiden Zahlen w,b finden.
Lineare Regression: 1 Formel. Ein neuronalales Netz = viele solcher Rechnungen hintereinander geschaltet.
// Eine „Neuron"-Berechnung (vereinfacht)
z = w0*x0 + w1*x1 + ... + wn*xn + b // gewichtete Summe
a = activation(z) // z.B. ReLU: max(0, z)
// hunderte/tausende davon, in Schichten — das ist das Modell
Jede Kante = eine Gewichtszahl w. Beim Inference fließen die Zahlen von links nach rechts.
Fehlerfunktion E(w) ist wie ein Tal. Der Gradient zeigt die steilste Abwärtsrichtung.
Gradient Descent: in kleinen Schritten den Hang runter — das ist das „Lernen".
Inference braucht keinen Gradient — die Parameter sind dann schon fest.
Annahme: preis = w·qm, Start w=1, ein Punkt (qm=100, preis=300)
1) Vorhersage: y^ = 1·100 = 100 (zu niedrig)
2) Fehler: E = (300-100)² = 40000
3) Gradient: dE/dw = 2·(100-300)·100 = -40000
4) Schritt: w = w - lr·gradient = 1 - 0.00001·(-40000) = 1.4
5) nächster Durchlauf … w kriecht gegen 3
Das passiert millionenfach über alle Datenpunkte — deshalb braucht Training GPU/Zeit, Inference nicht.
| Begriff | Bedeutung (kurz) |
|---|---|
| Modell | Gelernte Parameter + Architektur (die „Software"). |
| Training | Parameter bestimmen (offline, GPU, groß). |
| Inference | Modell auf Eingabe anwenden (online, ECU, klein). |
| Gewichte (weights) | Die gelernten Zahlen w — das eigentliche „Programm". |
| Tensor | Mehrdimensionales Zahlen-Gitter (Skalar/Vektor/Matrix/…). |
| Epoch / Batch | Durchlauf über (Teil der) Daten beim Training. |
Wie ist ein Modell von innen gebaut? Und vor allem: was ist ein „Transformer"?
Jeder Kasten nimmt einen Tensor und gibt einen (oft anderen) Tensor zurück.
Volle Matrix-Multiplikation. Jede Eingabe geht auf jede Ausgabe. Das „Standard-Neuron".
Ein kleiner Filter wandert über ein Bild/Signal. Findet lokale Muster (Kanten, Formen).
Verbindet weit entfernte Stellen im Input. Das Herzstück des Transformers (gleich mehr).
Sequenz-Schleife mit Gedächtnis. Vorgänger des Transformers.
Skaliert Werte, hält Training stabil.
Nicht-linear (ReLU, GELU) — macht das Netz ausdrücklich.
Der Kernel (3×3) wird über das Bild geschoben; an jeder Position entsteht 1 Ausgabewert. Das ist ein „Operator" (siehe Region E/H).
„Layer" ist die Modell-Sicht, „Operator" die Ausführungs-Sicht. Dein AI Layer muss beide kennen, um Modelle abstrahiert anzusprechen.
Du hast gesagt: davon habe ich gar nichts verstanden. Wir bauen es von null auf, mit Beispielen.
Betrachte: „Der Hund beißt den Mann, weil er hungrig ist." — Wer ist „er"? Der Hund. Ein Modell muss Bezüge zwischen weit auseinanderliegenden Wörtern herstellen.
Self-Attention baut für jedes Wort eine Gewichtung über alle anderen Wörter. „er" gewichtet „Hund" hoch, „Mann" niedrig.
Bevor gerechnet wird, wird jedes Token in einen Vektor (Liste von Zahlen) übersetzt — das „Embedding".
"Hund" → [0.21, -0.84, 0.05, 0.93, ...] (z.B. 512 Zahlen)
"Katze" → [0.19, -0.80, 0.07, 0.91, ...] (ähnlich! → Modell „merkt" Verwandtschaft)
"Auto" → [-0.6, 0.30, -0.2, 0.10, ...] (weit weg)
Jedes Wort bekommt drei Vektoren. Die Bibliotheks-Analogie:
„Wonach suche ich?" — die Frage des Wortes.
„Worüber ich Auskunft gebe" — das Schlagwort eines Wortes.
„Was ich beitrage" — der eigentliche Inhalt.
Attention = für jedes Wort: vergleiche meine Query mit allen Keys → Gewichte → gewichtete Summe der Values. Passt Query zu Key, ist das Gewicht hoch.
Attention(Q, K, V) = softmax( Q · Kᵀ / √d ) · V
└─── Scores ───┘ └─ neue Werte ─┘
Q·Kᵀ : wie gut passt jedes Wort zu jedem anderen (N×N Matrix)
/√d : Skalierung, damit es nicht explodiert
softmax: Gewichte summieren sich zu 1
·V : gewichteter Mix der Inhalte → kontext-abhängiger Vektor
Das Ergebnis: jeder Wort-Vektor ist jetzt „angereichert" mit Kontext aus den relevanten anderen Wörtern.
Self-Attention sieht keine Reihenfolge (alle Wörter sind „gleichzeitig" da). Deshalb wird die Position als kleiner Vektor addiert.
„Der Hund beißt den Mann" ≠ „Den Mann beißt der Hund" — die Positionssignale machen den Unterschied für das Modell sichtbar.
Statt einer Attention berechnet der Transformer mehrere parallel („Heads"). Jeder Kopf achtet auf etwas anderes:
Kopf 1: grammatikalische Bezüge
Kopf 2: Bedeutung/Subject
Kopf 3: zeitliche Reihenfolge
Die Ergebnisse werden konkateniert — das ist, warum Transformer so reichhaltig „verstehen".
Solche Blöcke werden gestapelt (z.B. 6–128 mal). „GPT" = nur Decoder-Stapel, „BERT" = nur Encoder-Stapel.
Die Q·Kᵀ-Matrix ist N×N bei Sequenzlänge N. Der Rechenaufwand wächst quadratisch mit der Länge.
| Format | Wofür |
|---|---|
| PyTorch .pt / .pth | Training-Framework (Python). |
| ONNX | Framework-neutraler Zwischen-Standard (dein AI Layer sollte hier ansetzen). |
| .pte (ExecuTorch) | ExecuTorch-Export für embedded/inference. |
| .tflite (TFLite) | TensorFlow-Lite-Format, inkl. TFLM für MCUs. |
⬇ nächste Region: worauf läuft das eigentlich — Hardware & Beschleuniger.
Wo wird gerechnet? Und was heißt SIMD, CUDA, NPU für deine ECU?
Alles, was du kennst. SIMD = ein Befehl rechnet an vielen Zahlen parallel (AVX, NEON).
Massiv parallel. CUDA = NVIDIAs Plattform. Wichtig fürs Training / Server.
Spezialchip nur fürs Inference (Int8, MatMul). Effizient, wenig Watt.
Deine ECU (ARM) hat NEON-SIMD. Quantisierung (int8) nutzt das besonders gut — 16 Int8-Werte pro 128-bit-Register.
Maßstab = „Inferenz-Durchsatz pro Watt" (skizzenhaft). Auf der ECU zählt Effizienz, nicht Rohleistung.
Trainings-Welt ECU / Embedded
RAM GB–TB KB–wenige MB
Rechenleistung GPU-Cluster MHz-Arm, evtl. NPU
Energie Netzstecker ~ Watt, thermal limit
Latenz/Sicherheit best-effort Echtzeit, Funktionssicherheit
Die Laufzeit, die das Modell tatsächlich auf der Hardware ausführt. Kern deines Projekts.
| Engine | Eckdaten |
|---|---|
| ExecuTorch | PyTorch-Ökosystem, .pte-Format, portabel (C++), Backends für CPU/NPU/DSP, gut für On-Device/Edge. |
| TFLM (TFLite Micro) | TensorFlow-Lite-for-Microcontrollers: läuft auf MCUs mit wenigen KB RAM, .tflite, minimale Runtime. |
| ONNX Runtime | Neutraler Standard, viele Execution-Providers; gut als gemeinsame Zwischenschicht. |
Modell sagt: Conv2D(input 32x32x3, kernel 3x3x3x16, stride 1)
Engine wählt Backend: CPU-NEON
→ ruft int8-Conv-Kernel auf
→ Kernel nutzt SIMD: 16 Kanäle parallel
→ Ergebnis 30x30x16 in SRAM, nicht DRAM (schneller)
Dein AI Layer: ruft nur infer(conv_layer, input) — egal ob NEON oder NPU.
Die Werkzeuge, um ein zu großes Modell auf die ECU zu quetschen — ohne dass es versagt.
Ein Wert wie 0.3 wird auf den nächsten int8-Bucket abgebildet. Man verliert Auflösung, gewinnt aber 4× Speicher und viel Speed.
q = round( r / scale ) + zero_point // reelle Zahl → int8
r ≈ (q - zero_point) * scale // int8 → reelle Zahl (zur Anzeige)
// Beispiel: range [-1,1], int8 = [-128,127]
// scale = 2/255 ≈ 0.00784, zero_point = 0
// r=0.3 → q = round(0.3/0.00784) = 38
// q=38 → r ≈ 38*0.00784 = 0.298 (Fehler 0.002 — vernachlässigbar)
Unwichtige Gewichte auf 0 setzen → kleinere, spärlichere Modelle.
Kleines Modell lernt von großem „Lehrer".
Ops fusionieren (Conv+BN+ReLU → eine Op), Konstanten falten.
Du kannst nicht alles gleichzeitig maximieren. Dein AI Layer definiert, welcher Punkt „qualifiziert" ist.
Wenn Inference zentral/lokal auf einem Server läuft statt auf der ECU.
| Begriff | Bedeutung |
|---|---|
| Model-Server | Prozess, der Modelle lädt & per API bereitstellt (z.B. Triton, TorchServe, vLLM). |
| API / Endpoint | Vertrag: welche Eingabe → welche Ausgabe (JSON, gRPC). |
| Batching | Mehrere Anfragen zusammen rechnen → höherer Durchsatz. |
| Versioning | Welche Modell-Version läuft gerade? (wichtig fürs Rollback). |
| Kriterium | On-Device (ECU) | Server (zentral) |
|---|---|---|
| Latenz | sehr niedrig, lokal | Netz-Roundtrip |
| Daten | bleiben lokal (DSGVO-freundlich) | verlassen das Fahrzeug |
| Modellgröße | klein (int8, gepruned) | groß möglich |
| Beispiel | Sensor-Fusion, Not-Aus | Langzeit-Auswertung, LLM-Copilot |
Dein AI Layer definiert die Grenze — manches on-device, manches ausgelagert.
Prompts, MCP, Skills, Agenten — der Teil, der heute überall auftaucht.
System: Du bist ein Diagnose-Assistent für ein Steuergerät.
Antworte kurz, nur mit JSON.
User: Der Sensor liefert 0x7F, was bedeutet das?
Assistant:{ "code": "0x7F", "bedeutung": "Dienst nicht unterstützt",
"aktion": "Prüfe UDS-Session-State" }
Der Prompt steuert das Verhalten — kein Code-Compile, sondern Sprache. Genau hier setzt MCP an.
Der Text, den du dem Modell gibst („System"- + „User"-Anweisung).
Large Language Model = großer Transformer (Region B), trainiert auf Text.
Ein LLM, das Werkzeuge nutzt und Schritte plant, statt nur zu antworten.
Skills = vorgefertigte Fähigkeits-Pakete für einen Agenten (z.B. „Suche im Repo").
MCP = Model Context Protocol. Ein offener Standard, wie ein LLM/Agent mit externen Systemen spricht.
1) User: „Warum ist die Zykluszeit hoch?"
2) Agent denkt → braucht Daten → ruft Tool „Lese-Metrik(zykluszeit)"
3) MCP-Server liefert Wert (z.B. 18 ms statt 8 ms)
4) Agent: „Sensor X ist Flaschenhals" → ruft Tool „Öffne-Ticket"
5) Antwort an User + Ticket erstellt
→ der Agent hat selbstständig geplant und gehandelt
Alle Regionen treffen sich hier. Der AI Layer ist die Abstraktion über die Inference-Engines.
┌───────────────── AI Layer (dein Framework) ─────────────────┐
Anwendung│ gemeinsame Schnittstelle · Governance · Tooling · Integration│
└───────┬───────────────────┬───────────────────┬────────────┘
Backend: Backend: Backend:
ExecuTorch TFLM (MCU) ONNX Runtime / Server
│ │ │
── ECU (NPU/CPU) ── ── MCU (KB RAM) ── ── zentral / GPU ──
infer(model, input) — egal welche Engine/Engine-HW unten sitzt. Dazu: Modell-Governance (welche Version, qualifiziert?), Tooling (Export/Quantisierung), Integration ins ECU-RT.| Region | Rolle im AI Layer |
|---|---|
| B Modell | Gemeinsames Format (ONNX) als Vertrag nach oben. |
| C Hardware | Backends abstrahieren CPU/NPU/MCU-Grenzen. |
| D Engine | ExecuTorch/TFLM als austauschbare Backends. |
| E Quant | Pipeline: fp32 → int8, inkl. Genauigkeits-Gate. |
| F Serving | Grenze on-device ↔ zentral definieren. |
| G Agentic | Optional: Diagnose/Tooling via MCP-Schnittstellen. |
InferenceBackend-Interface-Skizze in C++.Tipp: Dieses Deck ist eine HTML-Datei. Einfach im Browser öffnen — offline, keine Internetverbindung nötig.