$ the-wire · showcase
Target determination gets its own LLM again, and FSDP2 shards unevenly
By RepoJournal · Filed · About PyTorch · Composed from the cited sources · methodology
PyTorch's CI is quietly being rebuilt in place: target determination gets a from-scratch LLM heuristic to replace an unpinned CodeLlama-7B checkout, Dr.CI learns to say a verdict is still coming, and a compiled tensordict bug writes the wrong rows.
[td] Rewrite the LLM target-determination heuristic on a modern embedding model pytorch/test-infra
pytorch/test-infra adds tools/torchci/td/llm/, new code written from scratch, replacing a CodeLlama-7B setup that CI checks out from two unpinned personal repositories without a license. Nothing changes in CI until the matching pytorch/pytorch workflow PR lands, after which target determination has an LLM part again, sourced from this code.
[Dr.CI] Tell the merge bot which failures await an AI verdict (AI_PENDING) pytorch/test-infra
trymerge failed a merge on the first failing check even when an AI CI Advisor verdict that would clear the job was minutes away; on one pytorch/pytorch PR the merge failed at 11:55am PST and a not_related verdict landed by 12:03pm PST. Dr.CI's answer gains an AI_PENDING key so the merge bot can tell "verdict coming" from "no verdict", though failures still block until it resolves.
[pytorch-bot] Trust the ghstack listing for stack-aware ciflow labels pytorch/test-infra
The stack-aware ciflow hold-back never held a label back on the events that add labels: at the pull_request.edited event that fills ghstack's listing in, the gh/<user>/<n>/orig branches read through the API were missing or stale, with GitHub branch activity showing those updates 7 to 40 s after the labels were added. The bot now trusts the ghstack listing directly instead of confirming each sta...
[BugFix] Write the right rows in compiled lazy update_ and copy_ from the stack's own members in another order pytorch/tensordict
Compiling a function that updates a lazy stack from its own members in another order, such as ls.update_(lazy_stack(ls.tensordicts[::-1])) or ls.copy_(ls[perm]), wrote the wrong rows: Inductor produced [3, 2, 2, 3] where [3, 2, 1, 0] is expected, while eager mode and the aot_eager backend were right. The reorder branch of LazyStackedTensorDict._update_ copied pieces from clones of the members, ...
[rl] FULL graphs: cap each capture request at max_model_len (#5488) pytorch/torchtitan
Under FULL CUDA graphs, vLLM captured each graph with fake requests whose sequence length was the whole graph size; above max_model_len that made attention read past the request's KV block table, an illegal memory access or a ValueError at engine start for GDN/KDA models. The generator now caps each fake request at max_model_len and keeps graphs up to max_num_batched_tokens, so no step falls ba...
[FSDP2] Uneven nonzero-dimension sharding (#203465) pytorch/pytorch
FSDP2 now handles sharding on a nonzero dimension that does not divide evenly across ranks, padding short and empty shards in all_gather_inputs and trimming after the collective. Also landing: uneven-shard coverage for Shard(1) cases where some ranks hold columns and others none.
Action items