@PandaTalk8: NVIDIA's strongest moat was never the GPU. It's CUDA. But this moat might be chipped away bit by bit by AI Agents. Recently, Wafer ran GLM-5.2 on AMD MI355X, achieving 2626 tokens/s on a single node, with cost...
Summary
Wafer successfully runs GLM-5.2 on AMD MI355X with competitive performance, challenging NVIDIA's CUDA moat as AI agents automate software optimization, potentially eroding NVIDIA's high premium.
View Cached Full Text
Cached at: 07/04/26, 06:51 PM
NVIDIA’s strongest moat has never been the GPU. It’s CUDA. But this moat may be getting chipped away, one AI Agent at a time.
Wafer recently ran GLM-5.2 on AMD MI355X, achieving 2626 tokens/s on a single node at a cost over 2x lower than Blackwell. The truly dangerous part isn’t that “AMD is strong in hardware.” It’s that this proves: AMD’s weakness isn’t hardware.
It’s a gap in software ecosystem, model adaptation, kernel optimization, and engineering experience.
Here’s the problem. These are exactly the things AI Agents are best at accelerating:
- Fixing framework bugs
- Tuning kernels
- Doing quantization
- Adapting new models
- Optimizing inference configs
- Running benchmarks automatically
In the past, CUDA’s advantage was built on decades of engineering ecosystem. But if AI Agents can reduce these engineering adaptation costs by 10x, how long can NVIDIA’s premium pricing last?
I’m increasingly convinced the real challenger to NVIDIA isn’t AMD. It’s: AMD + open-source inference frameworks + AI Agent engineering automation.
Will the CUDA moat still exist? Yes. But it may not be as deep as before.
How many more years do you think NVIDIA’s CUDA moat can hold? 1 year, 3 years, 5 years, or remain invincible?
Performance per dollar is getting faster and cheaper | Wafer
Source: https://www.wafer.ai/blog/glm52-amd
Have you noticed we like AMD? The demand for inference is skyrocketing and outpacing supply. With frontier models being released almost every other week — Claude Fable, GLM5.2, and Minimax M3, to name a few — the token craze is only getting crazier, and there aren’t enough Blackwells going around to support it. Thus, NVIDIA GPU prices are climbing fast, and tokens are getting really expensive. In comes AMD. At around 2.75x cheaper per GPU on average (MI355X vs B300) with comparable hardware specs, the solution to cheap inference is hiding in plain sight — a message we at Wafer have been preaching for months. But although AMD’s Instinct MI350 series competes with Blackwells at the silicon level, NVIDIA’s software advantage and day-0 support typically allows providers to serve inference much faster on their hardware with much less friction. Conversely, on the MI355X / ROCm stack SOTA performance rarely comes out of the box for these frontier models (sometimes it does!). In fact, you’re lucky if you can find an image that runs them at all. Without this day-0 support, building and optimizing for the newest models can require weeks of engineering and compute. By then, the newest model has already been released, making it so AMD is always playing catch-up. But as agents improve at kernel and model optimization, this gap is closing in real time. At Wafer, we’ve proven this time and time again. And again — on a 20k in / 1k out, 60% cache hit rate workload, we hit an aggregate throughput of 2626 tok/s/node @ 2.4 rps with a defined knee of ≤5s TTFT — only 80% of the performance measured on a B200, despite being over 2x cheaper.
| Sustained RPS | Aggregate tok/s/node | TTFT p50 / p95 | Success |
|---|---|---|---|
| 0.5 | 449 | 0.59s / 0.60s | 100% |
| 1.0 | 974 | 0.60s / 0.81s | 100% |
| 1.5 | 1913 | 0.62s / 1.03s | 100% |
| 2.0 | 1944 | 0.62s / 1.05s | 100% |
| 2.25 | 2089 | 0.63s / 1.23s | 100% |
| 2.4 (saturation) | 2626 | 0.81s / 2.22s | 100% |
We also hit 213 tok/s on GLM5.2 on 10k input tokens / 1.5k output tokens single stream, followingArtificial Analysis standards (https://artificialanalysis.ai/methodology/performance-benchmarking), served on AMD MI355X capacity from TensorWave. Though this number doesn’t top the AA leaderboard, it still wins on performance per dollar.
How we did it
The first step with any model work is to choose a quantization and framework. We quantized the base bf16 GLM-5.2 to MXFP4 with AMD Quark. In comparison to z-ai’s official FP8 quantization, our MXFP4 was lossless (GPQA-Diamond, tau2, GSM8K).
| Eval | FP8 baseline | MXFP4 | Δ (MXFP4 − FP8) |
|---|---|---|---|
| GSM8K (200q, 5-shot, greedy) | 0.965 ± 0.013 | 0.955 ± 0.014 | −0.010 |
| GPQA-Diamond (198q × 2 seeds, temp 1.0) | 0.9217 ± 0.027 | 0.9026 ± 0.029 | −0.019 |
| tau2 macro | 0.819 | 0.834 | +0.015 |
As for the inference framework, we had three options — vLLM, ATOM, and sglang. Among the three, we chose sglang — vLLM had no working MXFP4 + GlmMoeDsa path so the MXFP4 weights provided no benefit, and ATOM’s output degraded at long context. Sglang was the inference engine with the least friction to native support, able to take advantage of the quantization while remaining coherent. The next natural step to improving throughput was enabling speculative decode on sglang. However, the sglang ROCm image does not support this out of the box. There were two fixes needed before MTP worked properly. First, the MTP head, like every other layer, keeps its single shared expert stored in bf16, not MXFP4. However, the MTP head is registered under a different module prefix than the main decoder stack (Quark names its bf16 shared expertmodel\.layers\.78\.mlp\.shared\_experts\.\*, while the MTP layer’s real prefix ismodel\.decoder\.\*). Because of the mismatch, sglang’s quantization lookup fails and defaults to building that shared expert as MXFP4. At load it then tries to read a full-width bf16 weight into a half-width 4-bit slot and the init crashes on a shape mismatch. Quark records which weights to leave un-quantized as a list of layer names, so we copied over the layer 78 entries to that list a second time under the decoder name sglang actually uses. This fix unblocked speculative decode, netting us close to a 3x gain in single stream throughput. Second, deep speculative decode (such as the 5/1/6 config z-ai suggests) was still blocked. The fused multi-step metadata kernel needed for draft depth ≥4 writes\#include <cuda/std/chrono> with no ROCm guard. Fix: one\#ifdef USE\_ROCMguard. Two trivial, but necessary changes to take full advantage of speculative decode. With spec dec working properly, alongside a few config optimizations (such as\-\-kv\-cache\-dtype fp8\_e4m3and\-\-enable\-aiter\-allreduce\-fusion), we reached our headline single stream decode number at 213 tok/s. But for aggregate throughput, especially with our defined workload, decode optimizations are necessary but insufficient. At 20k in @ 60% cache, the workload is primarily prefill bound. At TP8, which was the configuration optimized for single stream decode, the MI355X can run GLM5.2-MXFP4 at 1461 tok/s/node. Switching to TP4×DP2 netted a massive improvement on this workload, getting us to 1944 tok/s/node at 2.0 RPS — still relatively slow compared to our measured Blackwell performance, which hit 3192 tok/s/node at 3.0 RPS. A big reason for the poor prefill performance on the MI355X is that on the sglang image, GLM-5.2’s fp4 MoE was silently on a slow FlyDSL heuristic fallback (aiter only shipped tuned configs for the a8w8/fp8 path). We tuned the MoE kernel selection ourselves on GLM’s fp4 shapes (model\_dim 6144, moe\_inter 2048, E=256, topk=8), which allowed us to reach 2626 tok/s/node at 2.4 RPS. Much better.
Why this matters
Although there was some degree of friction, achieving the best performance per dollar ratio on the MI355X wasn’t particularly hard — though there were some framework related bugs, unlike our work with Qwen3.5 397B, you’ll notice that we didn’t actually write any custom kernels this time. Though this study doesn’t take multi-node performance into consideration, single-node deployments still remain highly prevalent in practice. SOTA on AMD is becoming more a matter of support, not software. The CUDA moat is eroding in real time.
Similar Articles
@wafer_ai: BREAKING: these engineers figured out how to serve GLM 5.2 on @AMD MI355X at 2626 tok/s/node and 213 tok/s single strea…
Engineers successfully serve GLM 5.2 on AMD MI355X at 2626 tok/s per node and 213 tok/s single stream, achieving ~80% of B200 throughput at over 2x lower cost than Blackwell.
Performance per dollar is getting faster and cheaper
Wafer demonstrates that AMD MI355X GPUs offer competitive inference performance for frontier models like GLM5.2 at significantly lower cost than NVIDIA Blackwell, achieving 80% of B200 throughput at under half the price, using MXFP4 quantization and sglang.
@snowboat84: https://x.com/snowboat84/status/2061962883651731602
This article is the first part of the AI Engineering Panorama series. From a historical perspective, it reviews the evolution of GPUs from gaming graphics cards to AI accelerators, the bold bet of CUDA, the independent path of Google's TPU, and why NVIDIA ultimately prevailed. It also provides a detailed analysis of the underlying logic of AI infrastructure such as chips, supply chain, networking, and power.
@wafer_ai: 6 NVIDIA competitors all found the same weakness in CUDA @gpuemi wrote deep dives on 6 nvidia competitors. different te…
A thread analyzing how six AI chip competitors (Tenstorrent, Cerebras, Trainium, TPU, SambaNova, Furiosa) all independently abandoned traditional GPU features like hardware caches and threads, using software-managed SRAM and different programming models, contrasting with NVIDIA's CUDA approach.
@berryxia: Damn, even my eyes can't keep up with this speed! Daniel Han, founder of UnslothAI, YC S24, previously at NVIDIA doing ML, just released the experimental MTP GGUF of Qwen3.6. The 27B model hits 140 tokens/s on a single GPU. 35B-A...
UnslothAI founder Daniel Han released the experimental MTP GGUF version of Qwen3.6, achieving 140 tokens/s for the 27B model and 220 tokens/s for the 35B-A3B version on consumer GPUs — a 1.4x speedup with zero accuracy loss.