$ the-wire · showcase
TPU SFT via TorchTitan, Megatron TP/ETP checkpoint conversion
By RepoJournal · Filed · About Alignment & Post-training · Composed from the cited sources · methodology
verl's post-training surface widens on two fronts: SFT on TPU through a TorchTitan engine, and tensor-parallel checkpoint conversion for Megatron, alongside fixes that stop silent thinking-mode and loss-mask mismatches in multi-turn SFT.
[doc, hardware, worker, trainer] feat: add SFT support for TPU using TorchTitan engine (#8098) verl-project/verl
verl now runs SFT on TPU through a TorchTitan engine, with every TPU runtime workaround (ReduceOp.AVG, all_gather_object on tpu_dist, FSDP2 SUM gradient reduction, sft_loss bucketed tensor adaptation, set_numa_affinity, logprobs_from_logits, torchrun PJRT env setup) moved out of the core into verl-hardware-plugin so the same code path stays hardware-agnostic.
[megatron] feat: support TP and ETP in Bridge checkpoint conversion (#8166) verl-project/verl
Megatron Bridge checkpoint conversion now handles tensor parallelism and expert tensor parallelism, so checkpoints sharded across TP and ETP ranks can be converted without collapsing to a single-rank layout.
[data] fix: correct enable_thinking_default YAML value and loss mask mismatch (#8086) verl-project/verl
Two bugs in MultiTurnSFTDataset desynced tokenization from loss masking: enable_thinking_default: none in sft_trainer_engine.yaml was parsed as the string "none", and bool("none") is True, silently enabling thinking in _process_single_message. If your chat template tokenizes differently with thinking on versus off, check the loss mask on your multi-turn SFT data.
[megatron,worker] fix: offload actor parameters after disaggregated weight sync (#7631) verl-project/verl
In disaggregated mode with a non-naive checkpoint backend, Megatron actor parameters stayed resident on GPU after update_weights(); with parameter offloading enabled they are now moved back to CPU after weight synchronization, with no API or configuration changes.
[ci] fix: set explicit model path for Ascend nightly jobs (#8157) verl-project/verl
The Ascend nightly jobs now pin MODEL_PATH to /root/.cache/models/Qwen/Qwen3.5-2B for both Qwen3.5 jobs, dropping the model-cache symlink setup that CI relied on.