GRPO learns nothing from a problem it always gets right or always gets wrong. ReinforceAda keeps sampling those until it finds both, then trains on 4.
wai.methods.ReinforceAda().trainer(GRPOTrainer)
The math: https://t.co/p42BZ50wFT
@denisyarats i reproduced this at 4B. watch the thinking tokens: KL over them taught 38% of replies to cite a hint that wasn't in the prompt. answer-only KL fixed it. did you see hint leakage at GLM-5.2 scale?
https://t.co/Q4OVhxWtuL
I tried particle swarm optimization over LLM rollouts to rescue the prompts GRPO drops. basically where the agent did real shitty.
my thought was that the swarm would find reward signal. It does but no better than resampling rollouts
Recipe: https://t.co/kQo7tbTpeF
we perform post-training via multiple stages: SFT, RL, RFT, and on-policy self-distillation (OPSD). we use RFT and OPSD as the last stage of training to bridge the sim2real gap. RL environments, while very realistic, still lack the full diversity and complexity of the real-world use cases we receive from production.
in this research we describe how OPSD can be quite effective at learning from user feedback in follow-up conversations, as well as from tool call errors. we design a training method that combines RFT (forward KL/CE) and OPSD (reverse KL) to learn from both successful and problematic trajectories. for problematic trajectories, we construct hints from tool call errors or negative user feedback and use self-distillation to alleviate those errors.
in this specific work we post-trained GLM-5.2 with this approach and observed a substantial 21% reduction in tool call errors, as well as positive improvements in user satisfaction (not yet statistically significant, which we are currently addressing). it also made the trajectories more cost-efficient.
another reason i'm excited about this direction is that it seems to be a potential way of doing online/continual learning.
for more details, take a look at the blog: https://t.co/SLdt47WtQZ
one of our researchers found a strange instance of reward hacking today
the model explicitly reasons about being graded by an LM judge and adapts its behavior based on that
MiMo-V2.6's groupwise grading (GRS + GAR) is now in whileai (https://t.co/ouheMNRs79) as one object:
wai.GroupwiseGrading. Rubric rewards, advantage redistribution (eq. 3, mass conserved), a spread check before you spend GPU, and a TRL reward function.
We ran it twice on 4B models.
GAR on a multi-turn order-support agent, 40 steps: binary reward +15.4, GAR +12.7, paired diff -2.6 (-6.6 to 0.0).
Mixed groups fell to 7% by the end, so GAR had little to act on.
GRS on text-to-SQL, Qwen3-4B: -1.7 points, 95% CI -5.2 to +1.7. The rubric grader gave 0.93 to 1,472 passes. A constant multiplier is erased by group normalization.
Really simple:
wai.export_environment(data, "envs/my-agent", reward=my_verifier, runtime="openenv")
What does this do?
Takes an agent you simulated and graded, and turns it into a training arena a trainer can play against.
You get: a folder that starts a server. A trainer (TRL, torchforge, SkyRL) keeps asking it "give me a task", tries tool calls against a fake world, says "done", and gets a score.
LMK if you have any feedback!