New empirical follow-up: Part 2 compares seven trainer configurations on Qwen3-14B and our DEX gym, with no-think and thinking holdouts, interactive reward curves, and downloadable data. It is a separate experiment from the 27B table below and does not establish a universal trainer ranking.
If you only ever train language models on toy math puzzles, reinforcement learning feels simple: did the model output 42? If yes, reward is 1. If no, reward is 0.
The moment you try to train an autonomous agent for real-world enterprise work, however, a single scalar reward is an absolute illusion.
In production, your agent has to juggle multiple competing, messy, non-commensurate priorities at the same time:
Here is the dirty secret of post-training: if you take these three scores and simply add them together into standard algorithms like PPO or vanilla GRPO, your training run will almost certainly tear itself apart. The loudest reward channel swallows the subtle ones, the agent learns to game the system, and up to a third of your expensive GPU batches end up generating zero gradients.
Start here
Understand how several distinct reward channels are combined into policy advantages, why simple weighted sums cause catastrophic scale dominance, how GDPO decouples channel normalization, and why hard constraints require enforcement rather than reward weights.
- Policy: The neural network that chooses the next token or action given the current context.
- Rollout: One complete candidate attempt at a task, including intermediate tool calls and final answers.
- Reward channel: An independent score assigned to an attempt by a specific evaluator (e.g. task success, latency, format).
- Advantage: A normalized scalar indicating how much better or worse an attempt was compared to its baseline.
- Scale dominance: When a high-variance reward channel mathematically drowns out subtle constraint metrics during joint normalization.
To understand why modern multi-reward agent post-training looks the way it does, we must trace how policy gradient estimators evolved:
Proximal Policy Optimization (Schulman et al., 2017) was the engine behind the original RLHF revolution. It uses an Actor-Critic architecture: the Actor generates the tokens, and a separate Critic network learns to predict the expected future reward from state s.
Why PPO Hurts in Practice:
DeepSeekMath (2024) introduced Group Relative Policy Optimization (GRPO), and it felt like a breath of fresh air. GRPO tossed the Critic network into the recycling bin.
Instead of asking a neural net to predict a baseline, GRPO samples a group of G candidate completions {o₁, o₂, ..., o_G} for the same prompt, scores them all, and normalizes advantages against the group’s own mean and standard deviation:
Instant win: GPU memory needs dropped in half! But when applied to multi-objective environments, vanilla GRPO made an innocent-looking mathematical assumption called Sum-then-Normalize:
As we will demonstrate below, this single line of math creates a devastating failure mode: Scale Dominance.
When you run GRPO on difficult engineering problems, you quickly discover the curse of Dead Groups. If a coding task is tough and all 8 candidate rollouts in a group fail with a syntax error, every single rollout gets a reward of 0.
When all rewards are 0, the group standard deviation is 0. That means the advantage is 0 across the entire group! Your expensive GPU cluster just spent 30 seconds generating tokens, and the gradient update is completely empty. In hard tasks, 30% to 40% of all training steps can be dead groups.
DAPO introduced dynamic sampling: during rollout scoring, if a group has zero variance, it immediately discards the dead data and pulls fresh active prompts until every training batch contains real learning signal, cutting wasted GPU cycles to near zero.

A group where all 8 attempts fail has zero variance and gives no gradient. DAPO's dynamic sampling replaces it with a prompt whose attempts differ.
Introduced in 2026 (arXiv:2601.05242) and integrated into modern libraries like TRL 1.7, GDPO fixes the fundamental multi-reward flaw of GRPO. Instead of adding raw scores together and then normalizing, GDPO enforces Normalize-then-Sum:
Every reward channel is normalized independently across the group first. Now, whether a reward channel naturally varies between [0, 1.0] or between [0, 0.05], both channels have a mean of 0 and a variance of 1. The small metric can no longer be bullied by the large one.

Sum-then-normalize (GRPO) lets the high-variance task reward drown out token efficiency; normalize-then-sum (GDPO) puts both channels on the same scale before weighting.
Suppose attempts A and B are correct, while C and D are wrong. Each also receives an efficiency score: B is both correct and efficient. C is wrong but very fast—returning an incorrect constant can be lightning-fast.
The figure below compares Sum, then normalize with Normalize each, then sum, and reports efficiency on a 0–1 and on a 0–100 scale:

One prompt, four attempts, equal weights. Summing raw scores lets a change of units (efficiency × 100) hand the top advantage to a wrong answer; normalizing each channel first does not depend on units.
The original post has an interactive version of this example.
Notice what happens under joint summation: when efficiency is reported on a 0–100 scale, the incorrect but fast candidate C suddenly receives a higher positive advantage than the correct solution! Under decoupled normalization, candidate B remains the standout winner regardless of unit scales.
To see why Sum-then-Normalize fails mathematically, look at the variance of a sum of two independent reward signals:
In an agent task:
When you sum them up, Channel 1 accounts for 99.7% of the total variance. When GRPO divides by σR, Channel 2 is effectively multiplied by zero. The model quickly learns a toxic heuristic: “I can spam 50 unnecessary tool calls and burn huge token budgets, because the efficiency penalty is mathematically invisible to my gradients!”
Under vanilla GRPO, distinct trade-offs get mashed into the exact same scalar score:
To vanilla GRPO, both candidates look identical (AA = AB). The policy receives zero gradient to choose the clean, compliant solution over the broken, unsafe one. With GDPO’s decoupled normalization, Candidate B’s excellence on the constraint channel stands out with a strong positive sub-advantage, guiding the model toward the true Pareto frontier.
We tested all four algorithms on an identical multi-objective agent gym in gft-studio, evaluating task success (R₁), token efficiency (R₂), and constraint compliance (R₃) on a 27B model:
| Method & Normalization | Critic Model? | Composite Pareto Reward | Task Success Rate | Constraint Violation Rate | Dead Group Rate |
|---|---|---|---|---|---|
| PPO (Actor-Critic Baseline) | Yes (27B Critic, GAE) | 0.312 ± 0.04 | 42.5% | 24.8% | N/A (GAE baseline) |
| GRPO (Vanilla Joint Sum) | No (Critic-Free) | 0.395 ± 0.03 | 51.2% | 29.4% | 34.2% (Dead Groups) |
| DAPO (Dynamic Refill + GRPO) | No (Critic-Free) | 0.448 ± 0.02 | 56.8% | 22.1% | < 3.0% (Refilled) |
| GDPO (Decoupled Norm + Safety) | No (Critic-Free) | 0.562 ± 0.02 | 63.4% | < 3.8% | < 3.0% (Refilled) |
When building reinforcement learning pipelines for real-world enterprise agents:
Applying this to your own models? We build private RL training environments with deterministic verifiers for teams' own workflows. Private training environments.
Originally published at g-ftech.com.