release-go-live-binary-build-matrix

작성자: pytorch

tools/scripts/generate_binary_build_matrix.py를 PyTorch 릴리스가 라이브될 때 업데이트합니다. CURRENT_STABLE_VERSION을 새로운 안정 버전으로 올리고, 해당…

npx skills add https://github.com/pytorch/test-infra --skill release-go-live-binary-build-matrix

Release Go-Live: Binary Build Matrix

Updates tools/scripts/generate_binary_build_matrix.py and the associated test fixtures when a PyTorch release goes live. This mirrors prior PRs such as:

  • Release 2.10 go live. Update release matrix (#7668)
  • Release 2.11 promotion script changes (#7868)
  • Release 2.12 go live. Update release matrix (#8070)

When to use this skill

Use when the user asks to:

  • Advance stable version to X.Y.0 in the binary build matrix
  • Promote release CUDA/ROCm arches now that release X.Y is going live
  • Update generate_binary_build_matrix.py for a new PyTorch release
  • Do "release go live" changes

Target files

FileWhy
tools/scripts/generate_binary_build_matrix.pySource of truth for version + channel arches
tools/tests/assets/build_matrix_*.jsonSnapshot fixtures (compact JSON, must match script output)
tools/tests/update_test_assets.shRegeneration script (canonical)
tools/tests/test_generate_binary_build_matrix.pyTest runner

Instructions

Step 1: Determine the new stable version

Ask the user (if not clear) what version is going live (e.g. 2.12.0). The current state usually looks like:

CURRENT_NIGHTLY_VERSION = "2.13.0"
CURRENT_CANDIDATE_VERSION = "2.12.0"   # about to become stable
CURRENT_STABLE_VERSION   = "2.11.0"    # being replaced

So a "2.12 go live" advances CURRENT_STABLE_VERSION to match CURRENT_CANDIDATE_VERSION. Do NOT touch CURRENT_NIGHTLY_VERSION or CURRENT_CANDIDATE_VERSION in this PR — those are advanced by separate PRs (e.g. Update nightly version to X.Y.Z, [Release X.Y] advance candidate version).

Step 2: Advance CURRENT_STABLE_VERSION

In tools/scripts/generate_binary_build_matrix.py, change the single line:

CURRENT_STABLE_VERSION = "<old>"

to the new stable version.

Step 3: Promote release-channel arches to match test

Compare the three channels in each arches dict:

CUDA_ARCHES_DICT = {
    "nightly": [...],
    "test":    [...],
    "release": [...],   # promote this to match "test"
}

ROCM_ARCHES_DICT = {
    "nightly": [...],
    "test":    [...],
    "release": [...],   # promote this to match "test"
}

If release differs from test, update release to match test. This is the actual "what CUDA/ROCm versions ship with this release" decision — the candidate-channel arches that survived the release cycle become the official release arches.

Also check STABLE_CUDA_VERSIONS — usually already aligned across channels, but verify all three entries point at the same default for the new release.

Step 4: Regenerate test fixtures (MUST use the shell script)

The fixtures are compact (single-line) JSON. The script tools/tests/update_test_assets.sh is the canonical regenerator. Do NOT use python3 -m tools.tests.test_generate_binary_build_matrix --update-reference-files — that pretty-prints with indent=2 and produces a massive churn diff that does not match the file format on main.

Run from the repo root (note the script uses relative paths so cd matters):

cd tools/tests
python3 ../scripts/generate_binary_build_matrix.py --build-python-only disable --with-xpu disable > assets/build_matrix_linux_wheel_cuda.json
python3 ../scripts/generate_binary_build_matrix.py --build-python-only disable --with-rocm disable --with-xpu disable > assets/build_matrix_linux_wheel_cuda_norocm.json
python3 ../scripts/generate_binary_build_matrix.py --build-python-only disable --with-cpu disable --with-xpu disable > assets/build_matrix_linux_wheel_nocpu.json
python3 ../scripts/generate_binary_build_matrix.py --build-python-only disable --with-cpu disable --with-rocm disable --with-xpu enable > assets/build_matrix_linux_wheel_xpu.json
python3 ../scripts/generate_binary_build_matrix.py --build-python-only disable --operating-system="macos" --with-cuda disable --with-rocm disable > assets/build_matrix_macos_wheel.json
python3 ../scripts/generate_binary_build_matrix.py --build-python-only disable --operating-system="windows" > assets/build_matrix_windows_wheel_cuda.json
python3 ../scripts/generate_binary_build_matrix.py --build-python-only disable --with-rocm disable --with-cuda disable --operating-system="windows" > assets/build_matrix_windows_wheel_xpu.json

Skip the conda lines from update_test_assets.sh — --package-type conda is broken on main (noted in PR #8065) and the conda fixtures are no longer maintained.

Step 5: Run tests

python3 -m tools.tests.test_generate_binary_build_matrix

Expected: Ran 7 tests in <time>s OK.

Step 6: Verify the diff is minimal

git diff --stat should show roughly:

  • tools/scripts/generate_binary_build_matrix.py: ~4 lines (stable version + release arches list)
  • 7 fixture JSON files: 1 line each (single-line files, change is in-place)

Sanity check: the only diff in fixtures should be "stable_version": "<old>" → "stable_version": "<new>". If a fixture has multi-line / pretty-printed diff, you used the wrong regenerator — revert with git checkout upstream/main -- tools/tests/assets/ and re-run Step 4.

If the CUDA release arches changed, expect new entries in fixtures (e.g. new cu132 rows when adding 13.2 to release).

Step 7: Commit and PR

Suggested commit/PR title pattern (matches history):

Release X.Y go live. Update release matrix

PR body should call out:

  • Advance CURRENT_STABLE_VERSION from <old> to <new>
  • (If applicable) Advance CUDA_ARCHES_DICT["release"] / ROCM_ARCHES_DICT["release"]
  • Regenerate test fixtures via tools/tests/update_test_assets.sh

Common pitfalls

  • Don't pretty-print fixtures. The --update-reference-files test flag writes indent=2. The fixtures on main are single-line. Always use the shell script approach.
  • Don't touch nightly/candidate versions. Those are advanced by separate PRs in the release cycle.
  • upstream is pytorch/test-infra. Branch from upstream/main, push to origin (your fork), open the PR against pytorch/test-infra:main.
  • Stash unrelated WIP. generate_binary_build_matrix.py changes should go in a clean branch off upstream/main — don't pile them onto an unrelated feature branch.

pytorch의 다른 스킬

zephyr
pytorch
임베디드 보드용 Zephyr RTOS 모듈로 ExecuTorch를 빌드하고 구성합니다. ET로 Zephyr 워크스페이스를 설정하거나 보드 지원(오버레이 등)을 추가할 때 사용합니다.
aoti-debug
pytorch
AOTInductor(AOTI) 오류 및 충돌을 디버깅합니다. AOTI 세그폴트, 장치 불일치 오류, 상수 로딩 실패 또는 런타임 오류가 발생할 때 사용하세요.
skill-writer
pytorch
Claude Code를 위한 잘 구조화된 Agent Skill 생성 가이드로, 모범 사례와 검증을 포함합니다. Skill의 전체 수명 주기(범위 설정, 파일 구조, YAML 프론트매터 검증, 콘텐츠 구성, 테스트 절차)를 다룹니다. 엄격한 명명 규칙(소문자, 하이픈, 최대 64자)과 설명 요구 사항(특정 트리거, 파일 유형, "무엇" 및 "언제" 절)을 적용합니다. 읽기 전용 Skill, 스크립트 기반 Skill, 다중 파일 Skill 등 일반적인 패턴에 대한 템플릿을 제공합니다.
triaging-issues
pytorch
GitHub 이슈를 분류하여 온콜 팀에 라우팅하고, 레이블을 적용하며, 질문을 종료합니다. 새로운 PyTorch 이슈를 처리하거나 이슈 분류를 요청받았을 때 사용하세요.
wheel-size-analyzer
pytorch
PyTorch nightly wheel 크기를 GitHub Actions 아티팩트 API를 사용하여 날짜 범위에 걸쳐 분석합니다. 바이너리 크기 변경 추적, wheel 크기 식별에 사용합니다…
pr-review
pytorch
PyTorch 풀 리퀘스트의 코드 품질, 테스트 커버리지, 보안 및 하위 호환성을 검토합니다. PR을 검토할 때, 코드 변경 사항을 검토하도록 요청받았을 때 사용합니다.
qualcomm
pytorch
QNN(Qualcomm AI Engine Direct) 백엔드를 빌드, 테스트 또는 개발합니다. backends/qualcomm/에서 작업하거나 QNN을 빌드할 때 사용합니다(계속…).
setup
pytorch
ExecuTorch 개발 환경을 설정합니다. 종속성을 설치하거나, conda 환경을 설정하거나, ExecuTorch로 개발을 준비할 때 사용하세요.