$ the-wire · showcase
TensorDict stops silently dropping nested keys, TorchTitan's tokenizer keeps Qwen3's delimiters
By RepoJournal · Filed · About PyTorch · Composed from the cited sources · methodology
TensorDict fixed three documented-but-broken pointwise behaviors and the nested-key clobber that was stripping entries from TorchRL environments, while TorchTitan repaired a tokenizer bug that dropped Qwen3's reasoning and tool-call delimiters.
[BugFix] create_nested with a nested key keeps the entries already under its parent keys pytorch/tensordict
create_nested used to replace td["a"] with a fresh empty tensordict, discarding every entry already under the parent key with no warning; it now keeps the plain tensordicts on the path and adds the new one to them. This is what broke TorchRL's RemoveEmptySpecs, where an env with a Composite containing an empty Composite received a step missing its ("agents", "action") entry.
[BugFix] clamp writes into out, and the in-place and two-operand pointwise ops broadcast a batch-shaped tensor pytorch/tensordict
Clamp with out= raised for every input, the in-place maximum_, minimum_, clamp_min_ and clamp_max_ rejected batch-shaped tensors that their functional counterparts accept, and lerp, addcmul and addcdiv failed when mixing a tensordict with a batch-shaped tensor. All three now behave the way the docs and sibling ops say they do.
[tokenizer] Preserve non-special added tokens (#5470) pytorch/torchtitan
The tokenizer passed every added token to add_special_tokens, which marked ordinary added tokens special so default decoding dropped them. Registration now goes through add_tokens, preserving each AddedToken.special flag, which restores Qwen3's reasoning and tool-call delimiters; token IDs, parameters and checkpoint keys are unchanged.
[Deprecation] Warn when update(update_batch_size=True) keeps a shorter batch size pytorch/tensordict
When td has fewer batch dims than source and its batch size is a prefix of the source's, update(update_batch_size=True) silently keeps its own batch size. That result stands for now but emits a FutureWarning; from TensorDict 0.17 the call will take the source's batch size instead.
[MPS] Restrict threshold, silu, huber_loss and lerp to the dtypes CPU/CUDA support (#201260) pytorch/pytorch
MPS accepted dtypes for threshold, silu, huber_loss and lerp that neither CPU nor CUDA implements, such as bool for threshold and integer dtypes for silu and huber_loss. Those kernels are gone: MPS now raises the same "<op>_mps" not implemented for '<dtype>' NotImplementedError the other backends do, so code relying on the extra dtypes will break. Smaller items: the memmap benchmarks no longer ...
Action items