Alignment
the RL loop that runs two GPUs at once
Layer 04 of the Frontier Stack, gone deep. A pretrained model can finish your sentence; it can’t follow your instructions. Alignment is the path from raw next-token predictor to an assistant that’s helpful and safe — SFT, a learned reward model, then reinforcement learning against it (or DPO, the shortcut that skips the loop). It’s also home to the single sharpest illustration of the whole company thesis: RL training oscillates between a memory-bound generation phase and a compute-bound update phase, spends most of its clock in the memory-bound one, and reports a flat 100% utilization the entire time. Two interactive pieces.
- the goalnext-token predictor → helpful assistant
- the pathSFT → reward model → RLHF · or DPO
- the trapRL = generate (memory) + update (compute)
- the tellone flat util line over two machines
00 From predictor to assistant
Pretraining leaves you with a model that knows language but not manners: prompt it with a question and it might continue with more questions, because “what token comes next on the web” is not “answer this helpfully.” Alignment (post-training) closes that gap in stages — first imitate good answers (SFT), then learn what humans prefer (a reward model), then optimize against that preference with reinforcement learning. DPO is the newer shortcut that collapses the last two into one. Click through the path — watch the GPU-character tag on each stage:
Notice the tags line up into a story. Everything except the RL stage is a plain compute-bound training loop — the well-behaved kind from Walk 02. RLHF is the odd one out, taggedgen + update, because it does two fundamentally different things in alternation. That split is the most GPU-revealing thing in all of post-training, and it’s worth watching move.
01 The trap: one run, two opposite machines
Here is the sharpest version of the company thesis on the whole site. An RL fine-tuning step is a loop: the policy model generates a batch of responses (autoregressive decode — one token at a time,memory-bound, tensor cores mostly idle), a reward model scores them, then an optimizerupdates the policy (a big backward pass — compute-bound, cores saturated). Generation is slow and dominates the wall-clock. So the run spends most of its time memory-bound — andnvidia-smi reads ~100% through every phase. Change the rollout-to-update ratio and watch the achieved line crater:
This is the utilization gap you can’t argue with. Two phases, opposite bottlenecks, and the one number the dashboard reports is flat across both — it literally cannot tell you that the GPU spent 80% of the run streaming memory with its tensor cores asleep. It’s exactly the memory-bound decode oflayer 05, now buried inside a training loop where nobody’s watching for it. This is why modern RL stacks (OpenRLHF, veRL) put so much engineering into the rollout: they hand generation to a fast serving engine like vLLM precisely because that phase is where the GPUs are starved.
02 Why an observability company cares
Alignment is where the thesis stops being a slogan and becomes a line item. RLHF-style training is how frontier labs turn base models into products, and it burns enormous compute in a loop whose dominant phase — generation — is the most memory-bound, most-starved workload there is. A single averaged utilization number doesn’t just hide the gap here; it hides that the run is two different workloads that need to be measured, and optimized, separately. You cannot fix what you’ve blended into one green bar.
Splitting that bar is Plasmient’s core move: report the generate phase and the update phase as what they are — one memory-bound, one compute-bound — each placed onthe roofline for the card it ran on. The model being aligned islayer 02; the generation phase islayer 05 wearing a training hat; the whole thing scales across the cluster of layer 03. Alignment is where all of it converges — and where measuring the gap is worth the most. Back to the Frontier Stack.
↗ Full references — go to the source
InstructGPT is the canonical recipe; Christiano 2017 is where learning a reward from preferences began; DPO and GRPO are the modern simplifications. TRL and OpenRLHF are the code — note how OpenRLHF and veRL are explicitly architected around the generate/update split this page is about.
- paperOuyang et al. 2022InstructGPT — SFT + reward model + PPO, the recipe behind ChatGPT
- paperChristiano et al. 2017Deep RL from human preferences — the origin of learning a reward from comparisons
- paperRafailov et al. 2023DPO — Direct Preference Optimization: your language model is secretly a reward model
- paperBai et al. 2022Constitutional AI — RLAIF: replace human labels with an AI judge (Anthropic)
- paperSchulman et al. 2017PPO — Proximal Policy Optimization, the RL algorithm RLHF actually runs
- paperShao et al. 2024GRPO — the critic-free RL used by DeepSeek for reasoning; the modern rollout loop
- repohuggingface/trlThe library that implements SFT, reward modelling, PPO, DPO and GRPO
- repoOpenRLHFA scalable RLHF framework — vLLM for the rollout, DeepSpeed for the update
- repovolcengine/verlveRL — hybrid-engine RL that co-locates generation and training to fight the trap
- blogHugging FaceIllustrating RLHF — the clearest walk-through of the three-stage pipeline