🚀 Why AMD’s MI355X Is The Underdog Hero For Running Kimi K3 (and What It Means For Test Automation)
The headline that got me pumped
When I saw "Running Kimi K3 on MI355X at Better Performance per Dollar Than B300" on Hacker News, my first reaction was a mix of awe and déjà‑vu. A 2.8 trillion‑parameter model that finally fits on a single 8‑GPU node? And it does so on a non‑Nvidia card that’s roughly a third of the price? That’s the kind of headline that makes a senior SDET’s heart race—because it forces us to ask the same question we ask every day: Is the cost we pay for hardware justified by the work we can actually automate?
If you haven’t read the Wafer blog post, the TL;DR is:
- Kimi K3 (2.8 T parameters) needs >1.5 TB of VRAM plus a 1 M‑token KV cache.
- A typical Nvidia B300 node (8 × 288 GB) can handle it, but it costs about 2.4× more per GPU‑hour than AMD’s MI355X.
- With a few ROCm‑specific fixes, the MI355X hits 952 tok/s/node (aggregate) and 118 tok/s on a single stream – roughly 1.3× the decode speed of a dual‑node B200 setup.
- In pure performance‑per‑dollar terms the MI355X wins hands‑down.
That’s a powerful reminder that raw silicon specs alone don’t tell the whole story; the software stack and the engineering effort behind it can make or break a deployment.
Why the MI355X feels like a “secret weapon” for us
I’ve been in the trenches of CI/CD pipelines for AI models for years, and I’ve learned two hard‑earned lessons:
- You get what you test. If you’re not exercising the edge‑cases of your inference stack (different batch sizes, KV‑cache lengths, speculative decoding, etc.) you’ll be blindsided when the model hits production.
- Kernel‑level bugs are the quiet assassins of latency. The Wafer team spent a decent chunk of time fixing a missing
topkrenorm_probdefinition on ROCm. It wasn’t a missing custom kernel; it was a missing Python function that caused the whole scheduler to crash.
In other words, the MI355X’s advantage isn’t magic hardware; it’s the fact that a small, focused team (Wafer) was willing to own the stack from PyTorch down to the ROCm kernel. That’s the exact mindset we need in any automation‑first org: if the vendor’s day‑0 support is thin, you bring your own tests, mocks, and maybe a quick‑and‑dirty patch.
What this means for our testing strategy
Below is a practical checklist you can drop into your next AI‑infra sprint. It’s a mix of unit, integration, and performance testing – the three pillars I swear by when I’m evaluating a new GPU or a new model.
- Unit‑level sanity checks for every custom kernel or ROCm‑specific shim (e.g., the
topkrenorm_probfunction). Usepytestwithtorch.compilein eager mode first, then intorch.compile‑mode to catch graph‑level divergences. - End‑to‑end latency/throughput suites that simulate realistic token streams: 1 024‑token prefill + 400‑token decode, varying concurrency (c24, c64, etc.). Capture both aggregate and single‑stream metrics.
- KV‑cache stress tests that push the context window to 1 M tokens and beyond. Verify that memory fragmentation or OOM conditions are caught early.
- Cross‑node communication probes – especially if you’re mixing B200‑style multi‑node setups with a single‑node MI355X. Measure RoCE latency on the critical decode path.
- Continuous regression dashboards that surface per‑GPU‑hour cost alongside throughput, so the “cheaper per hour” narrative stays visible to product managers.
When I run these suites on a freshly‑provisioned MI355X, the most common failures are missing kernel symbols or incorrect datatype assumptions (e.g., float16 vs bfloat16). Those are cheap to fix once you have the test harness in place, but they can stall a rollout for weeks if you rely on manual debugging alone.
Linking the rest of the day’s tech chatter
While the MI355X story dominates my mind, a couple of other headlines from today tie back nicely to the theme of owning your stack.
Diátaxis – a documentation framework that makes testing easier
The “Diátaxis” framework (see the Hacker News discussion) separates docs into tutorials, how‑tos, references, and explanations. When we document a new ROCm kernel, we should treat the how‑to as a testable recipe: spin up a container, run a specific torch.compile script, verify the output hash. That turns documentation into a living test suite, reducing the chance of the dreaded NameError that Wafer encountered.
Go 1.27 Interactive Tour – interactive learning meets CI
Go 1.27 introduced an interactive tour that runs in the browser. Imagine wrapping that idea around your inference pipeline: a web UI that lets you spin up a temporary MI355X pod, feed a prompt, and watch latency numbers in real time. By treating the UI as a smoke test, you get rapid feedback for any kernel regression before it reaches your CI pipeline.
The bigger picture: hardware choice vs. engineering bandwidth
The headline that the MI355X is cheaper per GPU‑hour is seductive, but it masks the hidden cost of engineering effort. Nvidia’s ecosystem is polished because thousands of engineers have contributed to CUDA, cuDNN, TensorRT, and so on. AMD’s ROCm is catching up, but you still have to be ready to patch missing kernels, adapt sampling code, and possibly contribute upstream.
From a SDET perspective, that extra bandwidth can be quantified:
- Time to first successful inference: ~1‑2 weeks on a fresh ROCm node (Wafer’s experience) vs < 24 hours on a well‑tuned CUDA node.
- Bug‑fix overhead: a handful of hours per missing kernel, but multiplied by the number of custom ops you rely on.
- Long‑term maintenance: If the model version changes (e.g., a new draft‑tensor format), you may need to revisit the ROCm path again.
If your organization already has a dedicated AI‑infra SDET team, the MI355X becomes an attractive gamble – you can extract more dollars per token. If you’re a startup with a single engineer on the stack, the safety net of Nvidia’s day‑0 support might be worth the extra spend.
Bottom line for engineers
- Never judge a GPU by its spec sheet alone – look at the software support maturity and the cost of owning the stack.
- Write tests that double as documentation (take a page from Diátaxis). A missing function like
topkrenorm_probshould have a failing test that tells you exactly where the breakage is. - Automate performance regression with realistic token‑length workloads. A CI job that spits out
tok/s/$per commit is worth its weight in gold. - Consider the total cost of ownership, not just $/GPU‑hr. Engineering time is a real expense, and the MI355X’s advantage evaporates if you’re spending weeks patching ROCm.
In short, the MI355X is a great piece of hardware that forces us to be better engineers. It nudges us to write tighter tests, document more rigorously, and keep an eye on the economics of inference. If you’re willing to invest that engineering bandwidth, you’ll get a performance‑per‑dollar win that feels like discovering a hidden cheat code in a game you thought you’d already mastered.
Stay curious, keep testing, and don’t let the hype drown out the hard work that makes AI affordable.
🔗 Sources this was researched from
- Running Kimi K3 on MI355X at Better Performance per Dollar Than B300 — Hacker News
- Diátaxis — Hacker News
- Seedance 2.5 — Hacker News
- Go 1.27 Interactive Tour — Hacker News
- Show HN: I'm a 15 Year Old Wannabe Engineer, This Is a Cycloidal Gearbox I Built — Hacker News
📡 Enjoyed this?
Subscribe to get worldwide tech signals with my take, straight to your inbox.