$ the-wire · showcase
torch.compile dtype fixes, Vulkan reduction fallbacks, and a silent RL temperature bug
By RepoJournal · Filed · About PyTorch · Composed from the cited sources · methodology
Today's wire is dominated by correctness work under torch.compile and on the Vulkan backend, plus a TorchTitan RL fix that shows policy gradients were computed against the wrong distribution.
[primtorch] Fix mixed-dtype aten.normal decomposition (#194557) pytorch/pytorch
The Python reference decomposition in torch/_refs/__init__.py was wrapped in @elementwise_type_promotion_wrapper, so torch.normal(mean, std) returned FP32 under torch.compile when mean was FP16 and std FP32, while eager returned FP16 to match native ATen allocating from mean's dtype. Compiled and eager now agree.
[Vulkan] Keep reductions the reduce shaders cannot handle on CPU pytorch/executorch
The partitioner accepted empty dim lists and full sum/mean reductions over N-D inputs that the general reduce shaders could not build, and texture storage folding batch into channels made 4D reductions over dim 0 or dim 1 with batch above 1 uncomputable. Those cases now stay on CPU, and argmax/argmin are restricted to contiguous buffers and last-dimension reductions.
[rl] Apply the sampling temperature to generator and trainer logprobs pytorch/torchtitan
RL recipes sample at a temperature T (alphabet_sort uses 0.8), but neither vLLM's returned logprobs nor the trainer's logprobs applied it: both were log softmax(logits), so every policy-gradient update was computed for softmax(logits) while the tokens came from softmax(logits / T). The fix divides both sides by T and switches vLLM to logprobs_mode="processed_logprobs".
[CI] Regenerate loss baselines for FSDP+CP/EP flavors after PyTorch nightly bump pytorch/torchtitan
llama3_fsdp+tp+cp, llama3_fsdp+tp+cp+region_ac, gpt_oss_fsdp+tp+ep, and qwen3_moe_fsdp+tp+cp+ep_param_groups have failed on CUDA and ROCm since Friday, traced to a change in how FSDP2 accumulates gradients for params with multiple contributions per backward. Three loss baselines were regenerated on ROCm from a main CI run at commit e3929368edd2.
[cudagraph] Support non-deferred gradient accumulation (#5050) pytorch/torchtitan
The CUDA graph wrapper used to reject more than one outer accumulation group unless FSDP gradient reduction was deferred, a restriction that predates whole-step capture and blocked configurations that reduce and accumulate sharded gradients after every microbatch.
[Feature] Apply load_memmap mode to memmap directories pytorch/tensordict
load_memmap(..., mode=...) now applies to memmap directories and not just archives: "r" maps every file copy-on-write so in-place writes stay in memory, "r+" maps every file shared and raises PermissionError when a file is not writable. The default moves from "r" to None, preserving archives as copy-on-write and directory files as shared when writable.
Samsung Exynos AI LiteCore - Support yolo26 pytorch/executorch
The Exynos LiteCore path gained op builders for amax, floor, floor_div, gather, and max_dim, a remainder-to-floor_div+mul+sub decomposition, and refactored builders for div, index, split, topk, and upsample_nearest2d, validated on yolo26s at E9955 with A8W8 quantization. Quiet elsewhere: Dynamo now models sourceless DynamicClassAttribute instead of graph-breaking, MPS dtypesIfMPS duplication wa...