xref: /aosp_15_r20/external/pytorch/RELEASE.md (revision da0073e96a02ea20f0ac840b70461e3646d07c45)
1*da0073e9SAndroid Build Coastguard Worker# Releasing PyTorch
2*da0073e9SAndroid Build Coastguard Worker
3*da0073e9SAndroid Build Coastguard Worker<!-- toc -->
4*da0073e9SAndroid Build Coastguard Worker
5*da0073e9SAndroid Build Coastguard Worker  - [Release Compatibility Matrix](#release-compatibility-matrix)
6*da0073e9SAndroid Build Coastguard Worker  - [Release Cadence](#release-cadence)
7*da0073e9SAndroid Build Coastguard Worker  - [General Overview](#general-overview)
8*da0073e9SAndroid Build Coastguard Worker    - [Frequently Asked Questions](#frequently-asked-questions)
9*da0073e9SAndroid Build Coastguard Worker  - [Cutting a release branch preparations](#cutting-a-release-branch-preparations)
10*da0073e9SAndroid Build Coastguard Worker  - [Cutting release branches](#cutting-release-branches)
11*da0073e9SAndroid Build Coastguard Worker    - [`pytorch/pytorch`](#pytorchpytorch)
12*da0073e9SAndroid Build Coastguard Worker    - [`pytorch/builder` / PyTorch domain libraries](#pytorchbuilder--pytorch-domain-libraries)
13*da0073e9SAndroid Build Coastguard Worker    - [Making release branch specific changes for PyTorch](#making-release-branch-specific-changes-for-pytorch)
14*da0073e9SAndroid Build Coastguard Worker    - [Making release branch specific changes for domain libraries](#making-release-branch-specific-changes-for-domain-libraries)
15*da0073e9SAndroid Build Coastguard Worker  - [Running Launch Execution team Core XFN sync](#running-launch-execution-team-core-xfn-sync)
16*da0073e9SAndroid Build Coastguard Worker  - [Drafting RCs (Release Candidates) for PyTorch and domain libraries](#drafting-rcs-release-candidates-for-pytorch-and-domain-libraries)
17*da0073e9SAndroid Build Coastguard Worker    - [Release Candidate Storage](#release-candidate-storage)
18*da0073e9SAndroid Build Coastguard Worker    - [Release Candidate health validation](#release-candidate-health-validation)
19*da0073e9SAndroid Build Coastguard Worker    - [Cherry Picking Fixes](#cherry-picking-fixes)
20*da0073e9SAndroid Build Coastguard Worker      - [How to do Cherry Picking](#how-to-do-cherry-picking)
21*da0073e9SAndroid Build Coastguard Worker    - [Cherry Picking Reverts](#cherry-picking-reverts)
22*da0073e9SAndroid Build Coastguard Worker  - [Preparing and Creating Final Release candidate](#preparing-and-creating-final-release-candidate)
23*da0073e9SAndroid Build Coastguard Worker  - [Promoting RCs to Stable](#promoting-rcs-to-stable)
24*da0073e9SAndroid Build Coastguard Worker  - [Additional Steps to prepare for release day](#additional-steps-to-prepare-for-release-day)
25*da0073e9SAndroid Build Coastguard Worker    - [Modify release matrix](#modify-release-matrix)
26*da0073e9SAndroid Build Coastguard Worker    - [Open Google Colab issue](#open-google-colab-issue)
27*da0073e9SAndroid Build Coastguard Worker- [Patch Releases](#patch-releases)
28*da0073e9SAndroid Build Coastguard Worker  - [Patch Release Criteria](#patch-release-criteria)
29*da0073e9SAndroid Build Coastguard Worker  - [Patch Release Process](#patch-release-process)
30*da0073e9SAndroid Build Coastguard Worker    - [Patch Release Process Description](#patch-release-process-description)
31*da0073e9SAndroid Build Coastguard Worker    - [Triage](#triage)
32*da0073e9SAndroid Build Coastguard Worker    - [Issue Tracker for Patch releases](#issue-tracker-for-patch-releases)
33*da0073e9SAndroid Build Coastguard Worker    - [Building a release schedule / cherry picking](#building-a-release-schedule--cherry-picking)
34*da0073e9SAndroid Build Coastguard Worker    - [Building Binaries / Promotion to Stable](#building-binaries--promotion-to-stable)
35*da0073e9SAndroid Build Coastguard Worker- [Hardware / Software Support in Binary Build Matrix](#hardware--software-support-in-binary-build-matrix)
36*da0073e9SAndroid Build Coastguard Worker  - [Python](#python)
37*da0073e9SAndroid Build Coastguard Worker  - [Accelerator Software](#accelerator-software)
38*da0073e9SAndroid Build Coastguard Worker    - [Special support cases](#special-support-cases)
39*da0073e9SAndroid Build Coastguard Worker  - [Operating Systems](#operating-systems)
40*da0073e9SAndroid Build Coastguard Worker- [Submitting Tutorials](#submitting-tutorials)
41*da0073e9SAndroid Build Coastguard Worker- [Special Topics](#special-topics)
42*da0073e9SAndroid Build Coastguard Worker  - [Updating submodules for a release](#updating-submodules-for-a-release)
43*da0073e9SAndroid Build Coastguard Worker  - [Triton dependency for the release](#triton-dependency-for-the-release)
44*da0073e9SAndroid Build Coastguard Worker
45*da0073e9SAndroid Build Coastguard Worker<!-- tocstop -->
46*da0073e9SAndroid Build Coastguard Worker
47*da0073e9SAndroid Build Coastguard Worker## Release Compatibility Matrix
48*da0073e9SAndroid Build Coastguard Worker
49*da0073e9SAndroid Build Coastguard WorkerFollowing is the Release Compatibility Matrix for PyTorch releases:
50*da0073e9SAndroid Build Coastguard Worker
51*da0073e9SAndroid Build Coastguard Worker| PyTorch version | Python | C++ | Stable CUDA | Experimental CUDA | Stable ROCm |
52*da0073e9SAndroid Build Coastguard Worker| --- | --- | --- | --- | --- | --- |
53*da0073e9SAndroid Build Coastguard Worker| 2.5 | >=3.9, <=3.12, (3.13 experimental) | C++17 | CUDA 11.8, CUDA 12.1, CUDA 12.4, CUDNN 9.1.0.70  | None | ROCm 6.2 |
54*da0073e9SAndroid Build Coastguard Worker| 2.4 | >=3.8, <=3.12 | C++17 | CUDA 11.8, CUDA 12.1, CUDNN 9.1.0.70  | CUDA 12.4, CUDNN 9.1.0.70 | ROCm 6.1 |
55*da0073e9SAndroid Build Coastguard Worker| 2.3 | >=3.8, <=3.11, (3.12 experimental) | C++17 | CUDA 11.8, CUDNN 8.7.0.84 | CUDA 12.1, CUDNN 8.9.2.26 | ROCm 6.0 |
56*da0073e9SAndroid Build Coastguard Worker| 2.2 | >=3.8, <=3.11, (3.12 experimental) | C++17 | CUDA 11.8, CUDNN 8.7.0.84 | CUDA 12.1, CUDNN 8.9.2.26 | ROCm 5.7 |
57*da0073e9SAndroid Build Coastguard Worker| 2.1 | >=3.8, <=3.11 | C++17 | CUDA 11.8, CUDNN 8.7.0.84 | CUDA 12.1, CUDNN 8.9.2.26 | ROCm 5.6 |
58*da0073e9SAndroid Build Coastguard Worker| 2.0 | >=3.8, <=3.11 | C++14 | CUDA 11.7, CUDNN 8.5.0.96 | CUDA 11.8, CUDNN 8.7.0.84 | ROCm 5.4 |
59*da0073e9SAndroid Build Coastguard Worker| 1.13 | >=3.7, <=3.10 | C++14 | CUDA 11.6, CUDNN 8.3.2.44 | CUDA 11.7, CUDNN 8.5.0.96 | ROCm 5.2 |
60*da0073e9SAndroid Build Coastguard Worker| 1.12 | >=3.7, <=3.10 | C++14 | CUDA 11.3, CUDNN 8.3.2.44 | CUDA 11.6, CUDNN 8.3.2.44 | ROCm 5.0 |
61*da0073e9SAndroid Build Coastguard Worker
62*da0073e9SAndroid Build Coastguard Worker## Release Cadence
63*da0073e9SAndroid Build Coastguard Worker
64*da0073e9SAndroid Build Coastguard WorkerFollowing is the release cadence for year 2023/2024. All dates below are tentative, for latest updates on the release scheduled please follow [dev discuss](https://dev-discuss.pytorch.org/c/release-announcements/27). Please note: Patch Releases are optional.
65*da0073e9SAndroid Build Coastguard Worker
66*da0073e9SAndroid Build Coastguard Worker| Minor Version | Release branch cut | Release date | First patch release date | Second patch release date|
67*da0073e9SAndroid Build Coastguard Worker| --- | --- | --- | --- | --- |
68*da0073e9SAndroid Build Coastguard Worker| 2.1 | Aug 2023 | Oct 2023 | Nov 2023 | Dec 2023 |
69*da0073e9SAndroid Build Coastguard Worker| 2.2 | Dec 2023 | Jan 2024 | Feb 2024 | Mar 2024 |
70*da0073e9SAndroid Build Coastguard Worker| 2.3 | Mar 2024 | Apr 2024 | Jun 2024 | Not planned |
71*da0073e9SAndroid Build Coastguard Worker| 2.4 | Jun 2024 | Jul 2024 | (Sept 2024) | Not planned |
72*da0073e9SAndroid Build Coastguard Worker| 2.5 | Sep 2024 | Oct 2024 | (Nov 2024) | (Dec 2024) |
73*da0073e9SAndroid Build Coastguard Worker| 2.6 | Dec 2024 | Jan 2025 | (Feb 2025) | (Mar 2025) |
74*da0073e9SAndroid Build Coastguard Worker| 2.7 | Mar 2025 | Apr 2025 | (May 2025) | (Jun 2025) |
75*da0073e9SAndroid Build Coastguard Worker| 2.8 | Jun 2025 | Jul 2025 | (Aug 2025) | (Sep 2025) |
76*da0073e9SAndroid Build Coastguard Worker| 2.9 | Aug 2025 | Oct 2025 | (Nov 2025) | (Dec 2025) |
77*da0073e9SAndroid Build Coastguard Worker
78*da0073e9SAndroid Build Coastguard Worker## General Overview
79*da0073e9SAndroid Build Coastguard Worker
80*da0073e9SAndroid Build Coastguard WorkerReleasing a new version of PyTorch generally entails 3 major steps:
81*da0073e9SAndroid Build Coastguard Worker
82*da0073e9SAndroid Build Coastguard Worker0. Cutting a release branch preparations
83*da0073e9SAndroid Build Coastguard Worker1. Cutting a release branch and making release branch specific changes
84*da0073e9SAndroid Build Coastguard Worker2. Drafting RCs (Release Candidates), and merging cherry picks
85*da0073e9SAndroid Build Coastguard Worker3. Preparing and Creating Final Release Candidate
86*da0073e9SAndroid Build Coastguard Worker4. Promoting Final RC to stable and performing release day tasks
87*da0073e9SAndroid Build Coastguard Worker
88*da0073e9SAndroid Build Coastguard Worker### Frequently Asked Questions
89*da0073e9SAndroid Build Coastguard Worker
90*da0073e9SAndroid Build Coastguard Worker* Q: What is release branch cut  ?
91*da0073e9SAndroid Build Coastguard Worker  * A: When bulk of the tracked features merged into the main branch, the primary release engineer starts the release process of cutting the release branch by creating a new git branch based off of the current `main` development branch of PyTorch. This allows PyTorch development flow on `main` to continue uninterrupted, while the release engineering team focuses on stabilizing the release branch in order to release a series of release candidates (RC). The activities in the release branch include both regression and performance testing as well as polishing new features and fixing release-specific bugs. In general, new features *are not* added to the release branch after it was created.
92*da0073e9SAndroid Build Coastguard Worker
93*da0073e9SAndroid Build Coastguard Worker* Q: What is cherry-pick ?
94*da0073e9SAndroid Build Coastguard Worker  * A: A cherry pick is a process of propagating commits from the main into the release branch, utilizing git's built in [cherry-pick feature](https://git-scm.com/docs/git-cherry-pick). These commits are typically limited to small fixes or documentation updates to ensure that the release engineering team has sufficient time to complete a thorough round of testing on the release branch. To nominate a fix for cherry-picking, a separate pull request must be created against the respective release branch and then mentioned in the Release Tracker issue (example: https://github.com/pytorch/pytorch/issues/94937) following the template from the issue description. The comment nominating a particular cherry-pick for inclusion in the release should include the committed PR against main branch, the newly created cherry-pick PR, as well as the acceptance criteria for why the cherry-pick is needed in the first place.
95*da0073e9SAndroid Build Coastguard Worker
96*da0073e9SAndroid Build Coastguard Worker## Cutting a release branch preparations
97*da0073e9SAndroid Build Coastguard Worker
98*da0073e9SAndroid Build Coastguard WorkerFollowing Requirements needs to be met prior to cutting a release branch:
99*da0073e9SAndroid Build Coastguard Worker
100*da0073e9SAndroid Build Coastguard Worker* Resolve all outstanding issues in the milestones(for example [1.11.0](https://github.com/pytorch/pytorch/milestone/28))before first RC cut is completed. After RC cut is completed following script should be executed from builder repo in order to validate the presence of the fixes in the release branch :
101*da0073e9SAndroid Build Coastguard Worker``` python github_analyze.py --repo-path ~/local/pytorch --remote upstream --branch release/1.11 --milestone-id 26 --missing-in-branch ```
102*da0073e9SAndroid Build Coastguard Worker* Validate that all new workflows have been created in the PyTorch and domain libraries included in the release. Validate it against all dimensions of release matrix, including operating systems(Linux, MacOS, Windows), Python versions as well as CPU architectures(x86 and arm) and accelerator versions(CUDA, ROCm).
103*da0073e9SAndroid Build Coastguard Worker* All the nightly jobs for pytorch and domain libraries should be green. Validate this using following HUD links:
104*da0073e9SAndroid Build Coastguard Worker  * [Pytorch](https://hud.pytorch.org/hud/pytorch/pytorch/nightly)
105*da0073e9SAndroid Build Coastguard Worker  * [TorchVision](https://hud.pytorch.org/hud/pytorch/vision/nightly)
106*da0073e9SAndroid Build Coastguard Worker  * [TorchAudio](https://hud.pytorch.org/hud/pytorch/audio/nightly)
107*da0073e9SAndroid Build Coastguard Worker
108*da0073e9SAndroid Build Coastguard Worker## Cutting release branches
109*da0073e9SAndroid Build Coastguard Worker
110*da0073e9SAndroid Build Coastguard Worker### `pytorch/pytorch`
111*da0073e9SAndroid Build Coastguard Worker
112*da0073e9SAndroid Build Coastguard WorkerRelease branches are typically cut from the branch [`viable/strict`](https://github.com/pytorch/pytorch/tree/viable/strict) as to ensure that tests are passing on the release branch.
113*da0073e9SAndroid Build Coastguard Worker
114*da0073e9SAndroid Build Coastguard WorkerThere's a convenience script to create release branches from current `viable/strict`. Perform following actions :
115*da0073e9SAndroid Build Coastguard Worker* Perform a fresh clone of pytorch repo using
116*da0073e9SAndroid Build Coastguard Worker```bash
117*da0073e9SAndroid Build Coastguard Workergit clone [email protected]:pytorch/pytorch.git
118*da0073e9SAndroid Build Coastguard Worker```
119*da0073e9SAndroid Build Coastguard Worker
120*da0073e9SAndroid Build Coastguard Worker* Execute following command from PyTorch repository root folder:
121*da0073e9SAndroid Build Coastguard Worker```bash
122*da0073e9SAndroid Build Coastguard WorkerDRY_RUN=disabled scripts/release/cut-release-branch.sh
123*da0073e9SAndroid Build Coastguard Worker```
124*da0073e9SAndroid Build Coastguard WorkerThis script should create 2 branches:
125*da0073e9SAndroid Build Coastguard Worker* `release/{MAJOR}.{MINOR}`
126*da0073e9SAndroid Build Coastguard Worker* `orig/release/{MAJOR}.{MINOR}`
127*da0073e9SAndroid Build Coastguard Worker
128*da0073e9SAndroid Build Coastguard Worker### `pytorch/builder` / PyTorch domain libraries
129*da0073e9SAndroid Build Coastguard Worker
130*da0073e9SAndroid Build Coastguard Worker*Note*:  Release branches for individual domain libraries should be created after first release candidate build of PyTorch is available in staging channels (which happens about a week after PyTorch release branch has been created). This is absolutely required to allow sufficient testing time for each of the domain library. Domain libraries branch cut is performed by Domain Library POC.
131*da0073e9SAndroid Build Coastguard WorkerBuilder branch cut should be performed at the same time as Pytorch core branch cut. Convenience script can also be used domains as well as `pytorch/builder`
132*da0073e9SAndroid Build Coastguard Worker
133*da0073e9SAndroid Build Coastguard Worker> NOTE: RELEASE_VERSION only needs to be specified if version.txt is not available in root directory
134*da0073e9SAndroid Build Coastguard Worker
135*da0073e9SAndroid Build Coastguard Worker```bash
136*da0073e9SAndroid Build Coastguard WorkerDRY_RUN=disabled GIT_BRANCH_TO_CUT_FROM=main RELEASE_VERSION=1.11 scripts/release/cut-release-branch.sh
137*da0073e9SAndroid Build Coastguard Worker```
138*da0073e9SAndroid Build Coastguard Worker
139*da0073e9SAndroid Build Coastguard Worker### Making release branch specific changes for PyTorch
140*da0073e9SAndroid Build Coastguard Worker
141*da0073e9SAndroid Build Coastguard WorkerThese are examples of changes that should be made to release branches so that CI / tooling can function normally on
142*da0073e9SAndroid Build Coastguard Workerthem:
143*da0073e9SAndroid Build Coastguard Worker
144*da0073e9SAndroid Build Coastguard Worker* Update backwards compatibility tests to use RC binaries instead of nightlies
145*da0073e9SAndroid Build Coastguard Worker  * Example: https://github.com/pytorch/pytorch/pull/77983 and https://github.com/pytorch/pytorch/pull/77986
146*da0073e9SAndroid Build Coastguard Worker* A release branches should also be created in [`pytorch/xla`](https://github.com/pytorch/xla) and [`pytorch/builder`](https://github.com/pytorch/builder) repos and pinned in `pytorch/pytorch`
147*da0073e9SAndroid Build Coastguard Worker  * Example: https://github.com/pytorch/pytorch/pull/86290 and https://github.com/pytorch/pytorch/pull/90506
148*da0073e9SAndroid Build Coastguard Worker* Update branch used in composite actions from trunk to release (for example, can be done by running `for i in .github/workflows/*.yml; do sed -i -e s#@main#@release/2.0# $i; done`
149*da0073e9SAndroid Build Coastguard Worker  * Example: https://github.com/pytorch/pytorch/commit/17f400404f2ca07ea5ac864428e3d08149de2304
150*da0073e9SAndroid Build Coastguard Worker
151*da0073e9SAndroid Build Coastguard WorkerThese are examples of changes that should be made to the *default* branch after a release branch is cut
152*da0073e9SAndroid Build Coastguard Worker
153*da0073e9SAndroid Build Coastguard Worker* Nightly versions should be updated in all version files to the next MINOR release (i.e. 0.9.0 -> 0.10.0) in the default branch:
154*da0073e9SAndroid Build Coastguard Worker  * Example: https://github.com/pytorch/pytorch/pull/77984
155*da0073e9SAndroid Build Coastguard Worker
156*da0073e9SAndroid Build Coastguard Worker### Making release branch specific changes for domain libraries
157*da0073e9SAndroid Build Coastguard Worker
158*da0073e9SAndroid Build Coastguard WorkerDomain library branch cut is done a week after branch cut for the `pytorch/pytorch`. The branch cut is performed by the Domain Library POC.
159*da0073e9SAndroid Build Coastguard WorkerAfter the branch cut is performed, the Pytorch Dev Infra member should be informed of the branch cut and Domain Library specific change is required before Drafting RC for this domain library.
160*da0073e9SAndroid Build Coastguard Worker
161*da0073e9SAndroid Build Coastguard WorkerFollow these examples of PR that updates the version and sets RC Candidate upload channel:
162*da0073e9SAndroid Build Coastguard Worker* torchvision : https://github.com/pytorch/vision/pull/5400
163*da0073e9SAndroid Build Coastguard Worker* torchaudio: https://github.com/pytorch/audio/pull/2210
164*da0073e9SAndroid Build Coastguard Worker
165*da0073e9SAndroid Build Coastguard Worker## Running Launch Execution team Core XFN sync
166*da0073e9SAndroid Build Coastguard Worker
167*da0073e9SAndroid Build Coastguard WorkerThe series of meetings for Core XFN sync should be organized. The goal of these meetings are the following:
168*da0073e9SAndroid Build Coastguard Worker1. Establish release POC's from each of the workstreams
169*da0073e9SAndroid Build Coastguard Worker2. Cover the tactical phase of releasing minor releases to the market
170*da0073e9SAndroid Build Coastguard Worker3. Discuss possible release blockers
171*da0073e9SAndroid Build Coastguard Worker
172*da0073e9SAndroid Build Coastguard WorkerFollowing POC's should be assigned from each of the workstreams:
173*da0073e9SAndroid Build Coastguard Worker* Core/Marketing
174*da0073e9SAndroid Build Coastguard Worker* Release Eng
175*da0073e9SAndroid Build Coastguard Worker* Doc Eng
176*da0073e9SAndroid Build Coastguard Worker* Release notes
177*da0073e9SAndroid Build Coastguard Worker* Partner
178*da0073e9SAndroid Build Coastguard Worker
179*da0073e9SAndroid Build Coastguard Worker**NOTE**: The meetings should start after the release branch is created and should continue until the week of the release.
180*da0073e9SAndroid Build Coastguard Worker
181*da0073e9SAndroid Build Coastguard Worker## Drafting RCs (Release Candidates) for PyTorch and domain libraries
182*da0073e9SAndroid Build Coastguard Worker
183*da0073e9SAndroid Build Coastguard WorkerTo draft RCs, a user with the necessary permissions can push a git tag to the main `pytorch/pytorch` git repository. Please note: exactly same process is used for each of the domain library
184*da0073e9SAndroid Build Coastguard Worker
185*da0073e9SAndroid Build Coastguard WorkerThe git tag for a release candidate must follow the following format:
186*da0073e9SAndroid Build Coastguard Worker```
187*da0073e9SAndroid Build Coastguard Workerv{MAJOR}.{MINOR}.{PATCH}-rc{RC_NUMBER}
188*da0073e9SAndroid Build Coastguard Worker```
189*da0073e9SAndroid Build Coastguard Worker
190*da0073e9SAndroid Build Coastguard WorkerAn example of this would look like:
191*da0073e9SAndroid Build Coastguard Worker```
192*da0073e9SAndroid Build Coastguard Workerv1.12.0-rc1
193*da0073e9SAndroid Build Coastguard Worker```
194*da0073e9SAndroid Build Coastguard WorkerYou can use following commands to perform tag from pytorch core repo (not fork):
195*da0073e9SAndroid Build Coastguard Worker* Checkout and validate the repo history before tagging
196*da0073e9SAndroid Build Coastguard Worker```
197*da0073e9SAndroid Build Coastguard Workergit checkout release/1.12
198*da0073e9SAndroid Build Coastguard Workergit log --oneline
199*da0073e9SAndroid Build Coastguard Worker```
200*da0073e9SAndroid Build Coastguard Worker* Perform tag and push it to github (this will trigger the binary release build)
201*da0073e9SAndroid Build Coastguard Worker```
202*da0073e9SAndroid Build Coastguard Workergit tag -f  v1.12.0-rc2
203*da0073e9SAndroid Build Coastguard Workergit push origin  v1.12.0-rc2
204*da0073e9SAndroid Build Coastguard Worker```
205*da0073e9SAndroid Build Coastguard Worker
206*da0073e9SAndroid Build Coastguard WorkerPushing a release candidate should trigger the `binary_builds` workflow within CircleCI using [`pytorch/pytorch-probot`](https://github.com/pytorch/pytorch-probot)'s [`trigger-circleci-workflows`](trigger-circleci-workflows) functionality.
207*da0073e9SAndroid Build Coastguard Worker
208*da0073e9SAndroid Build Coastguard WorkerThis trigger functionality is configured here: [`pytorch-circleci-labels.yml`](https://github.com/pytorch/pytorch/blob/main/.github/pytorch-circleci-labels.yml)
209*da0073e9SAndroid Build Coastguard Worker
210*da0073e9SAndroid Build Coastguard WorkerTo view the state of the release build, please navigate to [HUD](https://hud.pytorch.org/hud/pytorch/pytorch/release%2F1.12). And make sure all binary builds are successful.
211*da0073e9SAndroid Build Coastguard Worker### Release Candidate Storage
212*da0073e9SAndroid Build Coastguard Worker
213*da0073e9SAndroid Build Coastguard WorkerRelease candidates are currently stored in the following places:
214*da0073e9SAndroid Build Coastguard Worker
215*da0073e9SAndroid Build Coastguard Worker* Wheels: https://download.pytorch.org/whl/test/
216*da0073e9SAndroid Build Coastguard Worker* Conda: https://anaconda.org/pytorch-test
217*da0073e9SAndroid Build Coastguard Worker* Libtorch: https://download.pytorch.org/libtorch/test
218*da0073e9SAndroid Build Coastguard Worker
219*da0073e9SAndroid Build Coastguard WorkerBackups are stored in a non-public S3 bucket at [`s3://pytorch-backup`](https://s3.console.aws.amazon.com/s3/buckets/pytorch-backup?region=us-east-1&tab=objects)
220*da0073e9SAndroid Build Coastguard Worker
221*da0073e9SAndroid Build Coastguard Worker### Release Candidate health validation
222*da0073e9SAndroid Build Coastguard Worker
223*da0073e9SAndroid Build Coastguard WorkerValidate the release jobs for pytorch and domain libraries should be green. Validate this using following HUD links:
224*da0073e9SAndroid Build Coastguard Worker  * [Pytorch](https://hud.pytorch.org/hud/pytorch/pytorch/release%2F1.12)
225*da0073e9SAndroid Build Coastguard Worker  * [TorchVision](https://hud.pytorch.org/hud/pytorch/vision/release%2F1.12)
226*da0073e9SAndroid Build Coastguard Worker  * [TorchAudio](https://hud.pytorch.org/hud/pytorch/audio/release%2F1.12)
227*da0073e9SAndroid Build Coastguard Worker
228*da0073e9SAndroid Build Coastguard WorkerValidate that the documentation build has completed and generated entry corresponding to the release in  [docs repository](https://github.com/pytorch/docs/tree/main/).
229*da0073e9SAndroid Build Coastguard Worker
230*da0073e9SAndroid Build Coastguard Worker### Cherry Picking Fixes
231*da0073e9SAndroid Build Coastguard Worker
232*da0073e9SAndroid Build Coastguard WorkerTypically, within a release cycle fixes are necessary for regressions, test fixes, etc.
233*da0073e9SAndroid Build Coastguard Worker
234*da0073e9SAndroid Build Coastguard WorkerFor fixes that are to go into a release after the release branch has been cut we typically employ the use of a cherry pick tracker.
235*da0073e9SAndroid Build Coastguard Worker
236*da0073e9SAndroid Build Coastguard WorkerAn example of this would look like:
237*da0073e9SAndroid Build Coastguard Worker* https://github.com/pytorch/pytorch/issues/51886
238*da0073e9SAndroid Build Coastguard Worker
239*da0073e9SAndroid Build Coastguard WorkerPlease also make sure to add milestone target to the PR/issue, especially if it needs to be considered for inclusion into the dot release.
240*da0073e9SAndroid Build Coastguard Worker
241*da0073e9SAndroid Build Coastguard Worker**NOTE**: The cherry pick process is not an invitation to add new features, it is mainly there to fix regressions
242*da0073e9SAndroid Build Coastguard Worker
243*da0073e9SAndroid Build Coastguard Worker#### How to do Cherry Picking
244*da0073e9SAndroid Build Coastguard Worker
245*da0073e9SAndroid Build Coastguard WorkerYou can now use `pytorchbot` to cherry pick a PyTorch PR that has been committed
246*da0073e9SAndroid Build Coastguard Workerto the main branch using `@pytorchbot cherry-pick` command as follows.
247*da0073e9SAndroid Build Coastguard Worker
248*da0073e9SAndroid Build Coastguard Worker```
249*da0073e9SAndroid Build Coastguard Workerusage: @pytorchbot cherry-pick --onto ONTO [--fixes FIXES] -c
250*da0073e9SAndroid Build Coastguard Worker                               {regression,critical,fixnewfeature,docs,release}
251*da0073e9SAndroid Build Coastguard Worker
252*da0073e9SAndroid Build Coastguard WorkerCherry pick a pull request onto a release branch for inclusion in a release
253*da0073e9SAndroid Build Coastguard Worker
254*da0073e9SAndroid Build Coastguard Workeroptional arguments:
255*da0073e9SAndroid Build Coastguard Worker  --onto ONTO           Branch you would like to cherry pick onto (Example: release/2.2)
256*da0073e9SAndroid Build Coastguard Worker  --fixes FIXES         Link to the issue that your PR fixes (i.e. https://github.com/pytorch/pytorch/issues/110666)
257*da0073e9SAndroid Build Coastguard Worker  -c {regression,critical,fixnewfeature,docs,release}
258*da0073e9SAndroid Build Coastguard Worker                        A machine-friendly classification of the cherry-pick reason.
259*da0073e9SAndroid Build Coastguard Worker```
260*da0073e9SAndroid Build Coastguard Worker
261*da0073e9SAndroid Build Coastguard WorkerFor example, [#120567](https://github.com/pytorch/pytorch/pull/120567#issuecomment-1978964376)
262*da0073e9SAndroid Build Coastguard Workercreated a cherry pick PR [#121232](https://github.com/pytorch/pytorch/pull/121232) onto `release/2.2`
263*da0073e9SAndroid Build Coastguard Workerbranch to fix a regression issue. You can then refer to the original
264*da0073e9SAndroid Build Coastguard Workerand the cherry-picked PRs on the release tracker issue. Please note
265*da0073e9SAndroid Build Coastguard Workerthat the cherry-picked PR will still need to be reviewed by PyTorch
266*da0073e9SAndroid Build Coastguard WorkerRelEng team before it can go into the release branch. This feature
267*da0073e9SAndroid Build Coastguard Workerrequires `pytorchbot`, so it's only available in PyTorch atm.
268*da0073e9SAndroid Build Coastguard Worker
269*da0073e9SAndroid Build Coastguard Worker### Cherry Picking Reverts
270*da0073e9SAndroid Build Coastguard Worker
271*da0073e9SAndroid Build Coastguard WorkerIf PR that has been cherry-picked into release branch has been reverted, its cherry-pick must be reverted as well.
272*da0073e9SAndroid Build Coastguard Worker
273*da0073e9SAndroid Build Coastguard WorkerReverts for changes that was committed into the main branch prior to the branch cut, must be propagated into release branch as well.
274*da0073e9SAndroid Build Coastguard Worker
275*da0073e9SAndroid Build Coastguard Worker## Preparing and Creating Final Release candidate
276*da0073e9SAndroid Build Coastguard Worker
277*da0073e9SAndroid Build Coastguard WorkerThe following requirements need to be met prior to creating final Release Candidate :
278*da0073e9SAndroid Build Coastguard Worker
279*da0073e9SAndroid Build Coastguard Worker* Resolve all outstanding open issues in the milestone. There should be no open issues/PRs (for example [2.1.2](https://github.com/pytorch/pytorch/milestone/39)). The issue should either be closed or de-milestoned.
280*da0073e9SAndroid Build Coastguard Worker
281*da0073e9SAndroid Build Coastguard Worker* Validate that all closed milestone PRs are present in the release branch. Confirm this by running:
282*da0073e9SAndroid Build Coastguard Worker``` python github_analyze.py --repo-path ~/local/pytorch --remote upstream --branch release/2.2 --milestone-id 40 --missing-in-branch ```
283*da0073e9SAndroid Build Coastguard Worker
284*da0073e9SAndroid Build Coastguard Worker* No outstanding cherry-picks that need to be reviewed in the issue tracker: https://github.com/pytorch/pytorch/issues/115300
285*da0073e9SAndroid Build Coastguard Worker
286*da0073e9SAndroid Build Coastguard Worker* Perform [Release Candidate health validation](#release-candidate-health-validation). CI should have the green signal.
287*da0073e9SAndroid Build Coastguard Worker
288*da0073e9SAndroid Build Coastguard WorkerAfter the final RC is created. The following tasks should be performed :
289*da0073e9SAndroid Build Coastguard Worker
290*da0073e9SAndroid Build Coastguard Worker* Perform [Release Candidate health validation](#release-candidate-health-validation). CI should have the green signal.
291*da0073e9SAndroid Build Coastguard Worker
292*da0073e9SAndroid Build Coastguard Worker* Run and inspect the output [Validate Binaries](https://github.com/pytorch/builder/actions/workflows/validate-binaries.yml) workflow.
293*da0073e9SAndroid Build Coastguard Worker
294*da0073e9SAndroid Build Coastguard Worker* All the closed issues from [milestone](https://github.com/pytorch/pytorch/milestone/39) need to be validated. Confirm the validation by commenting on the issue: https://github.com/pytorch/pytorch/issues/113568#issuecomment-1851031064
295*da0073e9SAndroid Build Coastguard Worker
296*da0073e9SAndroid Build Coastguard Worker* Create validation issue for the release, see for example [Validations for 2.1.2 release](https://github.com/pytorch/pytorch/issues/114904) and perform required validations.
297*da0073e9SAndroid Build Coastguard Worker
298*da0073e9SAndroid Build Coastguard Worker* Run performance tests in [benchmark repository](https://github.com/pytorch/benchmark). Make sure there are no performance regressions.
299*da0073e9SAndroid Build Coastguard Worker
300*da0073e9SAndroid Build Coastguard Worker* Prepare and stage PyPI binaries for promotion. This is done with this script:
301*da0073e9SAndroid Build Coastguard Worker[`pytorch/builder:release/pypi/promote_pypi_to_staging.sh`](https://github.com/pytorch/builder/blob/main/release/pypi/promote_pypi_to_staging.sh)
302*da0073e9SAndroid Build Coastguard Worker
303*da0073e9SAndroid Build Coastguard Worker* Validate staged PyPI binaries. Make sure generated packages are correct and package size does not exceeds maximum allowed PyPI package size.
304*da0073e9SAndroid Build Coastguard Worker
305*da0073e9SAndroid Build Coastguard Worker## Promoting RCs to Stable
306*da0073e9SAndroid Build Coastguard Worker
307*da0073e9SAndroid Build Coastguard WorkerPromotion of RCs to stable is done with this script:
308*da0073e9SAndroid Build Coastguard Worker[`pytorch/builder:release/promote.sh`](https://github.com/pytorch/builder/blob/main/release/promote.sh)
309*da0073e9SAndroid Build Coastguard Worker
310*da0073e9SAndroid Build Coastguard WorkerUsers of that script should take care to update the versions necessary for the specific packages you are attempting to promote.
311*da0073e9SAndroid Build Coastguard Worker
312*da0073e9SAndroid Build Coastguard WorkerPromotion should occur in two steps:
313*da0073e9SAndroid Build Coastguard Worker* Promote S3 artifacts (wheels, libtorch) and Conda packages
314*da0073e9SAndroid Build Coastguard Worker* Promote S3 wheels to PyPI
315*da0073e9SAndroid Build Coastguard Worker
316*da0073e9SAndroid Build Coastguard Worker**NOTE**: The promotion of wheels to PyPI can only be done once so take caution when attempting to promote wheels to PyPI, (see https://github.com/pypa/warehouse/issues/726 for a discussion on potential draft releases within PyPI)
317*da0073e9SAndroid Build Coastguard Worker
318*da0073e9SAndroid Build Coastguard Worker## Additional Steps to prepare for release day
319*da0073e9SAndroid Build Coastguard Worker
320*da0073e9SAndroid Build Coastguard WorkerThe following should be prepared for the release day
321*da0073e9SAndroid Build Coastguard Worker
322*da0073e9SAndroid Build Coastguard Worker### Modify release matrix
323*da0073e9SAndroid Build Coastguard Worker
324*da0073e9SAndroid Build Coastguard WorkerNeed to modify release matrix for get started page. See following [PR](https://github.com/pytorch/test-infra/pull/4611) as reference.
325*da0073e9SAndroid Build Coastguard Worker
326*da0073e9SAndroid Build Coastguard WorkerThe PR to update published_versions.json and quick-start-module.js is auto generated. See following [PR](https://github.com/pytorch/pytorch.github.io/pull/1467) as reference.
327*da0073e9SAndroid Build Coastguard Worker
328*da0073e9SAndroid Build Coastguard WorkerPlease note: This PR needs to be merged on the release day and hence it should be absolutely free of any failures. To test this PR, open another test PR but pointing to the Release candidate location as above [Release Candidate Storage](RELEASE.md#release-candidate-storage)
329*da0073e9SAndroid Build Coastguard Worker
330*da0073e9SAndroid Build Coastguard Worker### Open Google Colab issue
331*da0073e9SAndroid Build Coastguard Worker
332*da0073e9SAndroid Build Coastguard WorkerThis is normally done right after the release is completed. We would need to create Google Colab Issue see following [PR](https://github.com/googlecolab/colabtools/issues/2372)
333*da0073e9SAndroid Build Coastguard Worker
334*da0073e9SAndroid Build Coastguard Worker# Patch Releases
335*da0073e9SAndroid Build Coastguard Worker
336*da0073e9SAndroid Build Coastguard WorkerA patch release is a maintenance release of PyTorch that includes fixes for regressions found in a previous minor release. Patch releases typically will bump the `patch` version from semver (i.e. `[major].[minor].[patch]`).
337*da0073e9SAndroid Build Coastguard Worker
338*da0073e9SAndroid Build Coastguard WorkerPlease note: Starting from 2.1 one can expect up to 2 patch releases after every minor ones. Patch releases would only be published for latest minor release.
339*da0073e9SAndroid Build Coastguard Worker
340*da0073e9SAndroid Build Coastguard Worker## Patch Release Criteria
341*da0073e9SAndroid Build Coastguard Worker
342*da0073e9SAndroid Build Coastguard WorkerPatch releases should be considered if a regression meets the following criteria:
343*da0073e9SAndroid Build Coastguard Worker
344*da0073e9SAndroid Build Coastguard Worker1. Does the regression break core functionality (stable / beta features) including functionality in first party domain libraries?
345*da0073e9SAndroid Build Coastguard Worker    * First party domain libraries:
346*da0073e9SAndroid Build Coastguard Worker        * [pytorch/vision](https://github.com/pytorch/vision)
347*da0073e9SAndroid Build Coastguard Worker        * [pytorch/audio](https://github.com/pytorch/audio)
348*da0073e9SAndroid Build Coastguard Worker3. Is there not a viable workaround?
349*da0073e9SAndroid Build Coastguard Worker    * Can the regression be solved simply or is it not overcomable?
350*da0073e9SAndroid Build Coastguard Worker
351*da0073e9SAndroid Build Coastguard Worker> *NOTE*: Patch releases should only be considered when functionality is broken, documentation does not typically fall within this category
352*da0073e9SAndroid Build Coastguard Worker
353*da0073e9SAndroid Build Coastguard Worker## Patch Release Process
354*da0073e9SAndroid Build Coastguard Worker
355*da0073e9SAndroid Build Coastguard Worker### Patch Release Process Description
356*da0073e9SAndroid Build Coastguard Worker
357*da0073e9SAndroid Build Coastguard Worker> Main POC: Patch Release Managers, Triage Reviewers
358*da0073e9SAndroid Build Coastguard Worker
359*da0073e9SAndroid Build Coastguard WorkerPatch releases should follow these high-level phases. This process starts immediately after the previous release has completed.
360*da0073e9SAndroid Build Coastguard WorkerPatch release process takes around 4-5 weeks to complete.
361*da0073e9SAndroid Build Coastguard Worker
362*da0073e9SAndroid Build Coastguard Worker1. Triage, is a process where issues are identified, graded, compared to Patch Release Criteria and added to Patch Release milestone. This process normally takes 2 weeks after the release completion.
363*da0073e9SAndroid Build Coastguard Worker2. Go/No Go meeting between PyTorch Releng, PyTorch Core and Project Managers where potential issues triggering a release in milestones are reviewed, and following decisions are made:
364*da0073e9SAndroid Build Coastguard Worker  * Should the new patch Release be created ?
365*da0073e9SAndroid Build Coastguard Worker  * Timeline execution for the patch release
366*da0073e9SAndroid Build Coastguard Worker3. Cherry picking phase starts after the decision is made to create patch release. At this point a new release tracker for the patch release is created, and an announcement will be made on official channels [example announcement](https://dev-discuss.pytorch.org/t/pytorch-release-2-0-1-important-information/1176). The authors of the fixes to regressions will be asked to create their own cherry picks. This process normally takes 2 weeks.
367*da0073e9SAndroid Build Coastguard Worker4. Building Binaries, Promotion to Stable and testing. After all cherry picks have been merged, Release Managers trigger new build and produce new release candidate. Announcement is made on the official channel about the RC availability at this point. This process normally takes 2 weeks.
368*da0073e9SAndroid Build Coastguard Worker5. General Availability
369*da0073e9SAndroid Build Coastguard Worker
370*da0073e9SAndroid Build Coastguard Worker### Triage
371*da0073e9SAndroid Build Coastguard Worker
372*da0073e9SAndroid Build Coastguard Worker> Main POC: Triage Reviewers
373*da0073e9SAndroid Build Coastguard Worker
374*da0073e9SAndroid Build Coastguard Worker1. Tag issues / pull requests that are candidates for a potential patch release with `triage review`
375*da0073e9SAndroid Build Coastguard Worker    * ![adding triage review label](https://user-images.githubusercontent.com/1700823/132589089-a9210a14-6159-409d-95e5-f79067f6fa38.png)
376*da0073e9SAndroid Build Coastguard Worker2. Triage reviewers will then check if the regression / fix identified fits within above mentioned [Patch Release Criteria](#patch-release-criteria)
377*da0073e9SAndroid Build Coastguard Worker3. Triage reviewers will then add the issue / pull request to the related milestone (i.e. `1.9.1`) if the regressions is found to be within the [Patch Release Criteria](#patch-release-criteria)
378*da0073e9SAndroid Build Coastguard Worker    * ![adding to milestone](https://user-images.githubusercontent.com/1700823/131175980-148ff38d-44c3-4611-8a1f-cd2fd1f4c49d.png)
379*da0073e9SAndroid Build Coastguard Worker
380*da0073e9SAndroid Build Coastguard Worker### Issue Tracker for Patch releases
381*da0073e9SAndroid Build Coastguard Worker
382*da0073e9SAndroid Build Coastguard WorkerFor patch releases issue tracker needs to be created. For patch release, we require all cherry-pick changes to have links to either a high-priority GitHub issue or a CI failure from previous RC. An example of this would look like:
383*da0073e9SAndroid Build Coastguard Worker* https://github.com/pytorch/pytorch/issues/51886
384*da0073e9SAndroid Build Coastguard Worker
385*da0073e9SAndroid Build Coastguard WorkerOnly following issues are accepted:
386*da0073e9SAndroid Build Coastguard Worker1. Fixes to regressions against previous major version (e.g. regressions introduced in 1.13.0 from 1.12.0 are pickable for 1.13.1)
387*da0073e9SAndroid Build Coastguard Worker2. Low risk critical fixes for: silent correctness, backwards compatibility, crashes, deadlocks, (large) memory leaks
388*da0073e9SAndroid Build Coastguard Worker3. Fixes to new features being introduced in this release
389*da0073e9SAndroid Build Coastguard Worker4. Documentation improvements
390*da0073e9SAndroid Build Coastguard Worker5. Release branch specific changes (e.g. blocking ci fixes, change version identifiers)
391*da0073e9SAndroid Build Coastguard Worker
392*da0073e9SAndroid Build Coastguard Worker### Building a release schedule / cherry picking
393*da0073e9SAndroid Build Coastguard Worker
394*da0073e9SAndroid Build Coastguard Worker> Main POC: Patch Release Managers
395*da0073e9SAndroid Build Coastguard Worker
396*da0073e9SAndroid Build Coastguard Worker1. After regressions / fixes have been triaged Patch Release Managers will work together and build /announce a schedule for the patch release
397*da0073e9SAndroid Build Coastguard Worker    * *NOTE*: Ideally this should be ~2-3 weeks after a regression has been identified to allow other regressions to be identified
398*da0073e9SAndroid Build Coastguard Worker2. Patch Release Managers will work with the authors of the regressions / fixes to cherry pick their change into the related release branch (i.e. `release/1.9` for `1.9.1`)
399*da0073e9SAndroid Build Coastguard Worker    * *NOTE*: Patch release managers should notify authors of the regressions to post a cherry picks for their changes. It is up to authors of the regressions to post a cherry pick. If cherry pick is not posted the issue will not be included in the release.
400*da0073e9SAndroid Build Coastguard Worker3. If cherry picking deadline is missed by cherry pick author, patch release managers will not accept any requests after the fact.
401*da0073e9SAndroid Build Coastguard Worker
402*da0073e9SAndroid Build Coastguard Worker### Building Binaries / Promotion to Stable
403*da0073e9SAndroid Build Coastguard Worker
404*da0073e9SAndroid Build Coastguard Worker> Main POC: Patch Release managers
405*da0073e9SAndroid Build Coastguard Worker
406*da0073e9SAndroid Build Coastguard Worker1. Patch Release Managers will follow the process of [Drafting RCs (Release Candidates)](#drafting-rcs-release-candidates-for-pytorch-and-domain-libraries)
407*da0073e9SAndroid Build Coastguard Worker2. Patch Release Managers will follow the process of [Promoting RCs to Stable](#promoting-rcs-to-stable)
408*da0073e9SAndroid Build Coastguard Worker
409*da0073e9SAndroid Build Coastguard Worker# Hardware / Software Support in Binary Build Matrix
410*da0073e9SAndroid Build Coastguard Worker
411*da0073e9SAndroid Build Coastguard WorkerPyTorch has a support matrix across a couple of different axis. This section should be used as a decision making framework to drive hardware / software support decisions
412*da0073e9SAndroid Build Coastguard Worker
413*da0073e9SAndroid Build Coastguard Worker## Python
414*da0073e9SAndroid Build Coastguard Worker
415*da0073e9SAndroid Build Coastguard WorkerPyTorch supports all minor versions of CPython that are not EOL: https://devguide.python.org/versions/
416*da0073e9SAndroid Build Coastguard Worker
417*da0073e9SAndroid Build Coastguard WorkerFor each minor release independently, we only support patch releases as follows:
418*da0073e9SAndroid Build Coastguard Worker- If the latest patch release is a bugfix release, we only support this one.
419*da0073e9SAndroid Build Coastguard Worker- Otherwise, we support all the non-bugfix patch releases.
420*da0073e9SAndroid Build Coastguard Worker
421*da0073e9SAndroid Build Coastguard WorkerSee https://github.com/pytorch/rfcs/blob/master/RFC-0038-cpython-support.md for details on the rules and process for upgrade and sunset of each version.
422*da0073e9SAndroid Build Coastguard Worker
423*da0073e9SAndroid Build Coastguard Worker## Accelerator Software
424*da0073e9SAndroid Build Coastguard Worker
425*da0073e9SAndroid Build Coastguard WorkerFor accelerator software like CUDA and ROCm we will typically use the following criteria:
426*da0073e9SAndroid Build Coastguard Worker* Support latest 2 minor versions
427*da0073e9SAndroid Build Coastguard Worker
428*da0073e9SAndroid Build Coastguard Worker### Special support cases
429*da0073e9SAndroid Build Coastguard Worker
430*da0073e9SAndroid Build Coastguard WorkerIn some instances support for a particular version of software will continue if a need is found. For example, our CUDA 11 binaries do not currently meet
431*da0073e9SAndroid Build Coastguard Workerthe size restrictions for publishing on PyPI so the default version that is published to PyPI is CUDA 10.2.
432*da0073e9SAndroid Build Coastguard Worker
433*da0073e9SAndroid Build Coastguard WorkerThese special support cases will be handled on a case by case basis and support may be continued if current PyTorch maintainers feel as though there may still be a
434*da0073e9SAndroid Build Coastguard Workerneed to support these particular versions of software.
435*da0073e9SAndroid Build Coastguard Worker
436*da0073e9SAndroid Build Coastguard Worker## Operating Systems
437*da0073e9SAndroid Build Coastguard WorkerSupported OS flavors are summarized in the table below:
438*da0073e9SAndroid Build Coastguard Worker| Operating System family | Architecture | Notes |
439*da0073e9SAndroid Build Coastguard Worker| --- | --- | --- |
440*da0073e9SAndroid Build Coastguard Worker| Linux | aarch64, x86_64 | Wheels are manylinux2014 compatible, i.e. they should be runnable on any Linux system with glibc-2.17 or above. |
441*da0073e9SAndroid Build Coastguard Worker| MacOS | arm64 | Builds should be compatible with MacOS 11 (Big Sur) or newer, but are actively tested against MacOS 14 (Sonoma). |
442*da0073e9SAndroid Build Coastguard Worker| MacOS | x86_64 | Requires MacOS Catalina or above, not supported after 2.2, see https://github.com/pytorch/pytorch/issues/114602 |
443*da0073e9SAndroid Build Coastguard Worker| Windows | x86_64 | Builds are compatible with Windows-10 or newer. |
444*da0073e9SAndroid Build Coastguard Worker
445*da0073e9SAndroid Build Coastguard Worker# Submitting Tutorials
446*da0073e9SAndroid Build Coastguard Worker
447*da0073e9SAndroid Build Coastguard WorkerTutorials in support of a release feature must be submitted to the [pytorch/tutorials](https://github.com/pytorch/tutorials) repo at least two weeks before the release date to allow for editorial and technical review. There is no cherry-pick process for tutorials. All tutorials will be merged around the release day and published at [pytorch.org/tutorials](https://pytorch.org/tutorials/).
448*da0073e9SAndroid Build Coastguard Worker
449*da0073e9SAndroid Build Coastguard Worker# Special Topics
450*da0073e9SAndroid Build Coastguard Worker
451*da0073e9SAndroid Build Coastguard Worker## Updating submodules for a release
452*da0073e9SAndroid Build Coastguard Worker
453*da0073e9SAndroid Build Coastguard WorkerIn the event a submodule cannot be fast forwarded, and a patch must be applied we can take two different approaches:
454*da0073e9SAndroid Build Coastguard Worker
455*da0073e9SAndroid Build Coastguard Worker* (preferred) Fork the said repository under the pytorch GitHub organization, apply the patches we need there, and then switch our submodule to accept our fork.
456*da0073e9SAndroid Build Coastguard Worker* Get the dependencies maintainers to support a release branch for us
457*da0073e9SAndroid Build Coastguard Worker
458*da0073e9SAndroid Build Coastguard WorkerEditing submodule remotes can be easily done with: (running from the root of the git repository)
459*da0073e9SAndroid Build Coastguard Worker```
460*da0073e9SAndroid Build Coastguard Workergit config --file=.gitmodules -e
461*da0073e9SAndroid Build Coastguard Worker```
462*da0073e9SAndroid Build Coastguard Worker
463*da0073e9SAndroid Build Coastguard WorkerAn example of this process can be found here:
464*da0073e9SAndroid Build Coastguard Worker
465*da0073e9SAndroid Build Coastguard Worker* https://github.com/pytorch/pytorch/pull/48312
466*da0073e9SAndroid Build Coastguard Worker
467*da0073e9SAndroid Build Coastguard Worker## Triton dependency for the release
468*da0073e9SAndroid Build Coastguard Worker
469*da0073e9SAndroid Build Coastguard WorkerIn nightly builds for conda and wheels pytorch depend on Triton build by this workflow: https://hud.pytorch.org/hud/pytorch/pytorch/nightly/1?per_page=50&name_filter=Build%20Triton%20Wheel. The pinned version of triton used by this workflow is specified here:  https://github.com/pytorch/pytorch/blob/main/.ci/docker/ci_commit_pins/triton.txt .
470*da0073e9SAndroid Build Coastguard Worker
471*da0073e9SAndroid Build Coastguard WorkerIn Nightly builds we have following configuration:
472*da0073e9SAndroid Build Coastguard Worker* Conda builds, depend on: https://anaconda.org/pytorch-nightly/torchtriton
473*da0073e9SAndroid Build Coastguard Worker* Wheel builds, depend on : https://download.pytorch.org/whl/nightly/pytorch-triton/
474*da0073e9SAndroid Build Coastguard Worker* Rocm wheel builds, depend on : https://download.pytorch.org/whl/nightly/pytorch-triton-rocm/
475*da0073e9SAndroid Build Coastguard Worker
476*da0073e9SAndroid Build Coastguard WorkerHowever for release we have following :
477*da0073e9SAndroid Build Coastguard Worker* Conda builds, depend on: https://anaconda.org/pytorch-test/torchtriton for test and https://anaconda.org/pytorch/torchtriton for release
478*da0073e9SAndroid Build Coastguard Worker* Wheel builds, depend only triton pypi package: https://pypi.org/project/triton/ for both test and release
479*da0073e9SAndroid Build Coastguard Worker* Rocm wheel builds, depend on : https://download.pytorch.org/whl/test/pytorch-triton-rocm/ for test and https://download.pytorch.org/whl/pytorch-triton-rocm/ for release
480*da0073e9SAndroid Build Coastguard Worker
481*da0073e9SAndroid Build Coastguard WorkerImportant: The release of https://pypi.org/project/triton/ needs to be requested from OpenAI once branch cut is completed. Please include the release PIN hash in the request: https://github.com/pytorch/pytorch/blob/release/2.1/.ci/docker/ci_commit_pins/triton.txt .
482