Primer: https://ornith.ai/defense_kernel_hack.html
In-depth(follow links etc): https://x.com/myainotez/article/2037258418843771349
Parts relevant: https://www.coreauto.com/blog/when-ai-starts-writing-systems...
----
When you do this with benchmarking, the same thing happens but on a much deeper, shittier, harder to understand level. It will set up the caches to benefit your kernels, it will set up the timing to benefit your kernels, it will set up the evaluation order to benefit your kernels. I've seen half-cache flushes, which only benefit large shapes.
I wouldn't be surprised if you pointed a language model on your benchmarking with the comment above, and it found something that is reward-hacking your task.
Same thing applies to benchmarking, a few guardrails goes a long way. As long as you aren't completely vague ("set up benchmarks", vs. "write tests over a variety of common shapes, be careful to control for environmental variables") the models do quite well. I've checked over the code it's written and it's all fairly reasonable. I do mention cache eviction in the article, this generally wasn't an issue and the model did this automatically on the first pass (back in Opus 4.6 days). I think you might not be giving them enough credit.
I'm not completely familiar with the writers of this article, but I've never had an LLM try to hack this, even sometimes telling me a target was impossible without quantization or approximation:
"Code based analysis already tells a detailed story, but there is an overlooked parameter: "boundaries of the hardware". " - the coreauto post
This project has spanned several models since Opus 4.5. I think even then such details were trivially known by them, thought they required much more handholding than they do now. I'm honestly not sure how the article writers ran into the hacks they did.
Look at this challenge:
https://openkernelchallenge.dev/#leaderboard
If you have the tokens, let your harness go at let's say the first bf16 problem, I am curious how far you will get with it (1.73x is the leader and 2.04x is roofline). I think if you manage to get above 1.63x, I would be really interested in learning how you did that.
30B-A3B MoE
Jam - 67,241
SGLang - 44,696
+50.4%
8B Dense
Jam - 58,821
SGLang - 41,759
+40.9%
Math RL is pure decode, so kernels are the most major factor here.
Thanks for bringing up these points, it's definitely good food for thought to add to the blog!
I'll update the post in the coming week with a section on benchmarking. The current post does have some details on measurement, but I agree that maybe it's not covered in the required depth.