RepoJournal

$ cat alignment/week/2026-10-12.log

Alignment & Post-training

Alignment & Post-training

the week in review · Oct 12 – Oct 18, 2026

FSDP2 CPU offload corrupted parameters silently

By RepoJournal · composed from the cited sources · human-reviewed weekly · methodology

♥

Operators moving FSDP2 models to CPU on uneven shards were getting bad weights; the same period brought Ascend and TPU parity work in verl.

37 commits 32 PRs merged 7 briefings covered

all alignment reviews →

[fsdp] fix: prevent parameter corruption during FSDP2 CPU offload verl-project/verl

by SelfDLer

Uneven parameter shards were being corrupted when moving FSDP2 models to CPU, found while debugging Qwen3-Omni training and evaluation failures. If you offload FSDP2 checkpoints or models to host memory, pull the fix before trusting a run that used it.

[ckpt, hardware] fix: make checkpoint CPU offload device-agnostic (#8232) verl-project/verl

by kahlun

FSDPCheckpointManager decided whether to offload the sharded state dict to CPU by checking is_cuda_available, so non-CUDA backends got that decision made for them. It is now device-agnostic, which is the fix that makes the Ascend and TPU paths behave like the CUDA one.

[rollout] remove leftover todo ENV, remove SGLANG_USE_CPU_ENGINE environment (#8069) verl-project/verl

by kahlun

_load_sglang() no longer sets and then deletes an unconditional SGLANG_USE_CPU_ENGINE=1. If you relied on verl setting that variable for you, your SGLang rollout config needs to own it now.

[hardware, model, cfg, tests] feat: Ascend CANN fused linear cross-entropy verl-project/verl

by RitianD

use_fused_kernels=True can now run on 910B NPUs through CANN and torch_npu vocab-parallel fused CE, sidestepping the CUDA Triton path that overflowed UB on that hardware. The companion change (story above) adds an opt-in Liger TP fused cross-entropy head on the Megatron engine, with the existing Triton implementation still the default.

[rollout, vllm] fix: reject engine_kwargs that override verl-managed vLLM args (#8260) verl-project/verl

by aoshen02

vLLM args that verl derives from its own config (TP, DP, expert parallelism, LoRA, routing replay) could also be passed through rollout.engine_kwargs.vllm, and which source won depended on load order. Conflicting overrides are now rejected, so check any engine_kwargs.vllm entries that duplicate a verl-managed setting.

[vllm] fix: patch MoE weight loaders for DeepSeek MTP (#8059) verl-project/verl

by lxb007981

DeepSeek MTP was skipped by the MoE weight-loader workaround because it is not registered as a supported model, and its predictor weights sit in a ModuleDict nested under mtp_block. Both rollout backends now handle it, so MTP configs no longer load with the wrong weights.

Opt-in row-aligned caches and explicit document boundaries for olmo-core SFT allenai/open-instruct

by abhishekraok

The numbers are the argument: OLMo-core packs SFT rows by scanning for EOS, which splits 1.30% of Dolci-Think rows (0.39% of trainable tokens), and 19.55% of samples in one nemotron subset end in a tool call and break the scan entirely. Opt-in row-aligned caches and explicit document boundaries give you a way to stop guessing where a row ends.

$ ls alignment/week/ # the briefings behind this review

Keep up with Alignment & Post-training in about 3 minutes: what actually shipped — the commits, pull requests, releases, and security advisories that matter.

or

fair warning: these emails are deeply technical. diffs, version numbers, CVEs, benchmark deltas. if that's not your idea of a good read, this isn't your newsletter.

Folds into your digest — weekly by default, monthly if you prefer. Unsubscribe in one click.

all alignment reviews →