← Blog

Self-challenging language models: endless verifiable problems at the edge of ability

Self-play with executable task verification. Early results show improved task generation; external benchmark gains have not yet been measured.

The problem with datasets

Reinforcement learning on problems with checkable answers works well: code that passes tests, math with a verifiable result, puzzles that a program can grade. Many such setups start from a supplied dataset of problems, reference answers, or a judge model to score the output. Datasets run out, and most of what is in them is either too easy for the model or out of its reach.

The question behind this project: can a model train itself using nothing but an environment it can run code in? No task dataset, no gold answers, no judge model.

The idea

The model plays against itself. Two roles, A and B, are played by the same model, and their interests are opposed. A writes a task. B tries to beat it. Everything runs and is measured in a sandbox, a terminal playground where programs can be executed safely, with a pretrained model, role instructions, and sandbox rules supplied at the start. No task dataset or reference solutions are added during this training loop.

Awrites a task andself-certifies it Btries to defeat it,bigger budget Sandboxruns and measures Updateboth roles learn the updated model plays both roles again B can see exactly how A is rewarded
The training loop starts with a pretrained model and an executable sandbox. Rewards are computed by running code, without an LLM judge; this does not guarantee that the tasks teach transferable skills.

Why it can keep going

What I do not know yet

By design, both roles chase the frontier, because that is where the reward is. It should get harder over time, though I have not yet shown that. What I cannot say is whether it is useful: whether the problems at that frontier line up with what people mean by useful, or whether the two roles find a frontier that is hard but beside the point. That is the real open question of this project.

So the game itself is not the test. The test is whether the model gets better at things it never trained on: held-out and public benchmarks.

What the trajectories show

I archived every task that A proposed in several runs, with 27B and 9B models, including one run that collapsed. Here is what is supported, and what is not.

A learns to write tasks that can be measured

At the start of a run, most of what A writes cannot be run and measured by the sandbox. By the end, about half can, in both the 27B and the 9B runs, while malformed output stays below 4%.

0%20% 40%60% 1st2nd 3rd4th5th fifth of the run proposals the sandbox measured 27B, run 1 27B, run 2 9B, run 1 9B, run 2 collapsed
The share of A's proposals that the sandbox could actually measure, by fifth of each run. The two 27B lines come from different runs. One of the two 9B runs collapsed and is shown in red.

Some of the tasks A wrote

Here is the typical task from five stretches of that same 27B run, picked by a fixed rule (the middle one in each 25-step window by how hard B found it), not by eye. Every one is a classic hard optimization problem with a numerical score, written by the model itself, with nothing taken from a dataset.

StepProblemWhat A asked for
25Quadratic assignmentPlace 10 machines on 10 floors so the total pairwise transport cost is as small as possible.
64Max-cutSplit the nodes of a 40-node graph into two groups so that as many edges as possible cross between them.
83Makespan schedulingAssign 50 jobs to 5 identical machines so that the last machine finishes as early as possible.
110Facility dispersionFrom 90 candidate sites in a unit square, choose sites that are as far apart from each other as possible.
133Max coverageChoose a limited number of sets so that together they cover as many elements as possible.

These are small instances and the kinds of problem change from window to window. So this is not a clean ladder of rising difficulty, and I do not claim it is. It shows the model producing a stream of different, runnable, scored problems on its own.

What is not shown

Where it stands: limited by compute

For now, the main limitation may be compute.

I am sharing the write-up now because the question is interesting and the early results are real. It may be worth another try for someone with a strong starting model and more compute.