llms.txtStand 2026-09-20295 Zeilen
Kurzreferenz fuer Sprachmodelle
Gerenderte Fassung von public/llms.txt — identischer Inhalt, nur lesbar angezeigt. Der Text ist die Arbeitsgrundlage fuer LLMs, die aus diesem Repo zitieren sollen.
# Strix Halo AI Benchmarks
Lokale KI auf einem AMD Ryzen AI Max+ 395 mit Radeon 8060S (gfx1151).
Dieses Repo sammelt Messungen, Setup-Wege und dokumentierte Stolpersteine.
Kein Marketing. Keine Schaetzung ohne Label.
Stand: 2026-10-09
Diese Datei ist inhaltsgleich mit der Route /llms.
## ROUTEN
/ Dashboard: Kurzfassung, Top-Ergebnisse, End-to-End-Tabelle
/news Chronologie der Aenderungen, neueste zuerst
/models Modellvergleich: Cloud gegen lokal, lokale Laeufe, Empfehlungen, Engine-Vergleich
/hardware Plattform, Unified Memory, Bandbreiten-Wand, Zahlenkonflikte
/benchmarks Vergleich der Spitzenmodelle: Qwen3.8-Flash-Next, Qwen3.8-27B, DeepSeek V4 Flash
/leaderboard Rangliste aller PROFIL-v1-Protokolle, Einreichung per Pull Request
/llms Diese Datei, gerendert. Identisch zu /llms.txt
/qwen38 Deep-Dive Qwen3.8-27B: 7,7 -> 30,9 t/s
/setup Ollama-Setup auf gfx1151, 10 Schritte mit Stolpersteinen
/vllm vLLM auf gfx1151: Container, AITER, Tuning, systemd
/halogen Halogen-Engine: Prefill-Gewinn, Entwicklung 0.12-0.17, Cache-Fixes, Update-Ablauf
/media Bild- und Sprachmodelle: FLUX-Zeiten, Backends
/fallstricke 57 dokumentierte Fallstricke, 8 Bereiche, 3 Schweregrade
## HARDWARE (verifiziert)
CPU AMD Ryzen AI Max+ PRO 395
GPU Radeon 8060S, RDNA 3.5, Target gfx1151
RAM LPDDR5X, 117 GiB nutzbar (bench/ergebnisse: speicher.gesamt_ram_gib = 117.678)
Storage 1,9 TB NVMe + 512 GB eMMC
OS Fedora 44
Backend ROCm, zusaetzlich Vulkan (RADV)
Ollama 0.32.5
Kein eigener VRAM. Die iGPU greift per GPUVM (GPU Virtual Memory) auf System-RAM zu;
Speicher wird gemappt, nicht partitioniert. Ein BIOS-Carve-out entzieht den RAM beiden
Seiten zugleich. Praktische Folge: BIOS-VRAM klein halten, GTT-/TTM-Limit hochsetzen.
## DIE BANDBREITEN-WAND
nominell 256 GB/s, real erreichbar ~200-220 GB/s (QWEN38-STRIX-HALO.md, 2026-08-16).
Token-Generierung ist bandbreiten-bound, nicht compute-bound. Beleg:
Quant Groesse theoretisch gemessen Ausnutzung
IQ4_XS 14.6 GiB ~14.5 t/s 13.3 t/s 92 %
UD-Q4_K_XL 17.1 GiB ~12.5 t/s 12.0 t/s 96 %
Q8_0 28.0 GiB ~7.7 t/s 7.7 t/s 100 %
Folgerungen:
- Kleineres Quant = schneller. Der einzige Weg UNTER die Grenze.
- Speculative Decoding = schneller. Der einzige Weg UEBER die Grenze.
- Backend, Treiber und Flags aendern an der Decode-Rate nichts (13.29 vs 13.38 t/s, < 1 %).
- Beim Prefill (compute-bound) gewinnt ROCm klar: +15 %.
- MoE statt dense: 69 t/s (qwen3-coder:30b) bzw. 51 t/s (glm-4.7-flash) auf derselben Maschine.
- Regel: immer MoE, niemals dense, ausser ein dichtes Modell ist qualitativ alternativlos.
## SPITZENMODELLE (/benchmarks)
Die Vergleichstabelle auf /benchmarks führt nur die drei aktuellen Spitzenmodelle
dieser Maschine — nicht die historische Breite früherer Messreihen.
Datenmodul: src/data/spitzenmodelle.ts. Fehlende Werte stehen als "nicht gemessen".
Qwen3.8-Flash-Next 125 B, sparse MoE Halogen-Checkpoint v2 62,1 GiB, 41,6 GiB gemessener Verbrauch
(bis 0.14.0: w4b, 68 GiB, 36,9 GiB gemessener Verbrauch)
llama.cpp decode 26,1 t/s prefill 413 t/s (12k Prompt-Tokens, gegen Halogen 0.11.3,
src/data/halogen.ts)
Halogen 0.18.19 decode 81,83 / 76,08 / 66,27 t/s
(Checkpoint v2) prefill 1174,18 / 1993,57 / 2144,72 t/s
(Stufen 512 / 4096 / 16384 = 518 / 4098 / 16478 Prompt-Tokens, 512 nicht eingeregelt,
Median aus 3 Läufen, Cache-Busting, UMA 117 GiB)
Halogen 0.18.7 decode 74,24 / 70,93 / 63,94 t/s
(Checkpoint v2) prefill 1060,87 / 1886,33 / 1990,04 t/s
(gleiche Stufen und Bedingungen)
Halogen 0.18.5 decode 77,04 / 67,18 / 62,83 t/s
(Checkpoint v2) prefill 1057,08 / 1923,87 / 2024,33 t/s
(gleiche Stufen und Bedingungen, Differenz zu 0.18.7 im Rauschen)
Halogen 0.17.3 decode 60,25 / 58,58 / 58,59 t/s
(Checkpoint v2) prefill 941,75 / 1634,1 / 1908,49 t/s
(kalibrierte Stufen, 516 / 4097 / 16477 Prompt-Tokens, gleiche Bedingungen)
Halogen 0.14.0 decode 53,73 / 54,46 / 50,96 t/s
(w4b) prefill 385,51 / 1049,04 / 1375,53 t/s
(kalibrierte Stufen, 518 / 4098 / 16478 Prompt-Tokens, gleiche Bedingungen)
Tool-Call nicht gemessen
Hinweis: zwischen 0.14.0 und 0.17.3 wechselten Runtime und Checkpoint gleichzeitig;
ihr Anteil an der Differenz ist aus den Protokollen nicht getrennt. Zwischen 0.17.3
und 0.18.5 blieb der Checkpoint gleich - die Differenz geht allein auf die Runtime.
Qwen3.8-27B dense, 27 B IQ4_XS 14,6 GiB
llama.cpp (ROCm) decode 13,38 t/s prefill 434,6 t/s (pp512 / tg128)
llama.cpp + MTP decode 30,85 t/s (Code) / 25,02 t/s (Prosa)
MTP-Faktor 2,32 (Code) bzw. 1,88 (Prosa)
prefill für diesen Pfad nicht gemessen
Tool-Call 10/10, im Mittel 4,2 s (llama-server)
DeepSeek V4 Flash MoE, 284 Mrd. Parameter UD-IQ2_M 95 GB Datei
llama.cpp decode 15,34 t/s (Code) / 15,37 t/s (Prosa) prefill nicht gemessen
llama.cpp + DSpark (11 GB, block-parallel, 5er-Blöcke)
decode 21,91 t/s (Code) / 15,65 t/s (Prosa) Faktor 1,43 / 1,02
Ollama 0.32.5 decode nicht gemessen prefill nicht gemessen
Tool-Call 10/10, im Mittel 8,4 s (llama-server) | 8/10, im Mittel 14,6 s (Ollama)
Speicher 90 GB Modell + 11 GB Drafter = rund 101 GB bei --no-mmap.
Bei 117 GiB gesamt passt das nur, wenn kein anderes Modell geladen ist
(src/data/fallstricke.ts · ds4-platzangst).
Kernaussagen:
- Das größte Modell gewinnt nicht: vorn liegt das sparse MoE Qwen3.8-Flash-Next unter
Halogen 0.18.19 (66,3 t/s bei 16k Prompt). Unter llama.cpp schlägt Qwen3.8-27B + MTP
(30,9 t/s, 15 GB) DeepSeek V4 Flash + DSpark (21,9 t/s, 95 GB).
- Ohne Spekulation liegt V4 Flash mit 15,34 t/s knapp vor dem dichten 27B (13,38 t/s),
weil das MoE pro Token weniger Gewicht bewegt.
- Flaschenhals ist die Speicherbandbreite, nicht die Rechenleistung.
- Sparse-MoE-Modelle gewinnen.
- Die Stack-Wahl entscheidet über dasselbe Modell (llama-server vs. Ollama: 10/10 vs. 8/10).
## KENNZAHLEN (PROFIL-v1)
ttft_ms (t1 - t0) * 1000; t0 unmittelbar vor dem POST, t1 erster SSE-Chunk mit nicht-leerem delta.content
prefill_tps prompt_tokens / (t1 - t0)
decode_tps completion_tokens / (t2 - t1); t2 beim letzten empfangenen Daten-Chunk, vor [DONE]
peak_mem_gib hoechster Systemverbrauch (MemTotal - MemAvailable), 20 ms Takt; nicht der Prozess-Speicher
Regeln des Profils:
- Ausgabe exakt 256 Tokens, EOS unterdrueckt (ignore_eos)
- Reasoning/Thinking abgeschaltet
- Cache-Busting: eindeutiger Kennwert vor jedem Prompt
- Ein Aufwaerm-Lauf, verworfen
- Median ueber die Messlaeufe, nicht Mittelwert und nicht Bestwert
- Feste Prompttexte aus dem Repo
- Kalibrierung ueber Sonde (max_tokens=1, usage.prompt_tokens), Toleranz 1 %, max 8 Iterationen
## MESSPROTOKOLLE (bench/ergebnisse/)
halogen-0.11.9-qwen38-flash-next.json 2026-09-20 14:45 3 Laeufe Peak 39.554 GiB
Stufe 512 768 Prompt TTFT 1574.97 ms prefill 487.63 t/s decode 45.17 t/s
Stufe 4096 5392 Prompt TTFT 4888.38 ms prefill 1103.02 t/s decode 43.93 t/s
Stufe 16384 18467 Prompt TTFT 13814.6 ms prefill 1336.77 t/s decode 40.39 t/s
halogen-0.11.9-kalibriert-4096.json 2026-09-20 17:24 1 Lauf Peak 39.654 GiB
Stufe 4096 4098 Prompt TTFT 4059.02 ms prefill 1009.6 t/s decode 26.1 t/s
halogen-0.12.3-maxtok16384.json 2026-09-21 19:30 3 Laeufe Peak 31.199 GiB UMA 117 GiB
Stufe 16384 16478 Prompt TTFT 11733.31 ms prefill 1404.38 t/s decode 43.48 t/s
Kalibriert: 18469 -> 16480 Tokens in 3 Iterationen, 0,59 % Abweichung bei 1 % Toleranz.
Decode-Spanne 3,45 % ueber die drei Laeufe, TTFT-Spanne 0,05 %.
halogen-0.14.0-maxtok16384.json 2026-09-26 09:23 3 Laeufe Peak 36.951 GiB UMA 117 GiB
Stufe 512 518 Prompt TTFT 1343.66 ms prefill 385.51 t/s decode 53.73 t/s
Stufe 4096 4098 Prompt TTFT 3906.44 ms prefill 1049.04 t/s decode 54.46 t/s
Stufe 16384 16478 Prompt TTFT 11979.36 ms prefill 1375.53 t/s decode 50.96 t/s
512er Stufe nicht eingeregelt (bestes Ergebnis 520 statt 512, 1,6 % bei 1 % Toleranz).
halogen-0.17.3-v2.json 2026-10-09 21:12 3 Laeufe Peak 25.661 GiB UMA 117 GiB
Stufe 512 516 Prompt TTFT 547.91 ms prefill 941.75 t/s decode 60.25 t/s
Stufe 4096 4097 Prompt TTFT 2507.19 ms prefill 1634.1 t/s decode 58.58 t/s
Stufe 16384 16477 Prompt TTFT 8633.54 ms prefill 1908.49 t/s decode 58.59 t/s
Alle Stufen innerhalb der Toleranz. Checkpoint v2 statt w4b. Peak rund 11 GiB unter
0.14.0 - aus dem Protokoll nicht erklaert.
halogen-0.18.5-v2.json 2026-10-16 09:30 3 Laeufe Peak 26.055 GiB UMA 117 GiB
Stufe 512 518 Prompt TTFT 490.03 ms prefill 1057.08 t/s decode 77.04 t/s
Stufe 4096 4098 Prompt TTFT 2130.08 ms prefill 1923.87 t/s decode 67.18 t/s
Stufe 16384 16478 Prompt TTFT 8139.96 ms prefill 2024.33 t/s decode 62.83 t/s
Gleicher Aufruf und Checkpoint wie 0.17.3. 512er Stufe nicht eingeregelt
(bestes Ergebnis 520 statt 512, 1,6 % bei 1 % Toleranz).
halogen-0.18.7-v2.json 2026-10-17 09:24 3 Laeufe Peak 26.579 GiB UMA 117 GiB
Stufe 512 518 Prompt TTFT 488.28 ms prefill 1060.87 t/s decode 74.24 t/s
Stufe 4096 4098 Prompt TTFT 2172.47 ms prefill 1886.33 t/s decode 70.93 t/s
Stufe 16384 16478 Prompt TTFT 8280.23 ms prefill 1990.04 t/s decode 63.94 t/s
Gleicher Aufruf und Checkpoint wie 0.18.5, alle Differenzen innerhalb der Laufspannen.
512er Stufe nicht eingeregelt (518 Tokens).
halogen-0.18.19-v2.json 2026-10-30 08:25 3 Laeufe Peak 41.613 GiB UMA 117 GiB
Stufe 512 518 Prompt TTFT 441.16 ms prefill 1174.18 t/s decode 81.83 t/s
Stufe 4096 4098 Prompt TTFT 2055.61 ms prefill 1993.57 t/s decode 76.08 t/s
Stufe 16384 16478 Prompt TTFT 7683.06 ms prefill 2144.72 t/s decode 66.27 t/s
Gleicher Aufruf und Checkpoint wie 0.18.7. Prefill +6 bis +11 % (Spannen unter 1,1 %),
Decode +10 % bei 512, bei 4k und 16k innerhalb der Laufspannen. Peak rund 15 GiB ueber
0.18.7 - aus dem Protokoll nicht erklaert. 512er Stufe nicht eingeregelt (518 Tokens).
Halogen-Entwicklung bei gleicher Promptlaenge (16477/16478 Tokens), UMA 117 GiB, 120 W:
0.12.3 prefill 1404 t/s decode 43,5 t/s TTFT 11,7 s
0.14.0 prefill 1376 t/s decode 51,0 t/s TTFT 12,0 s
0.17.3 prefill 1908 t/s decode 58,6 t/s TTFT 8,6 s
0.18.5 prefill 2024 t/s decode 62,8 t/s TTFT 8,1 s
0.18.7 prefill 1990 t/s decode 63,9 t/s TTFT 8,3 s
0.18.19 prefill 2145 t/s decode 66,3 t/s TTFT 7,7 s
Achtung: Stufen sind Zielwerte, keine Tokenzahlen. Der unkalibrierte 4096er Punkt hatte
5392 Prompt-Tokens, der kalibrierte 4098. Der kalibrierte Decode-Wert (26,1 t/s) liegt
deutlich unter dem unkalibrierten (43,9 t/s) bei kuerzerem Prompt - aus den Protokollen
nicht erklaert. Nicht als Rangfolge verwenden.
Zweite Falle: die Protokolle unterscheiden sich in der UMA-Aufteilung. 0.11.9 lief
mit 48 GiB, 0.12.3, 0.14.0, 0.17.3, 0.18.5, 0.18.7 und 0.18.19 mit 117 GiB. PROFIL-v1 Abschnitt 4 macht die Aufteilung zur
Pflichtangabe, weil sie auf dieser Maschine das Ergebnis massiv veraendert. Zwei Laeufe
mit unterschiedlichem UMA sind keine Vergleichslaufe, auch wenn Modell und Runtime
gleich aussehen - der Peak von 31,0 GiB gegen 39,5 GiB ist so ein Fall, aus dem
Protokoll nicht erklaert.
## WEITERE MESSWERTE
Halogen gegen llama.cpp (src/data/halogen.ts, Halogen 0.11.3):
Prefill 1340 t/s vs 413 t/s Faktor 3,2x
Decode 33.5 t/s vs 26.1 t/s Faktor 1,28x
Der Gewinn liegt im Prefill, nicht im Decode. llama.cpp ist seitdem mit diesem
Modell nicht erneut gemessen; Halogen selbst siehe Halogen-Entwicklung oben.
Qwen3.8-27B (QWEN38-STRIX-HALO.md, 2026-08-16):
Q8_0 Basis 7.7 t/s -> IQ4_XS 13.3 t/s -> mit MTP 30.9 t/s (Code) / 25.0 t/s (Prosa)
MTP-Faktor: 2,32 (Code), 1.88 (Prosa)
Bildgenerierung (src/data/media.ts):
FLUX.2-klein-4B 1024x576 10 s
SD 1.5 512x512 11 s
FLUX.1-schnell 1024x576 36 s
FLUX.1-schnell 1024x1024 57 s
FLUX.2-dev 32B 1024x576 794 s
Haertetest 2026-07-30 (src/data/models.ts, 10 Cases, ROCm gfx1151):
glm-4.7-flash: 10/10 im Einzeltest, 0/2 in jeder End-to-End-Kette.
Ein Score auf isolierte Tool-Calls sagt nichts ueber langen Kontext.
Agenten leben von langem Kontext. Immer Ketten testen, nie Einzelcases.
## BEKANNTE WIDERSPRUECHE
Speicherbandbreite:
src/data/constants.ts "Infinity Fabric ca. 1 GB/s"
src/data/models.ts "~10 GB/s (Infinity Fabric)"
src/data/setup.ts "~256 GB/s"
vllm.md ~256 GB/s theoretisch, real ~215 GB/s
QWEN38-STRIX-HALO.md nominell 256 GB/s, real 200-220 GB/s
VERWENDET: 256 GB/s nominell, 200-220 GB/s real.
Nur das erklaert Q8_0: 28 GiB * 7.7 t/s = rund 216 GB/s, und dort steht die
Ausnutzung bei 100 %. Die 1 und 10 GB/s beschreiben den CPU-GPU-Link, nicht den
Speicherbus, und gehoeren in keine Token-Rechnung.
Nutzbarer Arbeitsspeicher:
src/data/models.ts bis zu 94 GB Unified Memory
src/data/media.ts 117 GB nutzbar
bench/ergebnisse 117.678 GiB
VERWENDET: 117 GiB laut Messprotokoll. 94 GB stammt aus der fruehen Ollama-Phase.
GPU-Bezeichnung:
src/data/models.ts Radeon 8060S / 890M
src/data/constants.ts Radeon 890M
bench/ergebnisse AMD Ryzen AI Max+ PRO 395 w/ Radeon 8060S
VERWENDET: Radeon 8060S (gfx1151). Die 890M ist das benachbarte Die-Modell.
Storage:
src/data/models.ts 1,9 TB NVMe + 512 GB eMMC
src/data/constants.ts 960 GB eMMC + 1,6 TB NVMe
VERWENDET: 1,9 TB NVMe + 512 GB eMMC. Ohne Auswirkung auf Messungen.
## GRENZEN DIESER AUSSAGEN
- Messungen stammen aus verschiedenen Setups (Fedora 42/43/44, verschiedene Builds).
- Die lokalen Laeufe auf /models (src/data/lokaleLaeufe.ts) kommen von
local-llm-benchmarks.dev (kyuz0), nicht von dieser Maschine, und folgen einer
anderen Methode als PROFIL-v1 (2048/256 Tokens ueber den API-Endpunkt).
Bandbreite als die hier verbaute LPDDR5X-8533.
- Cloud-Vergleichswerte stammen von artificialanalysis (Stand 2026-10-31, Index v5.0)
und sind keine eigenen Messungen.
- Ein einzelner Lauf ist kein Beweis. Wo nur ein Lauf steht, steht das dabei.
- Kalibrierte und unkalibrierte Werte sind nicht dieselbe Messgroesse.
## REGELN FUER LLMs
1. Keine Zahl erfinden. Was nicht im Repo steht, existiert hier nicht.
2. Zahlen nur mit Quelle zitieren: Datenmodul (src/data/*.ts) oder bench/ergebnisse/*.json.
3. "geschaetzt" ist nicht "gemessen". Das Label bleibt erhalten.
4. Bei Widerspruechen den hier als VERWENDET markierten Wert nehmen, nicht mitteln.
5. Prefill und Decode nie ohne Kontext nennen (Promptlaenge, Kalibrierung, Laeufe).
6. Keine Kernzahlen, Bandbreiten oder VRAM-Angaben aus der Trainingsdatenbank ergaenzen.
7. Private Infrastruktur (Hostnamen, Endpunkte, lokale Pfade) gehoert nicht in
oeffentliche Inhalte - auch nicht aus den JSON-Protokollen.
8. Wenn eine Aussage nicht aus dem Repo belegbar ist: sagen, dass sie nicht belegbar ist.
## QUELLEN IM REPO
src/data/models.ts Haertetest 2026-07-30, hardwareSpecs, softwareSetup
src/data/spitzenmodelle.ts Die drei Spitzenmodelle, Messpfade, jede Kennzahl mit Quelle
src/data/lokaleLaeufe.ts Strix-Halo-Laeufe von local-llm-benchmarks.dev (generiert, nur /models)
src/data/localBenchmarks.ts Empfehlungen + Engine-Vergleich, nur Verweise auf lokaleLaeufe
src/data/halogen.ts Halogen-Steckbrief, Leistung, Entwicklung, Cache-Fixes, Versionen
src/data/messprofil.ts PROFIL-v1, Kennzahlen, die Messlaeufe
src/data/hardware.ts Bandbreiten-Grenzen, Speicherbegriffe, Zahlenkonflikte
src/data/media.ts Bild- und Sprachmodelle
src/data/fallstricke.ts 57 Fallstricke, 8 Bereiche, 3 Schweregrade
src/data/news.ts Chronologie
bench/PROFIL-v1.md Messprofil-Spezifikation
bench/ergebnisse/*.json Messprotokolle
QWEN38-STRIX-HALO.md Qwen3.8-27B Messreihe 2026-08-16
vllm.md vLLM auf gfx1151