Skip to content

Offer one stable stack per PyTorch minor (2.9+) on every index card - #15

Merged
Kosinkadink merged 2 commits into
mainfrom
feat/one-stack-per-torch-minor
Jul 28, 2026
Merged

Offer one stable stack per PyTorch minor (2.9+) on every index card#15
Kosinkadink merged 2 commits into
mainfrom
feat/one-stack-per-torch-minor

Conversation

@Kosinkadink

@Kosinkadink Kosinkadink commented Jul 28, 2026

Copy link
Copy Markdown
Member

What

Expands the stable catalog from 14 to 34 stacks so every index card offers one stable release per PyTorch minor starting at 2.9, wherever the complete tuple actually exists upstream AND works.

Card Before After
cu126 2.9, 2.11, 2.13 2.9, 2.10, 2.11, 2.12, 2.13
cu128 2.9, 2.11 2.9, 2.10, 2.11 (index tops out at 2.11)
cu130 2.11, 2.13 2.9, 2.10, 2.11, 2.12, 2.13
rocm7.1 (linux) 2.11 2.10, 2.11, 2.12, 2.13 (no 2.9 on that index)
rocm7.14.0 multi-arch 2.10, 2.11 2.10, 2.11, 2.12 (index serves 2.10-2.12)
xpu 2.11, 2.13 2.10, 2.11, 2.12, 2.13 (2.9.1 dropped - see below)
cpu 2.11 2.9, 2.10, 2.11, 2.12, 2.13
pypi/mps 2.11 2.9, 2.10, 2.11, 2.12, 2.13

Verification

  • Every added tuple (torch + matching torchvision + torchaudio) was verified against the live index listings for the card's platforms and cp310-cp314 ABIs (PEP 503 pages for pytorch.org and repo.amd.com; PyPI JSON API for the mps card, including the cpXY-none-macosx wheels that 2.9/2.10 macOS torch ships).
  • torchaudio publishes nothing past 2.11.0 on any index, so 2.12/2.13 tuples pair with torchaudio 2.11.0 - same convention as the pre-existing 2.13 entries.
  • Dates are the actual torch release upload dates from PyPI. The new AMD multi-arch 2.12.0 entry uses the ROCm 7.14.0 GA date (2026-07-15) like its siblings; since the desktop sorts by date and ties keep manifest order, the E2E-validated 2.11.0 entry stays the picker default.
  • python scripts/validate_torch_index_stacks.py torch-index-stacks.json: OK (34 stacks)
  • python -m unittest scripts.test_torch_index_scripts: 45 tests, OK

Hardware E2E validation of new entries

  • AMD multi-arch 2.12.0 (Radeon PRO W7800, Windows): picker switch, clean package reconciliation, real Z-Image-Turbo inference (8/8 steps), and switch-back to the universal baseline all passed. Picker default stayed 2.11.0 as intended.
  • xpu 2.12.1 (Arc B570, Windows): picker switch, real SD1.5 inference on xpu:0, all passed.
  • xpu 2.9.1: REMOVED from this PR. The wheels exist upstream, but on a current Windows Arc setup (B570, Python 3.13.12, driver 32.0.101.8860) importing torch fails with WinError 127 loading torch_python.dll after a successful pip install, so the switch verification deterministically fails and rolls back. A tuple that exists but cannot pass verification must not be offered.
  • Linux AMD validation (rocm7.1 new entries + first Linux exercise of the multi-arch path) is in progress on a Linux/AMD box.

No validator or schema changes needed - additions only.

Every tuple was verified to exist upstream (torch + matching torchvision
+ torchaudio wheels for the card's platforms, cp310-cp314):

- cu126: add 2.10.0, 2.12.1 (now 2.9-2.13)
- cu128: add 2.10.0 (index tops out at 2.11)
- cu130: add 2.9.1, 2.10.0, 2.12.1 (now 2.9-2.13)
- rocm7.1 (linux): add 2.10.0, 2.12.1, 2.13.0 (no 2.9 on that index)
- rocm7.14.0 multi-arch: add 2.12.0 (index serves 2.10-2.12 only)
- xpu: add 2.9.1, 2.10.0, 2.12.1 (now 2.9-2.13)
- cpu: add 2.9.1, 2.10.0, 2.12.1, 2.13.0 (now 2.9-2.13)
- pypi/mps: add 2.9.1, 2.10.0, 2.12.1, 2.13.0 (now 2.9-2.13)

torchaudio publishes nothing past 2.11.0, so 2.12/2.13 tuples pair with
torchaudio 2.11.0, same as the existing 2.13 entries. Dates are the
torch release upload dates from PyPI; the AMD multi-arch entry uses the
ROCm 7.14.0 GA date like its siblings, keeping the validated 2.11.0
entry first among date-ties (picker default).

14 -> 35 stacks; validator and all 45 script tests pass.

Amp-Thread-ID: https://ampcode.com/threads/T-019f9e5f-73ce-745e-bd14-4337a5f52ebd
Co-authored-by: Amp <amp@ampcode.com>
@coderabbitai

coderabbitai Bot commented Jul 28, 2026

Copy link
Copy Markdown

Review Change Stack

Warning

Review limit reached

@Kosinkadink, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 13 minutes

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 56ea18da-0dde-42fe-9f6b-98f35a20e4dd

📥 Commits

Reviewing files that changed from the base of the PR and between 0af28c7 and 56d32fe.

📒 Files selected for processing (1)
  • torch-index-stacks.json
📝 Walkthrough

Walkthrough

torch-index-stacks.json extends the platform stack catalog with dated PyTorch package combinations for CUDA, ROCm, Intel XPU, CPU-only, and Apple MPS environments, including an update to an existing ROCm 7.14.0 entry.

Changes

Platform stack catalog

Layer / File(s) Summary
CUDA stack entries
torch-index-stacks.json
Adds dated CUDA 12.6, 12.8, and 13.0 entries for Windows and Linux with updated PyTorch package versions.
ROCm and Intel XPU entries
torch-index-stacks.json
Adds ROCm 7.1 and Intel XPU entries and updates the existing ROCm 7.14.0 multi-architecture package versions.
CPU and Apple MPS entries
torch-index-stacks.json
Adds dated CPU-only and PyPI/MPS entries with updated PyTorch and torchvision package versions.
🚥 Pre-merge checks | ✅ 2
✅ Passed checks (2 passed)
Check name Status Explanation
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/one-stack-per-torch-minor
✨ Simplify code
  • Create PR with simplified code
  • Commit simplified code in branch feat/one-stack-per-torch-minor

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

E2E on an Arc B570 (Windows, Python 3.13.12, driver 32.0.101.8860):
pip installs torch 2.9.1+xpu and its 2025.2.1 Intel runtime family
fine, but importing torch fails with WinError 127 loading
torch_python.dll, so the switch verification fails and rolls back
every time. The wheels exist upstream but do not work on a current
Windows Arc setup, so the catalog must not offer the tuple.

xpu card now spans 2.10-2.13. Validator and tests still pass.

Amp-Thread-ID: https://ampcode.com/threads/T-019f9e5f-73ce-745e-bd14-4337a5f52ebd
Co-authored-by: Amp <amp@ampcode.com>
@Kosinkadink
Kosinkadink merged commit fae5f04 into main Jul 28, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant