File size: 13,369 Bytes
d27bcbc
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
ceb0659
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>KingJones — ROCmFP4 &amp; NVFP4 quant lab</title>
<meta name="description" content="ROCmFP4 quantized models for AMD Strix Halo (Ryzen AI Max+ 395, gfx1151) and NVFP4 for NVIDIA. Measured results, including the ones that did not work.">
<style>
  :root{
    --bg:#0d1117; --panel:#151b23; --line:#2a3441; --tx:#e6edf3; --dim:#9aa7b4;
    --accent:#ff8a3d; --good:#3fb950; --bad:#f85149; --link:#79c0ff;
  }
  @media (prefers-color-scheme: light){
    :root{ --bg:#ffffff; --panel:#f6f8fa; --line:#d8dee4; --tx:#1f2328;
           --dim:#59636e; --accent:#bc4c00; --good:#1a7f37; --bad:#cf222e; --link:#0969da; }
  }
  *{box-sizing:border-box}
  body{margin:0;background:var(--bg);color:var(--tx);
       font:16px/1.65 -apple-system,BlinkMacSystemFont,"Segoe UI",Inter,Helvetica,Arial,sans-serif}
  .wrap{max-width:920px;margin:0 auto;padding:56px 22px 90px}
  h1{font-size:2.6rem;line-height:1.1;margin:0 0 .4rem;letter-spacing:-.02em}
  h2{font-size:1.35rem;margin:3rem 0 .9rem;letter-spacing:-.01em;
     padding-bottom:.45rem;border-bottom:1px solid var(--line)}
  h3{font-size:1.02rem;margin:1.8rem 0 .5rem;color:var(--dim);
     text-transform:uppercase;letter-spacing:.08em}
  p{margin:0 0 1rem}
  a{color:var(--link);text-decoration:none}
  a:hover{text-decoration:underline}
  .lede{font-size:1.2rem;color:var(--dim);margin-bottom:1.6rem}
  .rule{color:var(--accent);font-weight:600}
  .stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(132px,1fr));
         gap:12px;margin:1.8rem 0 .5rem}
  .stat{background:var(--panel);border:1px solid var(--line);border-radius:10px;
        padding:14px 16px}
  .stat b{display:block;font-size:1.7rem;line-height:1.15;letter-spacing:-.02em}
  .stat span{font-size:.78rem;color:var(--dim);text-transform:uppercase;
             letter-spacing:.06em}
  .tablewrap{overflow-x:auto;-webkit-overflow-scrolling:touch;margin:1rem 0}
  table{border-collapse:collapse;width:100%;font-size:.92rem;min-width:560px}
  th,td{padding:9px 12px;border-bottom:1px solid var(--line);text-align:left}
  th{color:var(--dim);font-weight:600;font-size:.78rem;text-transform:uppercase;
     letter-spacing:.05em;white-space:nowrap}
  td.num,th.num{text-align:right;font-variant-numeric:tabular-nums}
  .win{color:var(--good);font-weight:600}
  .loss{color:var(--bad);font-weight:600}
  code{background:var(--panel);border:1px solid var(--line);border-radius:5px;
       padding:1px 6px;font-size:.86em;
       font-family:ui-monospace,SFMono-Regular,Menlo,monospace}
  .note{background:var(--panel);border-left:3px solid var(--accent);
        border-radius:0 8px 8px 0;padding:14px 18px;margin:1.3rem 0}
  .note p:last-child{margin-bottom:0}
  ul{padding-left:1.15rem;margin:0 0 1rem}
  li{margin-bottom:.55rem}
  .pills{display:flex;flex-wrap:wrap;gap:7px;margin:.7rem 0 1.4rem}
  .pill{background:var(--panel);border:1px solid var(--line);border-radius:999px;
        padding:4px 12px;font-size:.82rem;color:var(--dim)}
  footer{margin-top:3.5rem;padding-top:1.4rem;border-top:1px solid var(--line);
         color:var(--dim);font-size:.88rem}
</style>
</head>
<body>
<div class="wrap">

  <h1>KingJones</h1>
  <p class="lede">Quantizing large models for hardware most people don't benchmark on —
  and publishing the results that <em>didn't</em> work.</p>

  <div class="pills">
    <span class="pill">Ryzen AI Max+ 395</span>
    <span class="pill">Strix Halo · gfx1151</span>
    <span class="pill">Radeon 8060S</span>
    <span class="pill">ROCm 7.2.4</span>
    <span class="pill">128 GB unified</span>
    <span class="pill">NVFP4 · NVIDIA</span>
  </div>

  <div class="stats">
    <div class="stat"><b>18</b><span>repositories</span></div>
    <div class="stat"><b>846</b><span>GiB published</span></div>
    <div class="stat"><b>14</b><span>base models</span></div>
    <div class="stat"><b>13</b><span>ROCmFP4 builds</span></div>
  </div>

  <h2>What I actually found</h2>
  <p>ROCmFP4 does <span class="rule">not</span> universally speed up decode. That's the
  most useful thing I can tell you, and it took four builds and one discarded model
  to learn it.</p>

  <div class="tablewrap">
  <table>
    <thead><tr>
      <th>Model</th><th>Architecture</th><th class="num">Active</th>
      <th class="num">Decode, short ctx</th><th class="num">Decode, long ctx</th><th>Verdict</th>
    </tr></thead>
    <tbody>
      <tr><td>Laguna-S-2.1 118B-A8B</td><td><code>laguna</code></td><td class="num">~8B</td>
          <td class="num win">+62.6%</td><td class="num win">+43.6%</td><td>ship it</td></tr>
      <tr><td>Step-3.7-Flash 198B MoE</td><td><code>step35</code></td><td class="num">~11B</td>
          <td class="num win">+18%</td><td class="num win">+20%</td><td>ship it</td></tr>
      <tr><td>Leanstral-1.5 119B-A6B</td><td><code>deepseek2</code> · MLA</td><td class="num">~6.5B</td>
          <td class="num">+1.5%</td><td class="num loss">−8.2%</td><td>size only</td></tr>
      <tr><td>KAT-Coder-V2.5-Dev 35B-A3B</td><td>hybrid linear</td><td class="num">~3B</td>
          <td class="num">+12%</td><td class="num loss">−37%</td><td><strong>discarded</strong></td></tr>
    </tbody>
  </table>
  </div>

  <p>The builds that gained were the ones pushing more active parameters through the
  FP4 FFN kernels. MLA and hybrid-linear attention shift work <em>away</em> from that
  path and gained nothing — one regressed badly as context grew.</p>

  <div class="note">
    <p><strong>Benchmarking at one context length will lie to you.</strong> KAT-Coder
    looks like a 12% win at short context. At long context it's 37% slower. I nearly
    shipped it.</p>
    <p><strong>Attention type and active-param count are confounded in this sample.</strong>
    Four data points is a hypothesis, not a proof. I'd rather it be tested than believed.</p>
  </div>

  <h2>How I measure</h2>
  <p>Numbers are worth exactly as much as the discipline behind them.</p>
  <ul>
    <li><strong>Equal generation length</strong> — every run emits exactly 256 tokens with
      <code>ignore_eos</code>. Comparing tok/s across runs with different token counts is
      meaningless; one early run of mine was soft because a baseline stopped after 4 tokens.</li>
    <li><strong>Nonce-prefixed prompts</strong> — every prompt opens with a fresh UUID so the
      prefix cache can't serve a seen prefix and inflate prefill. <code>cached_tokens</code>
      is recorded each run so you can check it was 0. I caught a contaminated campaign this way.</li>
    <li><strong>Two context lengths minimum</strong> — see KAT-Coder.</li>
    <li><strong>One model resident, cold-loaded, three runs, median</strong> — on 128 GB
      unified memory two large models won't coexist, and a half-swapped model produces noise.</li>
    <li><strong>Failures published</strong> — OOM, crash and regression get a row in the
      table, not a deletion. Where a run shared the machine with other traffic, the card
      says the ordering is reliable but the exact ratios aren't.</li>
  </ul>

  <h2>The builds</h2>

  <h3>ROCmFP4 — AMD Strix Halo</h3>
  <p>Requires the <a href="https://github.com/charlie12345/ROCmFPX">ROCmFPX fork</a>.
  These will not load in stock llama.cpp, Ollama or LM Studio.</p>
  <div class="tablewrap">
  <table>
    <thead><tr><th>Model</th><th>Base</th><th class="num">Repo size</th><th>Contents</th></tr></thead>
    <tbody>
      <tr><td><a href="https://huggingface.co/kingjones777/Muse-Glimmer-30B-ROCmFP4-Strix-Halo-DFlash-GGUF">Muse-Glimmer-30B</a></td><td>meta-models</td><td class="num">63.0 GiB</td><td>4 variants · drafter · vision</td></tr>
      <tr><td><a href="https://huggingface.co/kingjones777/Laguna-S-2.1-ROCmFP4-STRIX_LEAN-GGUF">Laguna-S-2.1</a></td><td>poolside</td><td class="num">58.3 GiB</td><td>STRIX_LEAN</td></tr>
      <tr><td><a href="https://huggingface.co/kingjones777/Leanstral-1.5-119B-A6B-ROCmFP4-STRIX_LEAN-GGUF">Leanstral-1.5-119B-A6B</a></td><td>mistralai</td><td class="num">59.0 GiB</td><td>STRIX_LEAN</td></tr>
      <tr><td><a href="https://huggingface.co/kingjones777/Step-3.7-Flash-ROCmFP4-STRIX_LEAN-GGUF">Step-3.7-Flash</a></td><td>stepfun-ai</td><td class="num">101.4 GiB</td><td>STRIX_LEAN · vision</td></tr>
      <tr><td><a href="https://huggingface.co/kingjones777/DeepSeek-V4-Flash-180B-ROCmFP4-STRIX_LEAN-GGUF">DeepSeek-V4-Flash-180B</a></td><td>deepseek-ai</td><td class="num">181.7 GiB</td><td>2 variants</td></tr>
      <tr><td><a href="https://huggingface.co/kingjones777/DeepSeek-V4-Flash-0731-ROCmFP4">DeepSeek-V4-Flash-0731</a></td><td>deepseek-ai</td><td class="num">100.4 GiB</td><td>ROCmFP4</td></tr>
      <tr><td><a href="https://huggingface.co/kingjones777/Qwen3-Next-80B-A3B-Instruct-ROCmFP4-STRIX-GGUF">Qwen3-Next-80B-A3B</a></td><td>Qwen</td><td class="num">39.7 GiB</td><td>STRIX</td></tr>
      <tr><td><a href="https://huggingface.co/kingjones777/BTL-4-ROCmFP4-STRIX-GGUF">BTL-4</a></td><td>badtheorylabs</td><td class="num">18.2 GiB</td><td>STRIX · vision</td></tr>
      <tr><td><a href="https://huggingface.co/kingjones777/North-Mini-Code-1.0-ROCmFP4-STRIX-GGUF">North-Mini-Code-1.0</a></td><td>CohereLabs</td><td class="num">15.3 GiB</td><td>STRIX</td></tr>
      <tr><td><a href="https://huggingface.co/kingjones777/GLM-4.7-Flash-ROCmFP4-STRIX-GGUF">GLM-4.7-Flash</a></td><td>zai-org</td><td class="num">14.9 GiB</td><td>STRIX</td></tr>
      <tr><td><a href="https://huggingface.co/kingjones777/Instella-ToolCall-16B-A3B-ROCmFP4-STRIX-GGUF">Instella-ToolCall-16B-A3B</a></td><td>amd</td><td class="num">8.0 GiB</td><td>STRIX</td></tr>
      <tr><td><a href="https://huggingface.co/kingjones777/Instella-MoE-16B-A3B-Think-ROCmFP4-STRIX-GGUF">Instella-MoE-16B-A3B-Think</a></td><td>amd</td><td class="num">7.9 GiB</td><td>STRIX</td></tr>
    </tbody>
  </table>
  </div>

  <h3>NVFP4 — NVIDIA</h3>
  <div class="tablewrap">
  <table>
    <thead><tr><th>Model</th><th>Base</th><th class="num">Repo size</th><th>Notes</th></tr></thead>
    <tbody>
      <tr><td><a href="https://huggingface.co/kingjones777/Ling-3.0-flash-NVFP4-SGLang-MTP">Ling-3.0-flash</a></td><td>inclusionAI</td><td class="num">75.8 GiB</td><td>SGLang · MTP working</td></tr>
      <tr><td><a href="https://huggingface.co/kingjones777/Frontis-MA1-35B-NVFP4">Frontis-MA1-35B</a></td><td>FrontisAI</td><td class="num">23.3 GiB</td><td>with MTP</td></tr>
      <tr><td><a href="https://huggingface.co/kingjones777/Macaron-V1-Tall-NVFP4">Macaron-V1-Tall</a></td><td>mindlab-research</td><td class="num">23.3 GiB</td><td>MTP · LoRA-compatible</td></tr>
      <tr><td><a href="https://huggingface.co/kingjones777/Instella-ToolCall-16B-A3B-NVFP4">Instella-ToolCall-16B-A3B</a></td><td>amd</td><td class="num">9.0 GiB</td><td>tool calling</td></tr>
    </tbody>
  </table>
  </div>

  <h2>Things that cost me time, so they don't cost you any</h2>
  <ul>
    <li><strong>A vision port can compile cleanly and be completely wrong.</strong>
      Muse Glimmer needs per-layer sparse-window attention masks. Drop them and the build
      works, runs, and describes images fluently and incorrectly. A four-quadrant colour
      test catches it — a broken mask names the colours right and puts them in the wrong
      corners. "Describe this image" does not catch it.</li>
    <li><strong>Per-token acceptance is the wrong metric for a block drafter.</strong>
      DFlash proposes 15 tokens per pass; ~21% acceptance sounds broken and actually means
      ~4.13 tokens landing per target pass, which is healthy. Read tokens-per-pass.</li>
    <li><strong>A higher acceptance rate can be slower.</strong> n-gram speculation hit
      42.9% acceptance against DFlash's 21% and ran 45% slower, because it proposes far
      fewer tokens per pass.</li>
    <li><strong>Check what else is on the box.</strong> An identical request measured 40s
      on a quiet machine and 118s while another model was resident. Contention will invent
      a result and hand it to you with a straight face.</li>
  </ul>

  <h2>Credit</h2>
  <p>The ROCmFP4 / ROCmFPX tensor formats are <strong>not my work</strong> — they're
  <a href="https://github.com/charlie12345">charlie12345</a> / <code>caf</code>'s
  <a href="https://github.com/charlie12345/ROCmFPX">ROCmFPX</a> fork of llama.cpp, with
  contributions from <code>ciru-ai</code>, Tom Turney, <code>PlunderStruck</code> and
  Aydan S. Every ROCmFP4 file here was produced with their quantizer and runs on their
  runtime. If these builds are useful to you, star that repo.</p>
  <p>Built on <a href="https://github.com/ggml-org/llama.cpp">llama.cpp</a> and
  <a href="https://github.com/ROCm/ROCm">AMD ROCm</a>. All base model weights, licences
  and capabilities belong to their original authors — I contribute quantisation and
  measurement only.</p>

  <footer>
    <p><a href="https://huggingface.co/kingjones777">All models on Hugging Face</a> ·
    <a href="https://github.com/kingjones30/strix-halo-quant-lab">Benchmark harness &amp; raw results</a></p>
    <p>If you reproduce one of these builds on your own hardware, please open a discussion
    on the model — independent numbers are worth more than another round of mine.</p>
  </footer>

</div>
</body>
</html>