Transcript
00:00:00Every time a new model drops, there's always that accusation of benchmark maxing, and honestly,
00:00:03I get it. It's a thing that's happened, still happens, and I think we will notice when a model
00:00:07looks really good on paper, but feels bad to use. Recently, cursor research showed that smarter
00:00:11models are actually becoming even more resourceful at hacking coding benchmarks, so I decided to
00:00:16explore the two different ways that these benchmarks get gamed, how bad it actually is,
00:00:20and what a trustworthy benchmark should look like. Let's jump into it.
00:00:29So let's start with this cursor research that they showed last week. Reward hacking is swamping
00:00:33model intelligence gains. This was written by Numanjin, I hope I pronounced that right,
00:00:37he's a research scientist at Cursor, and it has real numbers proving how widespread this behaviour is.
00:00:42The problem they looked at is that eval suites built from real bugs, which later get fixed,
00:00:46say when a benchmark uses a popular open source library and its bugs, well, modern coding agents
00:00:50can just look up the exact commit that fixed that bug, instead of solving it themselves. So it might
00:00:55be really good at web search, but not actually the coding part. They actually found out that
00:00:59on SWE Bench Pro, 63% of successful Opus 4.8 max resolutions retrieved the fix rather than deriving
00:01:05it. So it either used the web to find the relevant PR or the fixed source file, or it even used the
00:01:10bundled git history and go forward in time and find the fixed commit. Now obviously the fix for this is
00:01:14to make the environment stricter, which is what Cursor did. They deleted the git directory of the
00:01:18repository and started a new fresh one, and then also made sure that network access was denied by
00:01:22default while having a pin proxy for dependency resolution against an allow list of package registries.
00:01:27Nothing else was allowed through. When rerunning the benchmarks in this strict environment,
00:01:31a really interesting pattern emerges. First, the results show that a top tier model like Opus 4.8
00:01:35has a 14% drop in its score when it's used in the strict environment, and that pattern continues
00:01:40across its thinking levels. It also shows that this behavior is something that's been growing with Opus
00:01:44in each model release, having a larger change in the normal versus strict scores. Second, it actually
00:01:49showed that GPT models don't seem to have the same behavior with only really small gaps in their scores
00:01:54between the strict and normal environment. The highest gap that a GPT model got was GPT 5.4 high
00:01:58with a 6.6% drop, and GPT 5.4 extra high and 5.5 seemed to have a 1% or less difference.
00:02:05Funnily enough, the worst offender on SWE Bench Pro was actually Composer 2.5, which is Cursor's own
00:02:10model, so respect to them for admitting it. The same patterns that we just saw there for SWE Bench Pro
00:02:14also followed across to SWE Bench Multilingual, and Anthropic have actually previously researched this
00:02:18themselves as well. The main takeaway from this research is that benchmark design needs to account
00:02:23for a runtime environment, and that doesn't necessarily mean cutting off internet access
00:02:26entirely. You might actually be trying to test how well it actually uses those tools. You just need
00:02:30to be aware of how that access could change the scores and what it means. It also means that you
00:02:35should probably be auditing the results to see if it's solving it in any unexpected way. Even with this
00:02:39though, Namao says that as these models become more aware of the fact they're being evaluated,
00:02:42they might try and change their behavior in subtler ways that you can't fix by simply sealing that
00:02:46history or restricting internet access. So yeah, this is a seriously hard problem to solve,
00:02:51and we've only tackled the first part here, which is reward hacking, which comes after the model
00:02:55training. There's also the issue of benchmark contamination. The most obvious form of this is
00:02:59exact test set contamination, where the model has literally seen the same question, prompt,
00:03:03code problem, or answer key before, but it can also happen through near duplicates, paraphrases,
00:03:08synthetic data, or semantically equivalent examples. There's even a more subtle form,
00:03:12which is where a model can learn the benchmark formats and how it's actually scored and evaluated,
00:03:16and use that to its advantage. The big problem though is that proving this contamination is
00:03:20happening is pretty damn difficult, since most of the training data is usually not shared,
00:03:24and people don't tend to admit that they're benchmark maxing. I found one study where they
00:03:28actually used a quiz where instead of needing access to the model's training data,
00:03:31they simply showed the model a real benchmark question, alongside a slightly altered version of
00:03:35it, and asked which one was the original. If the model then consistently picked the real one,
00:03:39it suggests that it might have seen that benchmark question before. Another paper used a pretty
00:03:43damn complex method to calculate what it called a data contamination risk score, looking at the
00:03:47different kinds of overlap from the model and seeing similar wording or facts, all the way up to
00:03:51seeing the exact question or answer, and then it uses that risk score to adjust the model's benchmark
00:03:56result, so a high score with lots of suspected contamination gets marked down. That data actually
00:04:00showed that a model like QUEN 2.5 scores in the mid 90% range on SST2, but when they adjusted its
00:04:05score for that contamination score, it drops to around 30 or 40%. AKA, this model may have seen this
00:04:11benchmark in its training data, making it look way better than it is. Finally, the last study that I
00:04:15looked at, and I went down an absolute rabbit hole in this video, was actually from 2024 by ScaleAI.
00:04:20In this, they took a grade school math benchmark, GSM-AK, and they created a brand new benchmark written
00:04:25by humans meant to mimic the exact same difficulty level. This way, if the model really did solve the
00:04:30first one on its own, you should be able to solve this one with a pretty similar performance.
00:04:34You can see here though that that was not the case. Lower is worse here, and many models showed a
00:04:38large gap in the results of equally difficult benchmarks. The only difference being that one
00:04:42of these tests was public data. So is every benchmark worthless then? Well, not really. As you can see,
00:04:47this is something that researchers have been aware of for quite a while, and so are benchmark makers.
00:04:51So for the reward hacking part, a benchmark like DeepSWE already uses isolated environments,
00:04:55and so do a lot of them. And for the contamination aspect, it's the way a lot of benchmarks now no longer
00:05:00make their datasets public. Frontier Code, for example, from Cognition has no plans on releasing
00:05:05theirs due to this, and we actually saw concerns when Fable came out from Arc AGI, saying they didn't
00:05:09run their evals due to Anthropic's new data retention terms for Mythos, saying they'd only run it when
00:05:14they could run the evals safely without Anthropic having any way of seeing that data.
00:05:18Let me know your thoughts on all of this. Have you had that feeling before where a model is a lot
00:05:21worse than it benched? And do you have a favorite benchmark that you trust the most?
00:05:24Let me know in the comments down below, or hey there, subscribe, and as always, see you in the next one.