Strix Halo AI Benchmarks
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

Zurueck ins Dashboard, oder die Chronik unter /news.