90 wires and counting

$ follow PyTorch

Keep up with PyTorch 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.

$ status

wire 2026-09-11
stories 202

© 2026 RepoJournal Home Showcase Explore How it works Privacy

$ the-wire · showcase

TorchRL 0.14 lands, ExecuTorch tunes Arm64 BF16 copies and Vulkan dispatch

By RepoJournal · Filed · About PyTorch · Composed from the cited sources · methodology

TorchRL 0.14 ships DreamerV3 overhauls, distributed training changes, and composable replay buffers, while ExecuTorch adds an optimized Arm64 FP32/BF16 `_to_copy` kernel and fixes Vulkan shader feature negotiation.

TorchRL 0.14 is the day's headline release, spanning model-based RL, distributed training, replay-buffer composition, checkpointing, and on-policy optimization [1]. It requires TensorDict 0.14.2 or later in the 0.14 release line, a hard requirement for downstream users on earlier TensorDict versions. In the same release cycle, `transition_chunk_size="auto"` changed its resolution [2]: it used to resolve to `frames_per_batch // num_envs` so each batch held one contiguous run per environment; it now resolves to at least 64 consecutive transitions per environment-worker message with process slots, or `frames_per_batch // num_envs` when larger, and never more than `frames_per_batch`. This is a breaking change for anyone relying on the old per-batch transition layout.

ExecuTorch shipped an optimized `_to_copy.out` kernel for Arm64 [3]. Contiguous FP32-to-BF16 and BF16-to-FP32 conversions now process eight elements per NEON iteration and use the ExecuTorch threadpool above its grain size; other dtype pairs, layouts, and platforms fall back to the unchanged portable implementation. On the Arm backend, Vulkan data graph shader module feature negotiation was fixed after being found with the Vulkan validation layer [4], and constant tensor indexing is now delegated: U55 `index.Tensor` operations with one constant rank-1 integer index lower to slices and optional concatenation, including indices on non-leading dimensions, while runtime, empty, mask, rank>1, multiple-index, and symbolic-shape cases stay on CPU and out-of-range constants are rejected during preprocessing [5].

torchtitan landed an auxiliary-loss framework. `LoggedAuxLoss` in `torchtitan/models/common/aux_loss.py` carries per-layer loss values through an identity autograd Function on a carrier tensor, and its first use is the DeepSeek-V3 sequence-wise MoE balance loss [6]. The same repo fixed a recursive TorchFT optimizer dispatch bug where `TorchFTOptimizersContainer` wrapped itself in `torchft.Optimizer` and the wrapper called back into the same container on accepted steps, repeatedly triggering PyTorch's pre/post hooks [7]. `TorchCheckpointingManager` can now load, not just save: `_load` previously raised `NotImplementedError`, so a run configured for this backend could write checkpoints and never resume; the native load path now mirrors the DCP manager, using the latest valid step when no explicit step is given and erroring on a missing folder or checkpoint when one is [8].

pytorch/test-infra cut autorevert metrics query cost after the `/api/autorevert/metrics` endpoint pushed the shared `hud_user` ClickHouse account past its 64-query concurrency limit, refusing 2,189 queries and failing 8,005 unrelated test-run ingest INSERTs [9]. The requests used a 365-day range, and those queries averaged 93 to 162 seconds at up to 8 GiB, with only 8 of 28 heavy calls finishing. The fix makes a year servable and caps the range server-side. Separately, NVIDIA job setup no longer replaces a working host driver when `driver-version` is omitted: it keeps a driver at least 580.65.06, while missing, older, or unusable drivers still use the existing installer and mirror, and an explicit version keeps its exact-version behavior [10].

Action items

References

  1. [1] TorchRL 0.14: DreamerV3, Async at Scale, and Composable Replay ↗ pytorch/rl
  2. [2] [Performance] Send at least 64 transitions per worker message by default ↗ pytorch/rl
  3. [3] Add optimized Arm64 BF16 `_to_copy` (#22493) ↗ pytorch/executorch
  4. [4] Arm backend: Fix Vulkan data graph shader module feature negotiation ↗ pytorch/executorch
  5. [5] Arm backend: Delegate constant tensor index ↗ pytorch/executorch
  6. [6] Add LoggedAuxLoss and its first usage: the DeepSeek-V3 sequence-wise MoE balance loss (#3864) ↗ pytorch/torchtitan
  7. [7] Fix recursive TorchFT optimizer dispatch ↗ pytorch/torchtitan
  8. [8] Route native loads through torch_checkpointing (#4191) ↗ pytorch/torchtitan
  9. [9] Cut autorevert metrics query cost, and cap the range server-side (#8769) ↗ pytorch/test-infra
  10. [10] Preserve host-provisioned NVIDIA drivers during job setup (#8771) ↗ pytorch/test-infra

Quick answers

What shipped in PyTorch on September 11, 2026?
TorchRL 0.14 ships DreamerV3 overhauls, distributed training changes, and composable replay buffers, while ExecuTorch adds an optimized Arm64 FP32/BF16 `_to_copy` kernel and fixes Vulkan shader feature negotiation. In total, 126 commits, 69 pull requests, and 7 releases landed.
Who contributed to PyTorch on September 11, 2026?
16 developers shipped this update, including msluszniak, Suryansh Sijwali, JakeStevens, wwwind, perheld, vmoens, sdmyzlp, and Ivy Zhou, and 8 more.
What were the notable PyTorch updates?
TorchRL 0.14: DreamerV3, Async at Scale, and Composable Replay, [Performance] Send at least 64 transitions per worker message by default, and Add optimized Arm64 BF16 `_to_copy` (#22493).