$ the-wire · showcase
TensorDict fixes ragged numel(), TorchTitan defragments FSDP, PyTorch deprecates constrain_unify
By RepoJournal · Filed · About PyTorch · Composed from the cited sources · methodology
TensorDict fixed two lazy-stack correctness bugs that return wrong numbers for anyone reshaping or counting ragged stacks, while TorchTitan moved all-gather onto the FSDP compute stream to stop CUDA allocation retries, and PyTorch pushed its legacy symbolic unification out to Helion.
[BugFix] Count the rows of a ragged lazy stack in numel() pytorch/tensordict
numel() on a lazy stack with ragged members used to return 1 (or the product of the batch size, 2, for a stack holding 26 rows). It now counts rows, which matters for frame counters and anything else calling numel() on ragged stacks.
[BugFix] Write a nested value that a sliced ragged dim broadcasts in lazy update_at_ pytorch/tensordict
update_at_ with a slice on the ragged dim of a lazy stack used to raise ValueError: length should not be negative when the value carried a nested tensordict the members broadcast. The lazy-stack write path now matches the flat form, which already worked, and matches 0.14.3.
[perf] Move all-gather comm. on the FSDP compute stream (#5627) pytorch/torchtitan
All-gather communication moves onto the FSDP compute stream. The contributor traced slow training steps to CUDA allocation retries caused by memory fragmentation across FSDP's multiple streams, and enables _set_unshard_async_op(True) as the fix.
deprecate constrain_unify and move legacy symbolic unification into Helion (#202698) (#202698) pytorch/pytorch
The private _constrain_unify method is removed from PyTorch; its implementation and two callers now live in Helion. The public compatibility API survives on torch._check(a == b) with a deprecation comment, so code importing the private symbol breaks.
[dynamo] Reuse the initial iterator in itertools.cycle (#201608) pytorch/pytorch
The torch/_dynamo polyfill for itertools.cycle created one iterator from the input but looped the first pass over the original iterable. Compiled cycle now reuses the initial iterator, non-breaking. Elsewhere, tensordict's new ty job in lint.yml pins the diagnostic count at 3,826 so no change can add type errors, and the Qualcomm backend enforces terminal pass ordering for llama3.2 3b and adds ...
Action items