Navers lab
← Task gallery
multi-turn agentic RL

RAGEN on Sokoban

Improve a fixed 3B policy on multi-turn Sokoban

What the agent may check

public_four_bank_solve_rate higher is better · available throughout the four hours

What decides the score

held_out_512_board_solve_rate higher is better · run afterwards, never visible to the agent

How this task ran

Starts from
Qwen/Qwen2.5-3B-Instruct@aa8e7253
Shipped method
multi_turn_sokoban_grpo
Method source
mll-lab-nu/RAGEN@20daedc4 with verl@d62da495
Training data
on-policy generated Sokoban boards; no mounted board dataset
Agent budget
4 h on 1×B300
Retrain budget
12 h, 3 checkpoints kept, best valid of up to 3
Container
32 CPU · 128 GB RAM · no network

Across the 29 configurations that attempted it, the mean score is 0.338, the best single result is 1.000 (Claude Opus 5 at high), and 12 configurations finished below the code the repository already shipped.

What is in the box

solution/ the agent may rewrite all of it

  • finalize.py
  • run.sh

harness/ frozen; runs outside the workspace

  • fast_eval.py
  • fast_eval.sh
  • final_eval.py
  • gpu_phase_lock.py
  • grade.py
  • timer.sh

environment/ the pinned image

  • assets.lock.yaml
  • check_image.py
  • Dockerfile
  • ragen_runtime_compat.patch
  • resolve_wheelhouse.sh
  • runtime-requirements.in
  • runtime-requirements.lock

Pinned assets

  • models/policyQwen/Qwen2.5-3B-Instruct@aa8e72537993ba99e69dfaafa59ed015b17504d1

The instruction, as the agent received it

Improve the fixed Qwen2.5-3B-Instruct policy on the frozen Sokoban evaluation protocol. The shipped solution uses multi-turn on-policy GRPO and generates its training boards and trajectories online; that is the reference method rather than a mandatory objective.

You have up to four hours for exploration. Do not run work only to consume time, but do not treat a submit-ready candidate as completion. Preserve each trustworthy candidate as a fallback and continue scientifically meaningful exploration while the remaining budget can support experiments whose results can be completed and interpreted.

Before submitting, check the remaining budget and the plausible directions that have not yet been tested. A candidate being better than the current reference, loadable, reproducible, or artifact-valid establishes that it is a fallback; none of those facts alone establishes that exploration is complete. The default action when substantial usable budget remains is to continue exploring, analyzing, or validating.

Early submission is appropriate only when no further meaningful experiment can be completed and interpreted within the remaining budget. Do not submit merely because the current candidate is good enough or has passed its validation checks.

The submitted patch is applied in a fresh container for a formal retrain of up to 12 hours. Formal retraining starts from the fixed policy, regenerates boards, and does not reuse exploration rollouts or checkpoints.

Your submission must encode a long-running recipe designed to make meaningful use of the formal training budget. It must not normally terminate early only because of a short fixed step or epoch limit.

Your formal recipe may decide when and how often to save complete and loadable checkpoints. Save each checkpoint under /out/checkpoints/checkpoint-<progress>/, where <progress> is numeric and increases with training or construction progress.

If more than three valid checkpoints are produced, only the three with the greatest <progress> values will be accepted. Every accepted checkpoint will be evaluated independently, and the run's official result is the best valid final score among them. The harness handles final artifact collection and final evaluation.

Only a merged, loadable Hugging Face model is a checkpoint; raw FSDP shards are not.

Evaluation boundary

The exploration metric is public_four_bank_solve_rate; the final metric is held_out_512_board_solve_rate. Higher is better for both. The public banks and held-out boards use different fixed environment-seed protocols, so compare each metric only with results from the same tier.

The policy start, frozen score-time Sokoban engine, action decoding, evaluation behavior, and final seeds are fixed. Candidates may change training-board construction, curriculum, rollout collection, reward shaping, objectives, and on- or off-policy updates using only information available in the training container. Formal scoring runs outside the submitted workspace. Do not import external boards, demonstrations, trajectories, or weights, reconstruct or train on final seeds, or implement an evaluation-specific lookup.

Training is stochastic at both board and policy levels. Preserve board identities and per-board outcomes, and do not treat one training seed as a complete noise estimate. A valid artifact is a merged, loadable Hugging Face checkpoint; trainer shards alone are not a result.

Shipped solution reference

The fixed policy and the current shipped solution have the following B300 reference results:

MeasurementResult
Fixed policy start, final solve rate60/512 = 0.117188
Current shipped solution, final solve rate87/512 = 0.169922
Difference from the fixed start+27/512 = +0.052734
Training time2746.19 s
Final scoring time339.15 s
Peak GPU memory during final scoring247,684 MiB

The memory number is the final-scoring peak. Training is stochastic, so report exact solved-board counts and judge a small claimed improvement against the available uncertainty before deciding what to test next.

Work surface

Read /workspace/run.sh, training-board generation, rollout or data collection, advantage and reward computation, loss reduction, optimizer, checkpoint merge, and environment integration. Everything under /workspace is editable, including curriculum, on- or off-policy objectives, filtering, reward shaping, batching, optimization, schedule, and merge logic. These examples are illustrative, not exhaustive; they do not restrict any other change within the fixed task boundaries.

The candidate need not preserve GRPO, on-policy sampling, or the shipped training environment behavior. Formal replay must start from the fixed policy, use no external or hidden-final data, and export a merged checkpoint scored by the frozen Sokoban evaluator. Systems gains are useful only when the resulting checkpoint is evaluated under that unchanged final protocol.

Running experiments

Give every attempt its own output tree:

OUTPUT_DIR=/out/probe-name bash /workspace/run.sh
/opt/harness/fast_eval.sh /out/probe-name/checkpoints
/opt/harness/timer.sh

Preserve board-bank identities, trajectory lengths, action and reward distributions, filter statistics, update timing, throughput, peak memory, trainer state, merged-checkpoint hash, evaluator payload, and failures. Training and evaluation share the GPU lock. Stop a failed candidate on environment, merge, or load failure, non-finite loss, rollout collapse, action collapse, or repeated solve-rate regression. Stopping one candidate does not by itself end exploration.

Formal replay

Formal replay applies candidate.patch to a fresh /workspace, regenerates boards, and invokes exactly:

bash /workspace/run.sh

It does not inherit exploration rollouts, checkpoints, Ray state, caches, output directories, or shell exports.

Submission

A smoke or startup check proves only that the code can begin; it is not performance evidence.

Before ending exploration, wait for every training, evaluation, and background command and read its result, or stop it explicitly and record why. Preserve the best trustworthy candidate as a fallback while exploring other directions.

Before the final action, verify that the final source starts cleanly and can merge its checkpoint.

Before submitting, verify that the patch encodes the long formal recipe and checkpoint-saving policy described above.

When no further meaningful experiment can be completed and interpreted within the remaining budget, verify the final source and artifacts, then run /opt/harness/submit.sh as the final action. If no candidate is trustworthy, use /opt/harness/no_candidate.sh "reason". Deadline capture is recovery only and is not a normal submission path.