Engineering deep dive · · 13 min read

Multi-Reward RL, Part 2: Benchmarking GRPO, DAPO, and CISPO on Unseen Tasks

Seven trainer configurations, two reasoning modes, and a CISPO + REPO-R hybrid. On our DEX gym, the training leader did not win holdout—and the untrained thinking baseline changed the interpretation. Explore the measured results, every reward curve, and the limits of this one-seed study.

Part 1 analyzed how PPO, GRPO, DAPO, and GDPO balance competing reward objectives in theory. In this follow-up empirical benchmark, we test the practical question engineering teams actually face: which trainer algorithm actually produces a model that solves brand-new, unseen problems?

We ran seven distinct RL algorithms on Qwen3-14B in our deterministic decentralized exchange (DEX) arbitrage gym across two reasoning regimes: No-think (direct execution) and Thinking-2048 (with chain-of-thought tokens enabled). The results revealed a severe cautionary tale for post-training teams.

The Generalization Trap: In thinking mode, CISPO achieved the highest training reward curve (0.8951 last-10 mean), yet its performance on frozen test tasks collapsed to 0.6068. Meanwhile, the raw Qwen3-14B base model—with thinking enabled and zero RL training—scored 0.6830. If you only look at your training curves, you will celebrate a run that is actively degrading your model.

The baseline changed the experiment.STARTING MODELNo-think0.385616 / 40 successfulSAME STARTING WEIGHTSThinking-20480.683037 / 40 successful50 TRAINING STEPSDAPO-refill · thinking0.710538 / 40 successfulMeasure this before crediting the trainer.+0.0275 above thinking base
Native holdout reward, not a success percentage. Each score comes from 40 sampled episodes across 10 held-out tasks. DAPO-refill had the highest observed thinking score; its refill mechanism did not trigger in this run.

1. What the agent does: The DEX gym

DEX stands for decentralized exchange. In our gym, the agent is presented with a frozen snapshot of automated market maker (AMM) liquidity pools: token reserves, exchange fees, gas prices, and routing constraints. The agent’s task is to find an optimal two-to-four pool arbitrage cycle and compute the exact input amount (amount_in_wei) that returns more of the starting asset after all fees and gas deductions.

WETH (Wrapped Ether) is the asset at both ends of the route. Consider an intuitive triangular arbitrage cycle: the model starts with WETH, swaps into USDC, swaps USDC into UNI, and swaps UNI back into WETH.

  • If the trade size is too small: The fixed Ethereum gas fees eat 100% of the price discrepancy, yielding a negative net return.
  • If the trade size is too large: The constant-product liquidity formula (\(x \cdot y = k\)) causes severe price slippage, collapsing the margin.
  • If the pool sequence is invalid: The simulated EVM contract reverts and the transaction fails immediately.
One gym. Different ways to learn from it.Frozen DEX snapshotpools · fees · gasWETH → … → WETHQwen proposes a routepool order + amountinspect, refine, finalizeVerifier replays itconstraints + profitthree reward channelsTrainer → weight updatethe part we swapNew trainer ≠ new reward.
The model emits structured tool calls. Independent code scores the resulting route. The trainer changes how those scores influence the model; no new gym reward component is required for CISPO, ADAPO or REPO-R.

The agent interacts using structured tool calls: inspecting pool reserves, proposing a pool route and trade amount, evaluating feedback, and finalizing. The verifier replays the transaction bytecode using a native Foundry / revm EVM execution engine. It scores the verified mathematical execution on the simulated blockchain, rather than trusting any self-reported text output by the model.

Training reward = R_native + 0.05 × R_efficiency + 0.20 × R_reliability

The composite training reward consists of three distinct channels:

  • Native Task Score (R_native ∈ [0, 1]): The verified net profit margin returned to the starting wallet after all pool fees and gas costs.
  • Execution Efficiency (R_efficiency ∈ [0, 1]): Rewards solving the task compactly in 2–3 tool turns instead of exhausting all 6 turns: max(0, 1 − tool_steps / 6).
  • Reliability Gate (R_reliability ∈ {-1, +1}): +1.0 if the transaction executed cleanly without syntax errors or contract reverts; −1.0 if the call failed.

2. What we held fixed: The training contract

To isolate the impact of the RL trainer algorithms, every other variable was strictly controlled:

  • Model and Quantization: Qwen3-14B (revision 40c06982…), quantized NF4 weights with BF16 compute, LoRA rank 32, alpha 64.
  • Compute Hardware: One dedicated NVIDIA RTX PRO 6000 Blackwell 96 GB per training run, Hugging Face generation, fused SDPA attention, CUDA graphs disabled.
  • Optimizer Schedule: Fixed seed 42, learning rate 1e-5 with linear decay, 50 optimizer steps, group size 4, eight completions per fresh rollout batch, two policy updates per rollout. Curriculum learning disabled.
  • Reasoning Modes:
    • No-think: Chain-of-thought thinking disabled; max 1,024 generated tokens per tool turn (max 8,192 trajectory cap).
    • Thinking-2048: Model allocated up to 2,048 thinking tokens inside a 3,072-token turn budget (max 22,528 trajectory cap).
  • Frozen Holdout Evaluation: Evaluated on the final step-50 checkpoint. 5 task families × 2 held-out seeds × 4 samples = 40 episodes across 10 distinct unseen scenarios. Untrained starting checkpoints evaluated identically in both reasoning modes.

3. Trainer features: Seven algorithm bundles

In modern post-training, an RL algorithm is not a monolithic block. It is a bundle of three distinct modular decisions: which rollouts enter the training batch, how multiple rewards are combined into policy advantages, and how that advantage scales policy gradient updates.

Architectural choices across the seven benchmarked trainer configurations. PPO was excluded due to its separate Critic VRAM requirement.
ConfigurationLoss / averagingReward → advantageDynamic samplingControl
GRPOClipped surrogate; sequence-level averagingJoint reward → group normalizationOffMonitor only
DAPOClipped surrogate; token-level averagingJoint reward → group normalizationOffFixed asymmetric clip: 0.20 / 0.28
DAPO-refillSame DAPO lossSame as DAPOOn; at most 2 refill roundsSame fixed clip
GDPODAPO loss in this implementationNormalize each reward, then combineOffFixed asymmetric clip
CISPODetached, capped importance weightsJoint reward → group normalizationOffImportance-weight cap 1.20
DAPO + ADAPODAPO lossSame as DAPOOffEntropy feedback adjusts upper clip
DAPO + REPO-RDAPO lossToken-level advantage shapingOffEntropy feedback controls ζ
CISPO + REPO-R w5CISPO loss; cap stays 1.20Token-level advantage shapingOff / separate refill arm5-step target window; ζ ≥ 0

GDPO decouples reward-channel normalization before combining advantages.CISPO replaces ratio clipping with direct importance weight clipping (capped at 1.20).ADAPO and REPO-R introduce adaptive entropy control: ADAPO adjusts clipping bounds based on policy entropy, while REPO-R shapes token-level advantages.DAPO-refill activates replacement sampling when a rollout group exhibits zero reward variance, preventing zero-gradient wasted batches.

4. Full results: Train vs. holdout test

FINDING 01

The CISPO Inversion Trap

Train: 0.8951 → Test: 0.6068

CISPO dominated training reward curves but collapsed on held-out tasks. Aggressively maximizing surrogate importance weights caused policy overfitting.

FINDING 02

Thinking Baseline Beats RL

Raw base: 0.6830 (37/40)

Untrained Qwen3-14B with 2,048 thinking tokens beat 4 out of 7 trained models. Always benchmark against an untrained thinking baseline.

FINDING 03

DAPO Leads Generalization

No-think: 0.6467 · Think: 0.7105

DAPO delivered the highest native holdout score in no-think mode (0.6467, 39/40), and DAPO-refill led thinking mode (0.7105, 38/40).

FINDING 04

The 5× Compute Tax

13.5 hrs vs 2.6 hrs

Thinking steps took 4.5–5.9× longer wall-clock time. You must balance the evaluation gain (+0.0275) against a 5× compute budget increase.

No-thinkThinking-2048Dashed vertical lines = untrained base model
0.00.20.40.60.8base 0.3856base 0.6830Starting model0.38560.6830GRPO0.64240.6798DAPO0.64670.6703DAPO-refill0.58390.7105GDPO0.62450.6602CISPO0.61900.6068DAPO + ADAPO0.63320.6250DAPO + REPO-R0.57240.6461Native holdout reward · higher is better (dashed lines = starting model)
Actual coordinates, straight connecting lines, no smoothing. Each dot is one run. Lines connect reasoning modes; they are not confidence intervals. The same 40-episode evaluation design was used in both modes.

No-think mode: Every trained model beats the starting baseline

No-think mode · snapshot September 14, 2026. “Train last-10” averages the final 10 fresh rollout rewards. “Holdout native” is the strict verifier score on unseen test scenarios.
ConfigurationStepsTrain meanTrain last-10Holdout nativeSuccessesStep, sStep-hours
Starting modelbaseline00.385616/40
GRPO50/500.70380.77290.642438/401772.46
DAPOtop holdout50/500.65190.71420.646739/401762.45
DAPO-refill50/500.65640.75850.583934/402243.11
GDPO50/500.64880.77270.624536/401672.32
CISPO50/500.64860.74860.619036/401642.27
DAPO + ADAPO50/500.66940.75250.633237/401682.33
DAPO + REPO-R50/500.63730.70570.572431/401562.16

Without reasoning tokens, post-training delivers an unambiguous leap forward. The untrained base model scored only 0.3856 (passing 16/40 episodes).DAPO achieved 0.6467 (39/40 successes), closely followed by GRPO at 0.6424. Every single trained configuration substantially outperformed the starting model.

Thinking-2048 mode: The starting model sets a high bar

Thinking-2048 mode · snapshot September 14, 2026. “Train last-10” averages the final 10 fresh rollout rewards. “Holdout native” is the strict verifier score on unseen test scenarios.
ConfigurationStepsTrain meanTrain last-10Holdout nativeSuccessesStep, sStep-hours
Starting modelbaseline00.683037/40
GRPO50/500.83620.88240.679838/4092912.90
DAPO50/500.80360.79160.670338/4093813.02
DAPO-refilltop holdout50/500.82750.85640.710538/40101614.10
GDPO50/500.81900.82530.660235/4093813.03
CISPOdiverged50/500.83880.89510.606833/4090712.60
DAPO + ADAPO50/500.81850.88150.625034/4088712.32
DAPO + REPO-R50/500.82850.82060.646134/4092212.81
CISPO + REPO-R w550/500.81650.83320.624334/4093713.01
CISPO + REPO-R w5 + refill
partial
41/500.79080.830291210.39

When chain-of-thought thinking tokens are enabled, the starting model achieves 0.6830 straight out of the box (passing 37/40 episodes). Only DAPO-refill surpassed the untrained model on native holdout reward (**0.7105**, an incremental gain of +0.0275). GRPO (0.6798) and standard DAPO (0.6703) finished slightly below the base model’s score despite high success rates (38/40), demonstrating that success counts and solution quality answer different questions.

5. Explore the curves: Rollout telemetry

Each 50-step run generated 25 fresh rollout reward checkpoints (even optimizer steps update on rollouts generated on odd steps). Use the interactive explorer below to inspect and compare any two trainer configurations across the 50-step trajectory:

CISPO · mean 0.8388 · 25 batchesCISPO + REPO-R w5 · mean 0.8165 · 25 batches
-0.200.000.250.500.751.001.2511020304050CISPO · step 1: 0.708017CISPO · step 3: 0.953178CISPO · step 5: 0.842710CISPO · step 7: 0.833925CISPO · step 9: 0.716074CISPO · step 11: 0.787146CISPO · step 13: 0.720173CISPO · step 15: 0.962763CISPO · step 17: 0.699492CISPO · step 19: 0.883526CISPO · step 21: 0.776956CISPO · step 23: 1.013888CISPO · step 25: 0.555751CISPO · step 27: 0.765734CISPO · step 29: 0.798723CISPO · step 31: 1.093313CISPO · step 33: 0.884916CISPO · step 35: 0.870928CISPO · step 37: 0.937840CISPO · step 39: 0.973666CISPO · step 41: 0.800041CISPO · step 43: 0.892790CISPO · step 45: 0.981199CISPO · step 47: 0.566612CISPO · step 49: 0.949583CISPO + REPO-R w5 · step 1: 0.708017CISPO + REPO-R w5 · step 3: 0.685857CISPO + REPO-R w5 · step 5: 0.740580CISPO + REPO-R w5 · step 7: 0.708557CISPO + REPO-R w5 · step 9: 0.756640CISPO + REPO-R w5 · step 11: 0.897562CISPO + REPO-R w5 · step 13: 0.812017CISPO + REPO-R w5 · step 15: 0.807996CISPO + REPO-R w5 · step 17: 0.848704CISPO + REPO-R w5 · step 19: 1.009395CISPO + REPO-R w5 · step 21: 0.928267CISPO + REPO-R w5 · step 23: 1.006660CISPO + REPO-R w5 · step 25: 0.658180CISPO + REPO-R w5 · step 27: 0.781008CISPO + REPO-R w5 · step 29: 0.731481CISPO + REPO-R w5 · step 31: 0.989723CISPO + REPO-R w5 · step 33: 0.947463CISPO + REPO-R w5 · step 35: 0.748010CISPO + REPO-R w5 · step 37: 0.551544CISPO + REPO-R w5 · step 39: 0.685541CISPO + REPO-R w5 · step 41: 0.905815CISPO + REPO-R w5 · step 43: 0.938511CISPO + REPO-R w5 · step 45: 0.782173CISPO + REPO-R w5 · step 47: 0.881300CISPO + REPO-R w5 · step 49: 0.901488Optimizer step · fresh rollout on odd steps only
Logged composite reward; fixed vertical scale; no smoothing. Even optimizer steps reuse the previous rollout and add no new reward point. Refill rows can average several generation rounds, so they do not measure exactly the same batch population as ordinary rows. Run IDs: 1789312185 and 1789375757.

Notice how CISPO’s pink curve rapidly ascends toward 0.90 in thinking mode, while DAPO climbs more conservatively to 0.75. That gap highlights the danger of surrogate reward optimization: in multi-step reasoning, an optimizer that learns to satisfy auxiliary efficiency and reliability bonuses can easily compromise core task accuracy.

6. Time and memory: The cost of thinking

Test-time reasoning comes with a heavy computational invoice. Across all seven algorithms, an average thinking step took 4.5–5.9× longer than a no-think step. Fifty training steps required approximately 12.3–14.1 hours of GPU execution in thinking mode, compared to 2.2–3.1 hours in no-think mode.

Peak VRAM consumption during thinking-mode training on NVIDIA RTX PRO 6000 Blackwell 96 GB. Memory measured in GiB (binary).
ConfigurationPeak allocated, GiBPeak reserved, GiB
GRPO69.176.9
DAPO66.574.0
DAPO-refill68.576.3
GDPO68.376.1
CISPO70.077.8
DAPO + ADAPO71.879.6
DAPO + REPO-R68.075.5
CISPO + REPO-R w566.974.4
CISPO + REPO-R w5 + refill (partial)70.377.8

Memory peaks remained stable at ~30.6 GiB allocated and ~34.8 GiB reserved across all algorithms, well within the 96 GB VRAM budget of our Blackwell GPU. The primary operational bottleneck is wall-clock rollout latency, not GPU memory.

7. Combining features: The CISPO + REPO-R hybrid

Can we rescue CISPO’s optimization speed while fixing its generalization collapse? We tested a hybrid architecture: using CISPO’s capped importance weights (cap 1.20) combined with REPO-R’s token-level advantage shaping.

To stabilize entropy dynamics, we introduced a nonnegative window-5 controller: the first 5 optimizer steps record entropy drift without intervention (ζ = 0). Once calibrated, the entropy control strength is constrained strictly to 0 ≤ ζ ≤ 0.05.

The completed hybrid achieved 0.6243 native holdout reward and 34/40 successes, outperforming standalone CISPO (0.6068, 33/40). While this +0.0175 lift confirms that advantage shaping mitigates policy collapse, the hybrid still trailed the raw untrained thinking baseline (0.6830).

Enabled is not the same as exercised

In no-think mode, DAPO-refill triggered 19 replacement rollout rounds. In thinking mode, DAPO-refill triggered zero refills—the model never produced an all-identical reward batch. Therefore, we cannot attribute the thinking DAPO-refill lead (0.7105) to the refill mechanism itself; it functioned identically to standard DAPO under that seed.

8. What to test next: Next iteration & replication

Based on these findings, our production post-training recommendations for multi-step reasoning workflows are:

  1. In No-Think Mode: Standard DAPO and GRPO are clear, cost-effective winners. They nearly double task accuracy in 2.5 hours of compute.
  2. In Reasoning Mode: Always evaluate your untrained base model with reasoning enabled before declaring training success. DAPO-refill is the primary candidate for replication.
  3. Never Pick a Checkpoint by Training Curves: CISPO proved that soaring training curves can mask test-set degradation. All promotion decisions must be gated by frozen holdout benchmarks.
  4. Multi-Seed Replication: Expand seed sweeps (seeds 43, 44) across novel scenario families to confirm that DAPO-refill’s +0.0275 edge holds across market distributions.

Evidence and method references

All raw empirical telemetry is publicly available. The public JSON export contains complete run manifests, SHA256 hashes, all 791 recorded optimizer steps, 396 fresh reward logs, and 680 evaluated holdout episodes. The Markdown companion provides searchable per-step records.

Foundational algorithm publications: DeepSeekMath / GRPO; DAPO; GDPO; MiniMax-M1 / CISPO; ADAPO and REPO-R.