AI Pulse by Inblix

Four V1 bugs nearly sank our RL training — here’s what vLLM 0.18.1 actually fixed

Hugging Face Blog · May 6, 2026 · 2 min read · Read original article →

Curated by the Inblix editorial team


Featured image for article: Four V1 bugs nearly sank our RL training — here’s what vLLM 0.18.1 actually fixed

Nobody should have to debug a reinforcement learning pipeline by staring at a clip-rate chart that looks like a heart attack. But that’s exactly what happened when we migrated from vLLM 0.8.5 to the V1 engine in 0.18.1. The initial run was a mess — trainer-side logprobs and reward curves veered wildly from the known-good reference, and the clamping indicator lit up like a Christmas tree. The instinct was to blame the RL objective. That instinct was wrong.

The real culprits were four backend mismatches hiding in plain sight. First, V1’s default logprob mode returns raw model outputs, skipping temperature scaling and top-k filtering that the trainer expects. Switching to logprobs-mode=processed_logprobs fixed the obvious mean offset, centering the policy ratio near 1.0. But the training curves still gaped.

Second, V1 runtime defaults — prefix caching and async scheduling — introduced execution-path differences that V0 never had. In an online RL setup where weights update mid-stream, a prefix-cache hit can reuse state computed before the update, silently corrupting the optimization. We disabled both. Third, the inflight weight-update path needed to mirror V0’s behavior precisely: block, load new weights, resume without trashing cached state. The mode="keep", clear_cache=False incantation proved critical.

The lesson is simple and humbling. We spent too long squinting at objective-level staleness when the problem was semantic and mechanical. Don’t change the loss function until you’ve verified the bytes flowing through the engine actually mean what you think they mean. The green run in Figure 1 is boring — it hugs the reference exactly — and that’s the point.

💡 Key Takeaways

  1. vLLM V1’s default `logprobs-mode` returns raw model outputs, skipping post-processing like temperature scaling, which silently breaks trainers expecting processed logprobs.
  2. Enabling prefix caching in an online RL setup with inflight weight updates can cause the engine to reuse state from before the update, corrupting the policy ratio.
  3. Restoring parity required explicit control: disable prefix caching, disable async scheduling, set `logprobs-mode=processed_logprobs`, and use `pause_generation` with `mode="keep"`.
  4. Semantic and inference-path mismatches should be ruled out before any attempt to adjust the RL objective for staleness or backend drift.

Keep reading: See related articles below for more coverage on this topic.

Get smarter about AI

The sharpest AI news, curated daily. Delivered free to your inbox.

Learn more

Glossary terms

← Back to all articles