Preference tuning is how you train a model on “this one, not that one” instead of “copy this.” It grew up in chatbots, as RLHF and then DPO and GRPO, and it has quietly become the data engine behind Meta’s SAM 3D. This post follows a single human verdict the whole way: from a chatbot A/B click to a verdict on a reconstructed 3D shape. Written for engineers who know deep learning and fine-tuning but not much reinforcement learning. About a 30-minute read.

1. The thing you can’t demonstrate

Supervised fine-tuning teaches by example. You hand the model a prompt and the answer you want, and it learns to copy. That works as long as you can write the answer down.

For a lot of what we now ask models to do, that gets expensive fast. Someone can write an acceptable reply to “explain recursion to a nervous beginner,” but nobody can author the best one. Nobody can paint the one correct image for “a cozy reading nook, golden hour.” Nobody can hand-model the exact 3D mesh of the chair in a photo. Imitation still works here, and every system in this post uses it, but each demonstration costs an expert’s time and none of them tells the model which of two attempts you would rather have. “Good” past that ceiling is a matter of taste, and taste doesn’t come as a worked example.

But you can do something easier. Show a person two answers and they will tell you which is better. They can’t write the perfect summary, but they can point at the better of two summaries in a second. That gap, between what people can produce and what people can judge, is the whole reason preference tuning exists. It is a way to train on judgments instead of demonstrations: on “this one, not that one.”

IMITATION (SFT)prompt: explain recursion to a beginner”a function that calls itself,with a base case to stop”must be authored by handmodel copiesneeds an authored answer to imitatePREFERENCEprompt: explain recursion to a beginner”mirrors facing mirrors, until one stops”“self-referential computation”needs only a verdict: this one, not that one
Fig 1. Supervised fine-tuning needs an answer good enough to copy, which someone has to sit down and write. Preference tuning needs only a verdict between two attempts at the same prompt, which is far easier to get.

The verdict is the unit we are going to follow. In a chatbot it is a labeler clicking the better of two replies. By the end of this post it is an annotator looking at a 3D shape a model reconstructed from a photo and rating how good it is. Same verdict, same math underneath, worlds apart in what it builds. The trip from one to the other is the post.

Act 1 — From a click to a loss

How a single “A beats B” becomes a number a model can train on, and the two ways the field learned to use it.

2. Turning a verdict into a number

A raw verdict is binary: A won, B lost. Gradient descent can’t do much with one bit. To train on preferences you need to turn “A beats B” into a smooth quantity you can push on.

The trick is older than deep learning. In 1952 the statisticians Ralph Bradley and Milton Terry wrote down a model for exactly this: give each item a hidden score, and say the probability that A beats B is the logistic function of the gap between their scores. The logistic function, also called the sigmoid, is just the S-shaped curve in Fig 2: hand it any score gap, however large or negative, and it squashes it into a probability between zero and one. If the scores are equal, the gap is zero and it returns a coin flip. As A’s score pulls ahead, the probability A wins slides up toward one; as it falls behind, down toward zero.

P(A wins)00.510equal scores, a coin flipbig gap, near-certainscore gap (A favored)B favored
Fig 2. The Bradley-Terry model turns a verdict into a probability: P(A beats B) is the sigmoid of the gap between their hidden scores. Equal scores give a coin flip; a wide gap is nearly certain. This sigmoid is the part doing the work inside every preference loss in this post.

That single curve is the seed of everything that follows. Every method here that turns a verdict into a training signal, the reward model in the next section and the DPO family after it, is underneath a way of assigning scores so that the better answer gets the higher one, with the Bradley-Terry sigmoid converting the score gap into “how confident are we that this was the right call.” (The policy-gradient methods later in the post, GRPO and its successors, sit downstream of a reward and have no sigmoid in them; that distinction matters and section 5 comes back to it.) Hold onto the shape: small gap, near 50/50; large gap, near certain. When we get to the loss functions, that sigmoid is the part doing the work.

3. The first recipe: RLHF and PPO

The recipe that made preference tuning a standard tool was InstructGPT, OpenAI’s instruction-following work (building on an earlier clean result, Stiennon et al’s reward-model-beats-the-metric finding on summarization in 2020). Its method, reinforcement learning from human feedback, has three stages. Because the rest of the post leans on every piece of it, here is the whole vocabulary, one rung at a time.

Start with the SFT model: a base model fine-tuned on demonstrations. This is the model we improve, and, importantly, the model we keep measuring everything against later. Call it the reference.

Stage two trains a reward model: a learned judge. You collect comparisons, where a labeler picks the better of two model outputs, and you train a network to predict those picks. It is the human’s taste, distilled into something you can call cheaply, at whatever scale training needs. Under the hood it scores each output and fits the Bradley-Terry sigmoid from the last section to the human’s choices.

Stage three is the reinforcement learning. The model produces answers (a rollout, just the model trying things), the reward model scores them, and you nudge the model toward higher-scoring answers. Two more pieces make this work. A critic is a second network that guesses, for a half-finished answer, how good the final score is likely to be; the advantage is then how much better an answer did than the critic expected, the extra credit beyond the baseline. And a KL leash: a penalty for drifting too far from the SFT reference. KL is the Kullback-Leibler divergence, a standard measure of how far apart two probability distributions are, and here it measures how far the model’s word-by-word probabilities have moved from the reference’s, so penalizing it is what keeps the model tethered. You need the leash because a model chasing reward with none will find some degenerate text the reward model loves and normal readers hate. InstructGPT says it plainly: “we add a per-token KL penalty from the SFT model at each token to mitigate over-optimization of the reward model.” The optimizer that takes the step is PPO, short for Proximal Policy Optimization, a standard reinforcement-learning algorithm. “Proximal” is the whole idea: for each token it samples, the objective clips the ratio between the new model’s probability for that token and the old model’s, which, as the PPO paper puts it, “removes the incentive for moving” that ratio outside a narrow interval. Nothing forcibly holds the weights in place; the reward for wandering is simply cut off.

KL leash: stay near the SFT referencehuman picks A > B1SFT modelthe reference2reward modela learned judge3policy (PPO)rollout, score, stepscores answerscritic: the baseline
Fig 3. RLHF in three stages: fine-tune (SFT), train a reward model on human comparisons, then improve the policy with PPO, kept on a KL leash to the SFT reference. The reward model and the critic are the two extra networks the next methods set out to remove.

It worked, and the headline result is still striking: a 1.3B-parameter InstructGPT model’s answers were preferred over those of 175B GPT-3, a model more than a hundred times larger. On that comparison the preference-tuned small model simply won.

It also cost a lot. You are training two extra networks, a reward model and a critic (the critic about as big as the policy), and sampling fresh rollouts every step. And the whole RL loop is fiddly enough that the people who came next described their main selling point as not having to do it.

4. The shortcut: DPO

Direct Preference Optimization came from a sharp observation in its 2023 paper, captured in its subtitle: your language model is secretly a reward model. The full RLHF objective, maximize reward while staying near the reference, has a known closed-form optimum, and you can run the algebra backwards. When you do, the reward drops out and you are left with a quantity the model already computes: the log-ratio of how likely the model is to produce an answer versus how likely the reference is.

Unpack that phrase, because the whole method rests on it. The ratio is just “how many times more likely”: if the model is twice as likely as the reference to produce the answer, the ratio is two; if half as likely, the ratio is one-half. Taking the log of it turns that into a tidy signed number, zero when the two agree, positive when the model favors the answer more than the reference does, negative when less (the ratio of two becomes about +0.7, the one-half becomes about −0.7). So the log-ratio is a single number that says, in one direction or the other, how far the model has moved away from the reference on this particular answer.

Here is what falls out. The implicit reward of an answer is β (beta, a single tuning knob we look at on its own in a moment) times that log-ratio, written log(π/π_ref), plus a constant that depends only on the prompt and cancels the moment you compare two answers to it, where π (pi) is the probability the model you are training assigns to the answer and π_ref is the frozen SFT reference’s probability. So you do not need a separate reward model, and you do not need the RL loop at all. You take your preference pairs, drop them straight into the Bradley-Terry sigmoid using that implicit reward, and train with one ordinary classification loss. The DPO paper’s words: it works “without explicit reward modeling or reinforcement learning,” and is “computationally lightweight, eliminating the need for sampling from the LM during fine-tuning or performing significant hyperparameter tuning.”

RLHFpolicyreward modelcritictwo extra networks + a sampling loopDPOpreference pair(chosen, rejected)DPO lossmodelone classification step, no reward model, no loop
Fig 4. RLHF runs a policy, a reward model, and a critic in a sampling loop. DPO proves the optimal policy is already an implicit reward model, so it collapses the whole apparatus into a single classification loss on the preference pairs.

Written out, the loss is a single line, and every term earns its place. Fig 5 lays it out with each piece labeled. The outer sigmoid is the Bradley-Terry curve from section 2; inside it sits the difference of two log-ratios, how much more the model favors the winning answer than the frozen reference does, minus the same for the loser. Push that difference up and the loss falls. The frozen SFT model appears in both terms as the yardstick you are measured against. And β is a knob we need to look at on its own.

L = −log σ( β · ( r(win)r(lose) ) )where r(y) = log[ π(y) / π_ref(y) ] is the log-ratio; β·r is the implicit rewardσ: the Bradley-Terry sigmoid from Fig 2.β: reference-leash strength. High β keeps the model near π_ref; low β lets it drift.r(win): how much more the model favors the winner than the frozen reference does.r(lose): the same quantity, for the loser. Push r(win) above r(lose) and the loss falls.π_ref is the frozen SFT model. It never trains; it is only the yardstick.
Fig 5. The whole DPO loss in one line. An answer’s implicit reward is β times its log-ratio: how much more probability the model puts on it than the frozen reference does. The loss just asks the Bradley-Terry sigmoid to rank the winner above the loser.

4½. The β leash, and which way it points

β is the same leash from RLHF, now living inside the DPO loss, and it is easy to get backwards, so here it is carefully. β controls how far the model is allowed to drift from the reference. A high β is a strong leash: the model stays close to the SFT model and moves only a little. A low β is a loose leash: the model is free to wander far from the reference to fit the preference data harder, and with it comes the risk of overfitting the comparisons and degrading.

The direction surprises people because “higher” sounds like “more aggressive.” It isn’t. The implicit reward is β times the log-ratio, so a higher β means even a small change in the model’s probabilities produces a large reward signal, and the model reaches the same preference margin with less movement. More β, less drift. The DPO paper states it as “β is a parameter controlling the deviation from the base reference policy.”

LOW β (0.02)MEDIUM β (0.1)HIGH β (0.5)refmodelloose leashdrifts far, can overfitrefmodelbalanceda common settingrefmodeltight leashhugs reference, moves little
Fig 6. The β dial, in the direction that trips people up. The three values are illustrative; the DPO paper’s own experiments use 0.1 and 0.5. A low β is a loose leash: the model wanders far from the SFT reference to fit the preferences, and can overfit. A high β is a tight leash: the model barely moves. More β means less drift.

5. Dropping the critic: GRPO

DPO removed the reward model and the RL loop. The other big simplification went the other way, keeping the RL loop but cutting the critic, and it is worth being precise about where it sits. Group Relative Policy Optimization, introduced in DeepSeek’s DeepSeekMath, is not a way to turn a verdict into a reward. It assumes a reward already exists and is a cheaper way to estimate the advantage from section 3.

Recall the critic: a second network, about the size of the policy, whose only job is to guess the baseline an answer should beat. GRPO deletes it. Instead of learning a baseline, it samples a whole group of answers to the same prompt, scores them all, and uses the group’s average score as the baseline. An answer’s advantage is then how much it beat its siblings, divided by how spread out their scores were so every group lands on a comparable scale. (That last division looks harmless here; section 13 shows where it bites.) The DeepSeekMath figure caption is blunt about the payoff: GRPO “foregoes the value model, instead estimating the baseline from group scores, significantly reducing training resources.”

reward sourcereward model OR rule checkPPOpolicycriticestimates the baselinea second network, policy-sizedGRPOpolicy0.80.60.40.2group mean= the baselinesample a group; advantage = (score − mean) / spreadno critic
Fig 7. PPO learns a separate critic, about the size of the policy, just to estimate the baseline an answer should beat. GRPO deletes it: sample a group of answers, and the group’s mean score is the baseline. Both sit downstream of whatever produces the reward.

Because GRPO sits downstream of the reward, the reward can be anything. In DeepSeek-R1, the reasoning model GRPO trained (peer-reviewed in Nature in 2025), the reward is often a plain rule: did the math answer come out correct? No human preferences, no reward model, just a checker. That is the cleanest illustration of the split this post keeps drawing: where the reward comes from is one decision, and how you estimate advantage from it is a separate one. Bradley-Terry and DPO are about the first. GRPO is about the second.

6. Where the verdict is not enough

It would be easy to read this far and conclude that preference tuning is a clean win that keeps getting cleaner. It isn’t, and a post that pretended otherwise would be lying by omission. Three honest caveats.

DPO is not strictly better than the RL loop it replaces. A careful 2024 study found that “DPO may have fundamental limitations” and that PPO-style RLHF, run properly, “is able to surpass other alignment methods in all cases” on their benchmarks, including the hard ones. The shortcut is cheaper and often good enough, not universally superior.

Which method wins is not even fixed. A 2025 analysis showed that “RLHF, DPO, or online DPO can outperform one another depending on type of model mis-specifications,” and that when the reward is sparse, the two-stage RLHF route can need far fewer samples than DPO to find a good model. The right answer is “it depends on your setup,” which is unsatisfying and true.

And GRPO has its own pathologies. One 2025 paper identified an optimization bias that “artificially increases response length (especially for incorrect outputs),” the model learning to ramble because the math rewards it; another found GRPO “vulnerable to reward hacking, optimizing only one of the objectives at the cost of the others.” None of this sinks preference tuning. It just means the verdict is a powerful signal, not a magic one.

Act 2 — The crossover to vision

The same verdict, the same loss, now pointed at pixels and shapes instead of tokens.

7. The same verdict, now on images

Everything so far has been about language, where an answer is a sequence of tokens and the model assigns each one a probability. The DPO loss leaned hard on that: it needs the model’s likelihood of the winning answer and the losing answer, the π(win) and π(lose) in the equation. An image generator does not produce tokens with neat probabilities. So how do you plug a picture into a loss built for log-probabilities?

The bridge is Diffusion-DPO, and it is worth walking in steps because the jump is where intuition usually breaks.

  1. DPO needs a likelihood ratio for the winning and losing outputs.
  2. An image generator has no token log-probs to supply one.
  3. But a diffusion model does expose a stand-in for likelihood: the training objective itself, the denoising loss that measures how well the model reconstructs an image along its noising trajectory. You cannot read off the exact probability a diffusion model assigns to a finished image, the way you can multiply token probabilities for a sentence, but you can compute a quantity that bounds it. The denoising loss is the computable piece; flip its sign and you have the ELBO (evidence lower bound), a number that stays underneath the log-likelihood you wish you could evaluate. Driving the denoising loss down pushes that bound up, which is all the loss needs.
  4. Diffusion-DPO puts that denoising term where DPO’s token log-likelihood sat. Getting there is more than a substitution, since the paper has to bound an objective defined over whole noising paths before a tractable difference of denoising losses falls out, but the loss you end up training on has the shape of the DPO loss with a denoising term inside it.

The skeleton, winner over loser measured against a frozen reference, survives intact. What the loss actually pushes on is the gap: the winner’s trajectory has to gain on the reference by more than the loser’s does. Neither image has to move in an absolute direction on its own.

NOISEIMAGEdenoising trajectory →x+ winner: gains on the referencex− loser: loses groundreferenceSame skeleton as Fig 5’s r(win) − r(lose).Only r changed: denoising loss, not token log-probs.
Fig 8. Diffusion-DPO keeps the shape of the DPO loss, winner over loser against a frozen reference, with the token log-ratio replaced by a bound on the diffusion model’s trajectory log-likelihood (the ELBO). Drawn here as the winner rising above the reference and the loser falling below it; what the loss enforces is the gap between the two, not each one’s direction.

It works in practice. Diffusion-DPO reports training on 851,000 crowdsourced preference pairs drawn from the Pick-a-Pic dataset of human choices over generated images, and tuned Stable Diffusion XL until it “significantly outperforms” the base model on human preference for both visual appeal and prompt-faithfulness. It is the same kind of generator that image generators are quietly becoming the best vision models and the generative vision stack put at the center of perception; preference tuning is how you give that generator taste.

One subtlety worth flagging, because it is where the vision story stops being a copy of the language story. The plain sigmoid loss, designed for the clean “this token, not that token” world, turns out to be a slightly awkward fit for the smooth, regression-like job of generating an image. A 2026 paper on flow-matching generators argues that standard DPO’s margin-maximization behavior “is fundamentally ill-suited for the regression nature of diffusion and flow-matching models.” The verdict still crosses over. It just doesn’t land quite the same way.

8. A cheap verdict beats authoring the answer

Step back from the loss and look at the data. The expensive part of a vision dataset has always been authoring the target: tracing a segmentation mask by hand, modeling a 3D mesh, labeling every pixel. The cheap part is judging a model’s attempt. And that asymmetry is the whole reason preference tuning matters for vision data, not just vision models.

This data-collection idea is older than the preference-tuning machinery, and it is worth being clear that it is a separate idea: not a training method like DPO, just a cheaper way to gather labels. It showed up in plain 2D segmentation, with no reinforcement learning anywhere in it. A 2022 study replaced mask-drawing with annotation “where only point-wise yes/no questions are answered,” and scaled it to 22.6 million point labels across 4,171 classes. The annotators never drew a boundary; they answered a model’s yes/no questions. That is the same shape as the verdict from Act 1, “this one, not that one,” now pointed at building a dataset instead of training a model directly: don’t make the human author the answer, make the model propose and the human give a cheap verdict. Hold onto that distinction, because the next section wires the two back together.

AUTHOR THE TARGETexperthand-built 3D meshslow, expert, expensiveJUDGE A PROPOSALmodelproposed meshfast, generalist, cheapthe verdict is the part you can collect at scale
Fig 9. The expensive half of a vision dataset is authoring the target. The cheap half is judging a model’s proposal. SAM 3D’s bet is to ask annotators to verify, rank, or rate model-generated meshes rather than build one, which Meta calls a more accessible skill, with only the hardest cases routed to expert 3D artists.

This is the shape that segmentation models like the ones in the unified vision stack are built to consume, and it is exactly the bet SAM 3D makes for 3D. As the team puts it in Meta’s SAM 3D writeup, “verifying or ranking meshes is a more accessible skill” than building them, so the team “can thus scale by building a data engine asking annotators to rate multiple options generated by a suite of models in the loop.” In her CVPR 2026 talk on the work, Georgia Gkioxari put the annotator’s job even more bluntly: they only say yes or no. A non-expert can do it, which is the point: the verdict is cheap enough to collect at the scale a foundation model needs.

9. The model-in-the-loop data engine

A cheap verdict is only powerful if you wire it into a loop. The loop is the idea, going back to the original Segment Anything model, that the model and the dataset can improve each other. The model proposes labels; humans verify or correct them; the corrected labels retrain the model; the better model makes better proposals, so the humans correct less and approve more. SAM’s loop produced over 1 billion masks across 11 million images, a dataset no team could have drawn by hand.

model proposeshuman / AI verifies,corrects, ratesdataset improvesmodel retrainsDATAENGINE
Fig 10. The data engine, in its generic form. Each turn of the loop makes the model better, so its proposals get better, so the humans correct less and approve more. By 2026 the verify step is itself partly automated: SAM 3 fine-tunes models into AI verifiers at near-human accuracy.

By 2026 the loop has a new wrinkle: the model does some of the verifying too. SAM 3 uses multimodal language models as “AI annotators” and then fine-tunes them into “AI verifiers that achieve near-human accuracy,” which more than doubles annotation throughput over a human-only pipeline. Models now sit on both sides of the loop: SAM 3 proposes the masks, language models propose the concepts to label, and separately fine-tuned models check the results. The verdict didn’t disappear. It got partly automated.

10. The climax: SAM 3D

Now put every piece together, because SAM 3D is where they all meet. The problem is a data gap with no easy way around it: SAM 3D reconstructs the full 3D shape, texture, and pose of an object from a single ordinary photo, and there is no way to crowdsource 3D ground truth for real photos. You cannot ask a worker to hand-model the chair in a snapshot. The team calls its answer breaking the 3D “data barrier.”

Their answer is the whole post in one system. Start with synthetic pretraining, a flood of computer-generated 3D scenes, the way you might pretrain on cheap data before fine-tuning on the real thing, which is the same instinct behind picking the right pretraining recipe for out-of-distribution data. Then align the model to reality using the cheap verdict: the team collects training samples and preference data from humans and uses them, in the paper’s words, “in both supervised finetuning (SFT) and direct preference optimization (DPO).” That is the same preference-optimization pattern from section 4, adapted to a 3D generator the way Diffusion-DPO adapted it to images, with the winning mesh as the chosen output and a worse one as the rejected. And it is a loop: that alignment step “can be repeated,” each round’s better model generating better mesh proposals for the next round of cheap human verdicts.

shape preference (Elo)retrieval baselinepretrainr1r2r3r4r5r6data-engine rounds
Fig 11. Schematic only. SAM 3D reports that shape quality climbs as the data engine runs more rounds, crossing the retrieval baseline. The shape of the climb is real; the per-round values are never numerically labeled or tabulated, so no numbers are shown here.
SYNTHETIC PRETRAINREAL-WORLD ALIGNMENTsyntheticpretrainSFTDPOon verify/rank/rate verdictsSAM 3D modeldata engine: repeat the alignmentat least 5:1objects + scenesEvery mechanism in this post, in one system:cheap pretraining, then the verdict (DPO) on a loop,until a 3D model beats prior work by 5:1.
Fig 12. SAM 3D, assembled. Synthetic data pretrains the model; cheap human verdicts then align it through SFT and DPO; the data engine repeats the alignment as the model improves. The result wins head-to-head human preference at least 5:1 over prior work on real-world objects and scenes.

The engine ran on almost 1 million images and produced roughly 3.14 million meshes, and the model it trained wins decisively: in head-to-head human preference tests against prior work, SAM 3D reports “at least a 5:1 win rate in human preference tests on real-world objects and scenes.” The team tracks quality with Elo, the chess rating, where “a 400 point Elo difference corresponds to 10:1 odds in a preference test,” and reports that the rating keeps climbing as the data engine runs more rounds. The throughline has arrived at its destination. The same verdict that picked the better chatbot reply, “this one, not that one,” picked the better 3D mesh, and enough of those verdicts, looped through a model that proposes and a human who judges, added up to a 3D foundation model.

Coda

11. The frontier, part one: GSPO

Three threads run past the methods in this post, and all three are the same throughline pushed one notch further. The first is a repair to GRPO.

Recall that GRPO, like PPO, reuses each batch of sampled answers for several gradient steps, because sampling answers from the model is the expensive part. The catch is that after the first step the model has already shifted, so those answers were drawn from a version of the model that no longer exists. The standard fix is importance sampling: scale each piece of the update by a correction factor, the ratio of how likely the current model is to produce that piece to how likely the old model was. Twice as likely now, count it double; half as likely, count it half. It is the bookkeeping that corrects for the mismatch, approximately, so slightly stale samples stay usable.

The Qwen team’s GSPO, Group Sequence Policy Optimization, traces GRPO’s training instability to where that correction is applied. The two names sit one word apart, and so do the methods. GRPO is group relative: it scores each answer against its siblings. GSPO keeps that group baseline exactly as it is and changes only the granularity of the importance ratio, from the token to the sequence. One correction for the whole answer instead of one per word. Everything else in this section follows from that single move.

GRPO computes the ratio per token, one for every word in the answer, and applies it to that token’s own slice of the loss. The trouble, in the paper’s words, is that “since this weight is based on a single sample from each next-token distribution, it fails to perform the intended distribution-correction role.” A single noisy ratio on a single token is survivable. Hundreds of them, each a wild one-sample estimate, scattered across a long answer and then each run through the clip is not. The paper describes “high-variance training noise that progressively accumulates with increased response length and is further amplified by the clipping mechanism, ultimately precipitating model collapse,” and pins the whole problem on “the fundamental misapplication and invalidation of importance sampling weights.” For mixture-of-experts models, where which experts fire can change between updates, it is worse still.

GSPO’s fix is one observation: “since the reward is granted to the entire sequence, applying off-policy correction at the token level appears problematic.” So it computes a single ratio for the whole answer, “based on sequence likelihood,” and does “sequence-level clipping, rewarding, and optimization.”

It helps to see the two ratios side by side, with each piece labeled. Fig 13 lays them out. GRPO’s correction is one fraction for every token: how likely the current model is to produce that token, over how likely the old model was. If the model has not moved the fraction is one and nothing changes; if the current model likes the token twice as much, the fraction is two. GSPO swaps all of those for a single fraction over the whole answer, raised to the power one over the answer’s length.

GRPO, per token:  r = πθ(token) / πold(token)GSPO, per answer: s = ( πθ(answer) / πold(answer) ) ^(1/length)πθ (current model): how likely the model being trained is to produce this.πold (old model): the version the samples came from, now slightly out of date.^(1/length): length-normalize, which makes it the geometric mean of the per-token ratios.GRPO uses the top ratio once per token; GSPO uses the bottom ratio once per whole answer.
Fig 13. The two importance ratios, side by side. GRPO computes the blue-over-rust fraction once for every token; GSPO computes it once for the whole answer and takes the length-th root (green), which is the geometric mean of all those per-token ratios. πθ is the model being trained, πold the slightly stale model the samples came from.

That exponent is the quiet workhorse. A sequence’s probability is the product of its token probabilities, so taking the length-th root of the ratio is exactly the geometric mean of the per-token ratios: it folds the whole noisy product into one number on a stable scale, the way the n-th root of a product of n numbers reports their typical size instead of their runaway product. A long answer and a short one now land in a more comparable range, and one freak token has far less pull on the correction. The result, in the team’s words, “notably stabilizes Mixture-of-Experts (MoE) RL training” and “contributed to the remarkable improvements in the latest Qwen3 models.”

GRPOa separate noisy ratio per token, each clipped on its own1.40.61.90.31.70.5clipclipclipclipclipclipa separate ratio on each token of the answervariance accumulates → collapseGSPOone ratio for the whole sequencea single sequence ratio = geometric mean of the token ratios, length-normalizedtraining stays stable
Fig 14. GRPO corrects each token with its own importance ratio, clipped per token; across a long answer those high-variance one-sample ratios accumulate until training can collapse. GSPO uses one ratio for the whole sequence, the length-normalized sequence likelihood, which equals the geometric mean of the per-token ratios and keeps the correction on a stable scale. This is what trained the Qwen3 models.

Nothing about the verdict changed here. This is the section-5 advantage machinery, corrected at the granularity the reward actually lives at.

GSPO is not the only repair, and the cluster is worth a glance, because each one names a different way naive GRPO breaks. DAPO, Decoupled Clip and Dynamic sAmpling Policy Optimization, names its two headline fixes in its own acronym and is GRPO plus four of them: an asymmetric clip that protects exploration (the decoupling), dynamic sampling that throws out prompts where every answer is right or every answer is wrong, token-level loss, and a soft length penalty. Together they reach “50 points on AIME 2024 using Qwen2.5-32B base model.” MiniMax’s CISPO, Clipped IS-weight Policy Optimization, goes after the clip itself, and as the name says it “clips importance sampling weights rather than token updates,” so a rare but load-bearing reasoning token like “Wait” or “However” keeps contributing a gradient instead of being zeroed out, the same granularity instinct as GSPO aimed at a different symptom. And the length bias from section 6, diagnosed by Dr. GRPO, is a third: delete two of GRPO’s normalizers and the model stops padding wrong answers. Four papers, four different failures of the same algorithm, which is what a method looks like when it is being pushed hard enough to be worth fixing.

12. The frontier, part two: when the critic comes back

The second thread doubles back on the post’s own plot. Read the lineage as a story of throwing machinery away: RLHF ran a reward model, a critic, and a sampling loop; DPO dropped the reward model and the loop; GRPO dropped the critic. Less apparatus at every step. SAO, Single-rollout Asynchronous Optimization, the method used to train GLM-5.2, is where the trend reverses, because one of the hardest new settings cannot afford a piece we deleted. Its name is its argument: one rollout per prompt, trained on the moment it arrives.

The setting is asynchronous agentic RL. When a model is doing long-horizon agentic work, calling tools, writing code, taking many turns, the answers take wildly different times to finish, and a synchronous loop that waits for the whole batch leaves the fast rollouts stalled behind the slowest trajectory. Asynchronous RL removes that stall by “updating the model as rollouts arrive” instead of in locked batches. But that efficiency collides with GRPO. GRPO needs a group of answers to the same prompt to compute its baseline, and, in the paper’s words, “the group has to wait for the slower one to finish before fed into training.” The group is a synchronization barrier bolted onto a pipeline whose whole point was to remove one. Worse, “group-wise sampling is incompatible with online or complex agentic settings where the environment often provides only a single trajectory feedback per prompt”: sometimes there is no group to be had, because the world hands you one attempt and moves on.

GRPOa group for one prompt; train only when the slowest finishesidle, waitingslowest gates the grouptrainSAOone rollout per prompt; train the instant each finishestraintraintrainno group barrier, no waiting
Fig 15. GRPO’s group is a synchronization barrier: rollouts to the same prompt finish at different times, and none can train until the slowest arrives, so the fast ones sit idle. SAO uses one rollout per prompt and trains on each the moment it finishes, which is what asynchronous RL was built to do.

So SAO makes the obvious cut: “we replace group-wise sampling with single-rollout sampling, that is, using one rollout per prompt.” One prompt, one answer, straight into training. But that reopens a problem section 5 had closed. GRPO could drop the critic only because the group gave it a baseline, the average score of the siblings. With a single rollout there are no siblings, so there is no group mean, and a bare reward with nothing to compare it against is exactly the high-variance signal that made naive policy gradients unusable. The paper says it plainly: single-rollout optimization “inherently suffers from high variance in gradient estimation, similar to REINFORCE. To reduce variance requires a sufficiently good value model.”

That last sentence is the reversal. The value model is the critic, the second network section 5 celebrated GRPO for deleting. To make single-rollout training work, SAO brings it back. The baseline has now made a full round trip: PPO learned it with a critic, GRPO replaced the critic with a group mean, and SAO, having given up the group, returns to a learned critic. You might ask why not a cheaper stand-in, say a running average of recent rewards, instead of a whole second network. SAO tried exactly that, and it trailed badly (79.8 against 97.3 on AIME 2025). For single-rollout training the learned critic earned its keep.

PPOGRPOSAOlearned critica second networkgroup meanno criticlearned criticback again, made to traindelete itno group leftsingle rollout has no siblings to averagefaster value updates (K=2),frozen attention
Fig 16. The baseline’s round trip. PPO estimated the advantage with a learned critic; GRPO deleted it and used the group mean; SAO, having given up the group to fit asynchronous training, brings the critic back. To make it train reliably it updates the value model more often than the policy (two steps to one) and freezes the value model’s attention modules, training only its mixture-of-experts projections.

The reason this is not simply undoing GRPO’s gains is that SAO makes the critic work, which is the part PPO’s critic was bad at. Two tricks do it, and neither is a saving. It updates the value model more often than the policy, “for every single gradient update applied to the policy, we enforce K updates to the value network,” with K set to two, so the critic keeps up with a policy that is moving under it. That is more critic compute, not less, spent on keeping the baseline accurate. And it freezes part of the critic: a “Frozen-Attention” scheme holds the value model’s attention modules fixed and trains only its mixture-of-experts projections, on the finding that the attention layers were the source of the unstable gradients. Fewer trained parameters, but the point is stability rather than economy. The memory bill for a second policy-sized network is still there. What changed is that the critic now earns it.

One more piece connects straight back to the first thread. SAO faces the same off-policy problem GSPO was about, and treats it a different way. Where GSPO moved the importance ratio to the sequence level, SAO stays at the token level GSPO abandoned but drops the separate old-policy term: it “directly uses the log-probabilities from the rollout engine,” and masks any token whose ratio wanders too far outside a strict two-sided band instead of clipping it. The paper notes this is deliberately “simpler by further removing” the old-policy model. Same disease as section 11, off-policy drift, a different cousin of the same medicine.

Does it work? On the paper’s own asynchronous setup, training a Qwen3-30B-A3B model, SAO “is able to train stably for one thousand steps” while “standard GRPO suffers from a performance collapse at approximately 160 training steps,” and it beats the GRPO baselines on both benchmarks: on AIME 2025, 97.3 against 93.5 for the best-tuned GRPO variant and 84.2 for standard GRPO’s last score before it collapsed; on SWE-Bench Verified, 29.8 against 27.0. One caveat kept honest: this is GRPO collapsing in an aggressive asynchronous regime that stresses off-policy drift, not GRPO failing in general. The same GRPO trained DeepSeek-R1 without incident in section 5. The lesson is not that one method dethroned another; it is that the right amount of machinery depends on the setting, and the critic that looked obsolete turns out to be exactly what one of the hardest new settings needed back.

Like GSPO, none of this touched the verdict. This is optimizer-side plumbing, upstream of where the preference signal enters, and SAO’s reward in these experiments is a correctness check, not a human comparison. Of the three frontier stops this is the one furthest from the pairwise verdict the post has been following. The next one runs straight back into it.

13. The frontier, part three: Pref-GRPO closes the loop

The third thread runs through vision, and it ends where the post began.

There is a step to fill in first, because GRPO does not obviously fit an image generator. GRPO is a policy-gradient method: it needs the generator to be a stochastic policy, one that makes a real random choice at every step and assigns each choice a probability it can then nudge up or down, the way a language model assigns a probability to each token it samples. A flow-matching image model, sampled the normal way, is not that. Its sampler is a deterministic ordinary differential equation: fix the starting noise and the path to the finished image is fixed, with no per-step choice to take a gradient through. You can still get a spread of different images by starting from different noise, but you cannot do the step-by-step credit assignment a policy gradient runs on. Flow-GRPO, the paper that first put “online policy gradient reinforcement learning (RL) into flow matching models,” supplies the missing piece with “an ODE-to-SDE conversion that transforms a deterministic Ordinary Differential Equation (ODE) into an equivalent Stochastic Differential Equation (SDE) that matches the original model’s marginal distribution at all timesteps.” In plain terms, it makes each denoising step genuinely random, turning the fixed path into a stochastic policy GRPO can optimize, and it does so “matching the original model’s marginal distribution,” so the images the model produces on average do not change. Now GRPO has something to work on.

With the sampler turned into a policy, the obvious way to run GRPO on images is to sample a group for one prompt, score each image with a reward model, then turn those scores into advantages the section-5 way, by centering and scaling within the group, shown term by term in Fig 17: subtract the group’s average reward from this image’s reward, then divide by the group’s spread. The subtraction is the baseline from section 3; the division is meant to put every group on a comparable scale.

Âᵢ = ( rᵢmean(r) ) / std(r)rᵢ: the reward this image got.mean(r): the group’s average reward, the baseline to beat (from section 3).std(r): the group’s spread. When the scores are nearly equal this is tiny, and dividing by it magnifies meaningless gaps.Center on the baseline, then scale by the spread. The scaling is the step that backfires.
Fig 17. GRPO turns a reward into an advantage by centering and scaling. Subtract the group mean (teal) from this image’s reward (green), then divide by the group’s spread (red). When the images score almost the same, that spread is tiny, and dividing by it magnifies meaningless gaps. That is where the trouble starts.

Pref-GRPO shows that the division is exactly the trap. A reward model handed several images for one prompt tends to score them very close together, because they are all reasonable attempts, so the spread is tiny. Standardizing by that spread does not make the advantages enormous, since dividing by the standard deviation lands every group on the same scale by construction. What it does is worse: it promotes a meaningless gap to a full-strength training signal. In the paper’s words, “tightly clustered scores within a group are disproportionately amplified after dividing by the small group standard deviation, driving the policy to over-optimize.” A 7.21 and a 7.19 come out the other side as a confident push toward one image, when the difference is noise and its sign might flip on a rerun. The paper names this the illusory advantage, and it shows where the model goes with it: “scores keep rising while image quality deteriorates, manifesting as oversaturation or unnaturally dark artifacts.” That is plain reward hacking, and the fix is not to clip harder but to change what the reward measures.

The repair is the move this whole post has been about. Instead of asking what score each image gets, Pref-GRPO asks which of two images is better, the same pairwise verdict from section 1. It “reformulates the GRPO objective to pairwise preference fitting”: as the paper puts it, “image pairs within a group are compared by a Pairwise Preference Reward Model (PPRM), and each image’s win rate serves as the reward.” An image’s reward becomes its win rate, the fraction of its group-mates it beats head to head, broken down in Fig 18.

wᵢ = 1/(G−1) · j≠i 𝟙(i ≻ j)𝟙(i ≻ j): the pairwise verdict, one when image i beats image j, zero otherwise. The “this one, not that one” from section 1.∑ over j≠i: add that up across every other image in the group.1/(G−1): divide by the number of comparisons (G is the group size), turning the count into a fraction.wᵢ is the share of its group-mates that image i beats: 1 if it wins them all, 0 if it loses them all.
Fig 18. Pref-GRPO’s reward is a win rate. The indicator (green) is the pairwise verdict, one when image i beats image j; sum it (blue) over every other image in the group; divide by the number of comparisons (rust). The result is the fraction of its group-mates image i beats, the same “this one, not that one” verdict the post opened on.

An image that beats every rival scores one; one that loses every time scores zero. Feed those win rates into the same advantage formula and the trap springs open: because win rates spread across the full range from zero to one, a clear winner near one and a clear loser near zero, the spread is genuinely large instead of vanishing. The paper’s reasoning: “because win rates reflect relative rankings rather than absolute scalar scores, Pref-GRPO yields larger within-group variance,” and in their experiments it “produces more stable advantages than pointwise scoring, substantially alleviates reward hacking, and improves semantic alignment.” A preference model can still be wrong, so this is not a guarantee that the verdict is right. It is a reward whose size now tracks something real.

GRPO · pointwise score7.217.197.237.20÷ tiny σ+0.2−1.2+1.5−0.5illusory advantagenear-identical scores, blown upPref-GRPO · pairwise win rate0.670.001.000.33÷ σ+0.5−1.3+1.3−0.5stable advantagewin rates spread 0 to 1
Fig 19. Pointwise GRPO scores a group of similar images almost identically, then normalizing by the tiny group standard deviation blows those non-differences into large, illusory advantages the model learns to hack. Pref-GRPO replaces the score with each image’s pairwise win rate, the fraction of its group-mates it beats, which spreads across zero to one and gives an advantage whose size tracks a real ranking. The verdict from the opening of the post, returned to settle the frontier.

14. Which method for which job

A reader who made it here wants the practical takeaway: which one do I reach for? The honest answer is the through-line of section 6 and section 12. There is no single winner. Every method on this list is the right choice for some setting and the wrong choice for others, and the newest is not the best by default. What follows is a map from setting to method, not a ranking.

Your settingReach forWhy, and the catch
A fixed dataset of preference pairs, and you want cheap and stableDPONo reward model, no RL loop, one classification loss (section 4). The catch: a well-run PPO can still beat it, and DPO can overfit (section 6).
A reward you can model or a sparse reward signal, and you can afford the loopPPO-style RLHFThe reward-model-plus-critic pipeline that started it all (section 3). Under a sparse reward it can need far fewer samples than DPO. The catch: two extra networks and a fiddly loop.
Verifiable rule-based rewards (math, code), trained synchronouslyGRPODrops the critic for a group baseline (section 5); trained DeepSeek-R1. For long sequences or mixture-of-experts, add the stability fixes: GSPO, DAPO, CISPO (section 11).
Asynchronous agentic RL at scale, or online settings with one trajectory per promptSAOSingle-rollout, with the value critic brought back and made to train stably (section 12). The catch: it is one lab’s very recent result, and it earns its keep only when the group baseline is unavailable or a liability.
Aligning an image or flow generatorDiffusion-DPO, Flow-GRPO, Pref-GRPOPreference and reward optimization adapted to generators (sections 7 and 13). Pick by whether you have preference pairs (Diffusion-DPO) or a reward to optimize online (the GRPO variants).

The pattern across the table is the lesson: the choice is set by what your reward looks like, how your rollouts are collected, and what you can afford to run. Match the method to that, not to its release date.

That is the arc folded shut. The post opened on a verdict between two answers, turned it into a score with Bradley-Terry, and rode that score through RLHF and DPO, past the advantage machinery of GRPO, and across into vision. At the frontier, when the score itself started to lie, the cure was to throw the score away and compare two things directly again, with a preference model standing in as the referee, the Bradley-Terry idea from section 2 now judging image generation.

The cheapest supervision signal we have, a person pointing at the better of two things, turned out to scale further than almost anyone expected. It went from making chatbots polite to building 3D from a single photo, and when the fancier signals broke it was still the move people reached for. The skeleton of the preference loss barely changed the whole way.

References