mirror of
				https://github.com/pytorch/pytorch.git
				synced 2025-10-31 12:15:03 +08:00 
			
		
		
		
	Compare commits
	
		
			68 Commits
		
	
	
		
			csl/revert
			...
			v2.1.0-rc6
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 7bcf7da3a2 | |||
| 1841d54370 | |||
| fca42334be | |||
| 539a971161 | |||
| 9287a0cf59 | |||
| c464075d5d | |||
| 1b4161c686 | |||
| 28220534de | |||
| da9639c752 | |||
| e534243ec2 | |||
| 01fa8c140a | |||
| 5aae979614 | |||
| ced78cc2a7 | |||
| d8db5808ce | |||
| 889811ab5b | |||
| 1191449343 | |||
| 6d9fad8474 | |||
| ed62318bea | |||
| ee67c4dd6a | |||
| 5529b81631 | |||
| 7e23b4907d | |||
| 71c9d5c3a6 | |||
| 91e414957b | |||
| ce3ed7f293 | |||
| bd372d460b | |||
| 12b8c26f35 | |||
| 7397cf324c | |||
| fa8259db8d | |||
| d83c8287ea | |||
| ba19c52e31 | |||
| c5c9536aa7 | |||
| 6b7a777661 | |||
| ebd3224303 | |||
| 6e4ae13657 | |||
| 265e46e193 | |||
| da7290dfbd | |||
| 828992cf13 | |||
| 48246f3dfb | |||
| 7d6971dcee | |||
| 5417e23ba8 | |||
| 7a9101951d | |||
| 03e7f0b99d | |||
| c0e7239f43 | |||
| 04c1e07fd7 | |||
| cb4362ba5f | |||
| bddd30ca7a | |||
| 9cc99906e9 | |||
| a49fca4dd4 | |||
| 83964c761e | |||
| 085bd1da62 | |||
| 90452f41e3 | |||
| 35c3d5a080 | |||
| d07ac50e26 | |||
| 8a3b017769 | |||
| a82894b0d3 | |||
| 050fc31538 | |||
| b3cb05b396 | |||
| fec68a2799 | |||
| f139dda1cc | |||
| 5252dfb762 | |||
| da1ccca830 | |||
| c9cbdaf24f | |||
| f187e42a54 | |||
| 9175987fcc | |||
| d8e6594fb8 | |||
| f82c027774 | |||
| 6d20b39d3f | |||
| 17f400404f | 
| @ -1 +1 @@ | |||||||
| 05d67b9418cacda0d356c2102d7c1a887948b013 | 34f8189eae57a23cc15b4b4f032fe25757e0db8e | ||||||
|  | |||||||
| @ -7,18 +7,14 @@ source "$(dirname "${BASH_SOURCE[0]}")/common_utils.sh" | |||||||
| function install_huggingface() { | function install_huggingface() { | ||||||
|   local version |   local version | ||||||
|   version=$(get_pinned_commit huggingface) |   version=$(get_pinned_commit huggingface) | ||||||
|   pip_install pandas |   pip_install pandas==2.0.3 | ||||||
|   pip_install scipy |  | ||||||
|   pip_install z3-solver |  | ||||||
|   pip_install "transformers==${version}" |   pip_install "transformers==${version}" | ||||||
| } | } | ||||||
|  |  | ||||||
| function install_timm() { | function install_timm() { | ||||||
|   local commit |   local commit | ||||||
|   commit=$(get_pinned_commit timm) |   commit=$(get_pinned_commit timm) | ||||||
|   pip_install pandas |   pip_install pandas==2.0.3 | ||||||
|   pip_install scipy |  | ||||||
|   pip_install z3-solver |  | ||||||
|   pip_install "git+https://github.com/rwightman/pytorch-image-models@${commit}" |   pip_install "git+https://github.com/rwightman/pytorch-image-models@${commit}" | ||||||
| } | } | ||||||
|  |  | ||||||
|  | |||||||
							
								
								
									
										17
									
								
								.ci/docker/common/install_onnx.sh
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						
									
										17
									
								
								.ci/docker/common/install_onnx.sh
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							| @ -4,6 +4,10 @@ set -ex | |||||||
|  |  | ||||||
| source "$(dirname "${BASH_SOURCE[0]}")/common_utils.sh" | source "$(dirname "${BASH_SOURCE[0]}")/common_utils.sh" | ||||||
|  |  | ||||||
|  | retry () { | ||||||
|  |     "$@" || (sleep 10 && "$@") || (sleep 20 && "$@") || (sleep 40 && "$@") | ||||||
|  | } | ||||||
|  |  | ||||||
| # A bunch of custom pip dependencies for ONNX | # A bunch of custom pip dependencies for ONNX | ||||||
| pip_install \ | pip_install \ | ||||||
|   beartype==0.10.4 \ |   beartype==0.10.4 \ | ||||||
| @ -18,22 +22,17 @@ pip_install \ | |||||||
| # onnx-weekly. Otherwise, onnx-weekly could be | # onnx-weekly. Otherwise, onnx-weekly could be | ||||||
| # overwritten by onnx. | # overwritten by onnx. | ||||||
| pip_install \ | pip_install \ | ||||||
|   onnxruntime==1.15.1 \ |  | ||||||
|   parameterized==0.8.1 \ |   parameterized==0.8.1 \ | ||||||
|   pytest-cov==4.0.0 \ |   pytest-cov==4.0.0 \ | ||||||
|   pytest-subtests==0.10.0 \ |   pytest-subtests==0.10.0 \ | ||||||
|   tabulate==0.9.0 \ |   tabulate==0.9.0 \ | ||||||
|   transformers==4.31.0 |   transformers==4.31.0 | ||||||
|  |  | ||||||
| # Using 1.15dev branch for the following not yet released features and fixes. | pip_install coloredlogs packaging | ||||||
| # - Segfault fix for shape inference. | retry pip_install -i https://aiinfra.pkgs.visualstudio.com/PublicPackages/_packaging/ORT-Nightly/pypi/simple/ --no-cache-dir --no-input ort-nightly==1.16.0.dev20230908001 | ||||||
| # - Inliner to workaround ORT segfault. |  | ||||||
| pip_install onnx-weekly==1.15.0.dev20230717 |  | ||||||
|  |  | ||||||
| # TODO: change this when onnx-script is on testPypi | pip_install onnx==1.14.1 | ||||||
| # pip_install onnxscript-preview==0.1.0.dev20230809 --no-deps | pip_install onnxscript-preview==0.1.0.dev20230828 --no-deps | ||||||
| # NOTE: temp change for CI to run on unpublished onnxscript PR. |  | ||||||
| pip_install "onnxscript@git+https://github.com/microsoft/onnxscript@f69be19ebd3f2e0d7efe64b0c7be3329cbab3822" --no-deps |  | ||||||
|  |  | ||||||
| # Cache the transformers model to be used later by ONNX tests. We need to run the transformers | # Cache the transformers model to be used later by ONNX tests. We need to run the transformers | ||||||
| # package to download the model. By default, the model is cached at ~/.cache/huggingface/hub/ | # package to download the model. By default, the model is cached at ~/.cache/huggingface/hub/ | ||||||
|  | |||||||
| @ -271,7 +271,12 @@ pytest-cpp==2.3.0 | |||||||
| #Pinned versions: 2.3.0 | #Pinned versions: 2.3.0 | ||||||
| #test that import: | #test that import: | ||||||
|  |  | ||||||
| z3-solver | z3-solver==4.12.2.0 | ||||||
| #Description: The Z3 Theorem Prover Project | #Description: The Z3 Theorem Prover Project | ||||||
| #Pinned versions: | #Pinned versions: | ||||||
| #test that import: | #test that import: | ||||||
|  |  | ||||||
|  | tensorboard==2.13.0 | ||||||
|  | #Description: Also included in .ci/docker/requirements-docs.txt | ||||||
|  | #Pinned versions: | ||||||
|  | #test that import: test_tensorboard | ||||||
|  | |||||||
| @ -180,7 +180,7 @@ function install_numpy_pytorch_interop() { | |||||||
|  |  | ||||||
| function clone_pytorch_xla() { | function clone_pytorch_xla() { | ||||||
|   if [[ ! -d ./xla ]]; then |   if [[ ! -d ./xla ]]; then | ||||||
|     git clone --recursive --quiet https://github.com/pytorch/xla.git |     git clone --recursive -b r2.1 https://github.com/pytorch/xla.git | ||||||
|     pushd xla |     pushd xla | ||||||
|     # pin the xla hash so that we don't get broken by changes to xla |     # pin the xla hash so that we don't get broken by changes to xla | ||||||
|     git checkout "$(cat ../.github/ci_commit_pins/xla.txt)" |     git checkout "$(cat ../.github/ci_commit_pins/xla.txt)" | ||||||
|  | |||||||
| @ -544,6 +544,10 @@ test_without_numpy() { | |||||||
|   python -c "import sys;sys.path.insert(0, 'fake_numpy');from unittest import TestCase;import torch;x=torch.randn(3,3);TestCase().assertRaises(RuntimeError, lambda: x.numpy())" |   python -c "import sys;sys.path.insert(0, 'fake_numpy');from unittest import TestCase;import torch;x=torch.randn(3,3);TestCase().assertRaises(RuntimeError, lambda: x.numpy())" | ||||||
|   # Regression test for https://github.com/pytorch/pytorch/issues/66353 |   # Regression test for https://github.com/pytorch/pytorch/issues/66353 | ||||||
|   python -c "import sys;sys.path.insert(0, 'fake_numpy');import torch;print(torch.tensor([torch.tensor(0.), torch.tensor(1.)]))" |   python -c "import sys;sys.path.insert(0, 'fake_numpy');import torch;print(torch.tensor([torch.tensor(0.), torch.tensor(1.)]))" | ||||||
|  |   # Regression test for https://github.com/pytorch/pytorch/issues/109387 | ||||||
|  |   if [[ "${TEST_CONFIG}" == *dynamo* ]]; then | ||||||
|  |     python -c "import sys;sys.path.insert(0, 'fake_numpy');import torch;torch.compile(lambda x:print(x))('Hello World')" | ||||||
|  |   fi | ||||||
|   popd |   popd | ||||||
| } | } | ||||||
|  |  | ||||||
|  | |||||||
| @ -35,7 +35,7 @@ if [[ "$BUILD_ENVIRONMENT" == *cuda* ]]; then | |||||||
| fi | fi | ||||||
|  |  | ||||||
| # TODO: Move both of them to Windows AMI | # TODO: Move both of them to Windows AMI | ||||||
| python -m pip install pytest-rerunfailures==10.3 pytest-cpp==2.3.0 | python -m pip install pytest-rerunfailures==10.3 pytest-cpp==2.3.0 tensorboard==2.13.0 | ||||||
|  |  | ||||||
| # Install Z3 optional dependency for Windows builds. | # Install Z3 optional dependency for Windows builds. | ||||||
| python -m pip install z3-solver | python -m pip install z3-solver | ||||||
|  | |||||||
| @ -62,7 +62,7 @@ git --no-pager log --max-count 1 | |||||||
| popd | popd | ||||||
|  |  | ||||||
| # Clone the Builder main repo | # Clone the Builder main repo | ||||||
| retry git clone -q https://github.com/pytorch/builder.git "$BUILDER_ROOT" | retry git clone -q https://github.com/pytorch/builder.git -b release/2.1 "$BUILDER_ROOT" | ||||||
| pushd "$BUILDER_ROOT" | pushd "$BUILDER_ROOT" | ||||||
| echo "Using builder from " | echo "Using builder from " | ||||||
| git --no-pager log --max-count 1 | git --no-pager log --max-count 1 | ||||||
|  | |||||||
| @ -90,7 +90,7 @@ if [[ "$PACKAGE_TYPE" == conda ]]; then | |||||||
|       if [[ "\${TORCH_CONDA_BUILD_FOLDER}" == "pytorch-nightly" ]]; then |       if [[ "\${TORCH_CONDA_BUILD_FOLDER}" == "pytorch-nightly" ]]; then | ||||||
|               PYTORCH_CHANNEL="pytorch-nightly" |               PYTORCH_CHANNEL="pytorch-nightly" | ||||||
|       fi |       fi | ||||||
|       retry conda install \${EXTRA_CONDA_FLAGS} -yq -c nvidia -c "\${PYTORCH_CHANNEL}" "pytorch-cuda=\${cu_ver}" |       retry conda install \${EXTRA_CONDA_FLAGS} -yq -c nvidia -c pytorch-test "pytorch-cuda=\${cu_ver}" | ||||||
|     fi |     fi | ||||||
|     conda install \${EXTRA_CONDA_FLAGS} -y "\$pkg" --offline |     conda install \${EXTRA_CONDA_FLAGS} -y "\$pkg" --offline | ||||||
|   ) |   ) | ||||||
| @ -98,9 +98,9 @@ elif [[ "$PACKAGE_TYPE" != libtorch ]]; then | |||||||
|   if [[ "$(uname -m)" == aarch64 ]]; then |   if [[ "$(uname -m)" == aarch64 ]]; then | ||||||
|     # Using "extra-index-url" until all needed aarch64 dependencies are |     # Using "extra-index-url" until all needed aarch64 dependencies are | ||||||
|     # added to "https://download.pytorch.org/whl/nightly/" |     # added to "https://download.pytorch.org/whl/nightly/" | ||||||
|     pip install "\$pkg" --extra-index-url "https://download.pytorch.org/whl/nightly/${DESIRED_CUDA}" |     pip install "\$pkg" --extra-index-url "https://download.pytorch.org/whl/test/${DESIRED_CUDA}" | ||||||
|   else |   else | ||||||
|     pip install "\$pkg" --index-url "https://download.pytorch.org/whl/nightly/${DESIRED_CUDA}" |     pip install "\$pkg" --index-url "https://download.pytorch.org/whl/test/${DESIRED_CUDA}" | ||||||
|   fi |   fi | ||||||
|   retry pip install -q numpy protobuf typing-extensions |   retry pip install -q numpy protobuf typing-extensions | ||||||
| fi | fi | ||||||
|  | |||||||
| @ -11,7 +11,7 @@ PKG_DIR=${PKG_DIR:-/tmp/workspace/final_pkgs} | |||||||
| # currently set within `designate_upload_channel` | # currently set within `designate_upload_channel` | ||||||
| UPLOAD_CHANNEL=${UPLOAD_CHANNEL:-nightly} | UPLOAD_CHANNEL=${UPLOAD_CHANNEL:-nightly} | ||||||
| # Designates what subfolder to put packages into | # Designates what subfolder to put packages into | ||||||
| UPLOAD_SUBFOLDER=${UPLOAD_SUBFOLDER:-cpu} | UPLOAD_SUBFOLDER=${UPLOAD_SUBFOLDER:-} | ||||||
| UPLOAD_BUCKET="s3://pytorch" | UPLOAD_BUCKET="s3://pytorch" | ||||||
| BACKUP_BUCKET="s3://pytorch-backup" | BACKUP_BUCKET="s3://pytorch-backup" | ||||||
| BUILD_NAME=${BUILD_NAME:-} | BUILD_NAME=${BUILD_NAME:-} | ||||||
| @ -64,12 +64,17 @@ s3_upload() { | |||||||
|   local pkg_type |   local pkg_type | ||||||
|   extension="$1" |   extension="$1" | ||||||
|   pkg_type="$2" |   pkg_type="$2" | ||||||
|   s3_dir="${UPLOAD_BUCKET}/${pkg_type}/${UPLOAD_CHANNEL}/${UPLOAD_SUBFOLDER}/" |   s3_root_dir="${UPLOAD_BUCKET}/${pkg_type}/${UPLOAD_CHANNEL}" | ||||||
|  |   if [[ -z ${UPLOAD_SUBFOLDER:-} ]]; then | ||||||
|  |     s3_upload_dir="${s3_root_dir}/" | ||||||
|  |   else | ||||||
|  |     s3_upload_dir="${s3_root_dir}/${UPLOAD_SUBFOLDER}/" | ||||||
|  |   fi | ||||||
|   ( |   ( | ||||||
|     for pkg in ${PKG_DIR}/*.${extension}; do |     for pkg in ${PKG_DIR}/*.${extension}; do | ||||||
|       ( |       ( | ||||||
|         set -x |         set -x | ||||||
|         ${AWS_S3_CP} --no-progress --acl public-read "${pkg}" "${s3_dir}" |         ${AWS_S3_CP} --no-progress --acl public-read "${pkg}" "${s3_upload_dir}" | ||||||
|       ) |       ) | ||||||
|     done |     done | ||||||
|   ) |   ) | ||||||
| @ -82,15 +87,17 @@ pip install -q awscli | |||||||
| case "${PACKAGE_TYPE}" in | case "${PACKAGE_TYPE}" in | ||||||
|   conda) |   conda) | ||||||
|     conda_upload |     conda_upload | ||||||
|     # Fetch  platform (eg. win-64, linux-64, etc.) from index file |     for conda_archive in ${PKG_DIR}/*.tar.bz2; do | ||||||
|     # Because there's no actual conda command to read this |       # Fetch  platform (eg. win-64, linux-64, etc.) from index file because | ||||||
|     subdir=$(\ |       # there's no actual conda command to read this | ||||||
|       tar -xOf ${PKG_DIR}/*.bz2 info/index.json \ |       subdir=$(\ | ||||||
|         | grep subdir  \ |         tar -xOf "${conda_archive}" info/index.json \ | ||||||
|         | cut -d ':' -f2 \ |           | grep subdir  \ | ||||||
|         | sed -e 's/[[:space:]]//' -e 's/"//g' -e 's/,//' \ |           | cut -d ':' -f2 \ | ||||||
|     ) |           | sed -e 's/[[:space:]]//' -e 's/"//g' -e 's/,//' \ | ||||||
|     BACKUP_DIR="conda/${subdir}" |       ) | ||||||
|  |       BACKUP_DIR="conda/${subdir}" | ||||||
|  |     done | ||||||
|     ;; |     ;; | ||||||
|   libtorch) |   libtorch) | ||||||
|     s3_upload "zip" "libtorch" |     s3_upload "zip" "libtorch" | ||||||
|  | |||||||
							
								
								
									
										2
									
								
								.github/ci_commit_pins/xla.txt
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.github/ci_commit_pins/xla.txt
									
									
									
									
										vendored
									
									
								
							| @ -1 +1 @@ | |||||||
| e1ee592d9806216d7ac0bb711cae6307b0c5b68a | r2.1 | ||||||
|  | |||||||
							
								
								
									
										1
									
								
								.github/merge_rules.yaml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								.github/merge_rules.yaml
									
									
									
									
										vendored
									
									
								
							| @ -7,6 +7,7 @@ | |||||||
|   - docs/source/onnx.rst |   - docs/source/onnx.rst | ||||||
|   - docs/source/onnx* |   - docs/source/onnx* | ||||||
|   - docs/source/scripts/onnx/** |   - docs/source/scripts/onnx/** | ||||||
|  |   - docs/source/_static/img/onnx/** | ||||||
|   - scripts/onnx/** |   - scripts/onnx/** | ||||||
|   - test/onnx/** |   - test/onnx/** | ||||||
|   - tools/onnx/** |   - tools/onnx/** | ||||||
|  | |||||||
| @ -25,3 +25,4 @@ sympy==1.11.1 | |||||||
| pytest-cpp==2.3.0 | pytest-cpp==2.3.0 | ||||||
| rockset==1.0.3 | rockset==1.0.3 | ||||||
| z3-solver==4.12.2.0 | z3-solver==4.12.2.0 | ||||||
|  | tensorboard==2.13.0 | ||||||
|  | |||||||
							
								
								
									
										17
									
								
								.github/scripts/build_triton_wheel.py
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										17
									
								
								.github/scripts/build_triton_wheel.py
									
									
									
									
										vendored
									
									
								
							| @ -60,12 +60,18 @@ def build_triton( | |||||||
|     build_conda: bool = False, |     build_conda: bool = False, | ||||||
|     build_rocm: bool = False, |     build_rocm: bool = False, | ||||||
|     py_version: Optional[str] = None, |     py_version: Optional[str] = None, | ||||||
|  |     release: bool = False, | ||||||
| ) -> Path: | ) -> Path: | ||||||
|     env = os.environ.copy() |     env = os.environ.copy() | ||||||
|     if "MAX_JOBS" not in env: |     if "MAX_JOBS" not in env: | ||||||
|         max_jobs = os.cpu_count() or 1 |         max_jobs = os.cpu_count() or 1 | ||||||
|         env["MAX_JOBS"] = str(max_jobs) |         env["MAX_JOBS"] = str(max_jobs) | ||||||
|  |  | ||||||
|  |     if not release: | ||||||
|  |         # Nightly binaries include the triton commit hash, i.e. 2.1.0+e6216047b8 | ||||||
|  |         # while release build should only include the version, i.e. 2.1.0 | ||||||
|  |         version = f"{version}+{commit_hash[:10]}" | ||||||
|  |  | ||||||
|     with TemporaryDirectory() as tmpdir: |     with TemporaryDirectory() as tmpdir: | ||||||
|         triton_basedir = Path(tmpdir) / "triton" |         triton_basedir = Path(tmpdir) / "triton" | ||||||
|         triton_pythondir = triton_basedir / "python" |         triton_pythondir = triton_basedir / "python" | ||||||
| @ -80,7 +86,7 @@ def build_triton( | |||||||
|         if build_conda: |         if build_conda: | ||||||
|             with open(triton_basedir / "meta.yaml", "w") as meta: |             with open(triton_basedir / "meta.yaml", "w") as meta: | ||||||
|                 print( |                 print( | ||||||
|                     f"package:\n  name: torchtriton\n  version: {version}+{commit_hash[:10]}\n", |                     f"package:\n  name: torchtriton\n  version: {version}\n", | ||||||
|                     file=meta, |                     file=meta, | ||||||
|                 ) |                 ) | ||||||
|                 print("source:\n  path: .\n", file=meta) |                 print("source:\n  path: .\n", file=meta) | ||||||
| @ -103,7 +109,7 @@ def build_triton( | |||||||
|  |  | ||||||
|             patch_init_py( |             patch_init_py( | ||||||
|                 triton_pythondir / "triton" / "__init__.py", |                 triton_pythondir / "triton" / "__init__.py", | ||||||
|                 version=f"{version}+{commit_hash[:10]}", |                 version=f"{version}", | ||||||
|             ) |             ) | ||||||
|             if py_version is None: |             if py_version is None: | ||||||
|                 py_version = f"{sys.version_info.major}.{sys.version_info.minor}" |                 py_version = f"{sys.version_info.major}.{sys.version_info.minor}" | ||||||
| @ -129,11 +135,11 @@ def build_triton( | |||||||
|         patch_setup_py( |         patch_setup_py( | ||||||
|             triton_pythondir / "setup.py", |             triton_pythondir / "setup.py", | ||||||
|             name=triton_pkg_name, |             name=triton_pkg_name, | ||||||
|             version=f"{version}+{commit_hash[:10]}", |             version=f"{version}", | ||||||
|         ) |         ) | ||||||
|         patch_init_py( |         patch_init_py( | ||||||
|             triton_pythondir / "triton" / "__init__.py", |             triton_pythondir / "triton" / "__init__.py", | ||||||
|             version=f"{version}+{commit_hash[:10]}", |             version=f"{version}", | ||||||
|         ) |         ) | ||||||
|  |  | ||||||
|         if build_rocm: |         if build_rocm: | ||||||
| @ -157,12 +163,14 @@ def main() -> None: | |||||||
|     from argparse import ArgumentParser |     from argparse import ArgumentParser | ||||||
|  |  | ||||||
|     parser = ArgumentParser("Build Triton binaries") |     parser = ArgumentParser("Build Triton binaries") | ||||||
|  |     parser.add_argument("--release", action="store_true") | ||||||
|     parser.add_argument("--build-conda", action="store_true") |     parser.add_argument("--build-conda", action="store_true") | ||||||
|     parser.add_argument("--build-rocm", action="store_true") |     parser.add_argument("--build-rocm", action="store_true") | ||||||
|     parser.add_argument("--py-version", type=str) |     parser.add_argument("--py-version", type=str) | ||||||
|     parser.add_argument("--commit-hash", type=str) |     parser.add_argument("--commit-hash", type=str) | ||||||
|     parser.add_argument("--triton-version", type=str, default=read_triton_version()) |     parser.add_argument("--triton-version", type=str, default=read_triton_version()) | ||||||
|     args = parser.parse_args() |     args = parser.parse_args() | ||||||
|  |  | ||||||
|     build_triton( |     build_triton( | ||||||
|         build_rocm=args.build_rocm, |         build_rocm=args.build_rocm, | ||||||
|         commit_hash=args.commit_hash |         commit_hash=args.commit_hash | ||||||
| @ -171,6 +179,7 @@ def main() -> None: | |||||||
|         version=args.triton_version, |         version=args.triton_version, | ||||||
|         build_conda=args.build_conda, |         build_conda=args.build_conda, | ||||||
|         py_version=args.py_version, |         py_version=args.py_version, | ||||||
|  |         release=args.release, | ||||||
|     ) |     ) | ||||||
|  |  | ||||||
|  |  | ||||||
|  | |||||||
| @ -248,7 +248,8 @@ def generate_wheels_matrix( | |||||||
|                         "nvidia-cusolver-cu12==11.4.5.107; platform_system == 'Linux' and platform_machine == 'x86_64' | " |                         "nvidia-cusolver-cu12==11.4.5.107; platform_system == 'Linux' and platform_machine == 'x86_64' | " | ||||||
|                         "nvidia-cusparse-cu12==12.1.0.106; platform_system == 'Linux' and platform_machine == 'x86_64' | " |                         "nvidia-cusparse-cu12==12.1.0.106; platform_system == 'Linux' and platform_machine == 'x86_64' | " | ||||||
|                         "nvidia-nccl-cu12==2.18.1; platform_system == 'Linux' and platform_machine == 'x86_64' | " |                         "nvidia-nccl-cu12==2.18.1; platform_system == 'Linux' and platform_machine == 'x86_64' | " | ||||||
|                         "nvidia-nvtx-cu12==12.1.105; platform_system == 'Linux' and platform_machine == 'x86_64'", |                         "nvidia-nvtx-cu12==12.1.105; platform_system == 'Linux' and platform_machine == 'x86_64' | " | ||||||
|  |                         "triton==2.1.0; platform_system == 'Linux' and platform_machine == 'x86_64'", | ||||||
|                         "build_name": f"{package_type}-py{python_version}-{gpu_arch_type}{gpu_arch_version}-with-pypi-cudnn".replace(  # noqa: B950 |                         "build_name": f"{package_type}-py{python_version}-{gpu_arch_type}{gpu_arch_version}-with-pypi-cudnn".replace(  # noqa: B950 | ||||||
|                             ".", "_" |                             ".", "_" | ||||||
|                         ), |                         ), | ||||||
|  | |||||||
							
								
								
									
										2
									
								
								.github/templates/common.yml.j2
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.github/templates/common.yml.j2
									
									
									
									
										vendored
									
									
								
							| @ -8,7 +8,7 @@ | |||||||
| # NOTE: If testing pytorch/builder changes you can change this variable to change what pytorch/builder reference | # NOTE: If testing pytorch/builder changes you can change this variable to change what pytorch/builder reference | ||||||
| #       the binary builds will check out | #       the binary builds will check out | ||||||
| {%- set builder_repo = "pytorch/builder" -%} | {%- set builder_repo = "pytorch/builder" -%} | ||||||
| {%- set builder_branch = "main" -%} | {%- set builder_branch = "release/2.1" -%} | ||||||
|  |  | ||||||
| {%- macro concurrency(build_environment) -%} | {%- macro concurrency(build_environment) -%} | ||||||
| concurrency: | concurrency: | ||||||
|  | |||||||
| @ -97,13 +97,13 @@ jobs: | |||||||
|         with: |         with: | ||||||
|           name: !{{ config["build_name"] }} |           name: !{{ config["build_name"] }} | ||||||
|           path: "${{ runner.temp }}/artifacts/" |           path: "${{ runner.temp }}/artifacts/" | ||||||
|       !{{ common.checkout(deep_clone=False, directory="pytorch") }} |       !{{ common.checkout(deep_clone=False, directory="pytorch", checkout_pr_head=False) }} | ||||||
|       !{{ common.checkout(deep_clone=False, directory="builder", repository=common.builder_repo, branch=common.builder_branch) }} |       !{{ common.checkout(deep_clone=False, directory="builder", repository=common.builder_repo, branch=common.builder_branch, checkout_pr_head=False) }} | ||||||
|       - name: ROCm set GPU_FLAG |       - name: ROCm set GPU_FLAG | ||||||
|         run: | |         run: | | ||||||
|           echo "GPU_FLAG=--device=/dev/mem --device=/dev/kfd --device=/dev/dri --group-add video --group-add daemon" >> "${GITHUB_ENV}" |           echo "GPU_FLAG=--device=/dev/mem --device=/dev/kfd --device=/dev/dri --group-add video --group-add daemon" >> "${GITHUB_ENV}" | ||||||
|       - name: Pull Docker image |       - name: Pull Docker image | ||||||
|         uses: pytorch/test-infra/.github/actions/pull-docker-image@main |         uses: pytorch/test-infra/.github/actions/pull-docker-image@release/2.1 | ||||||
|         with: |         with: | ||||||
|           docker-image: !{{ config["container_image"] }} |           docker-image: !{{ config["container_image"] }} | ||||||
|       - name: Test Pytorch binary |       - name: Test Pytorch binary | ||||||
|  | |||||||
| @ -74,8 +74,8 @@ jobs: | |||||||
|           /bin/bash "${RUNNER_TEMP}/conda.sh" -b -p "${RUNNER_TEMP}/anaconda" |           /bin/bash "${RUNNER_TEMP}/conda.sh" -b -p "${RUNNER_TEMP}/anaconda" | ||||||
|           echo "${RUNNER_TEMP}/anaconda/bin" >> "${GITHUB_PATH}" |           echo "${RUNNER_TEMP}/anaconda/bin" >> "${GITHUB_PATH}" | ||||||
|           echo "DEVELOPER_DIR=/Applications/Xcode_13.3.1.app/Contents/Developer" >> "${GITHUB_ENV}" |           echo "DEVELOPER_DIR=/Applications/Xcode_13.3.1.app/Contents/Developer" >> "${GITHUB_ENV}" | ||||||
|       !{{ common.checkout(deep_clone=False, directory="pytorch") }} |       !{{ common.checkout(deep_clone=False, directory="pytorch", checkout_pr_head=False) }} | ||||||
|       !{{ common.checkout(deep_clone=False, directory="builder", repository=common.builder_repo, branch=common.builder_branch) }} |       !{{ common.checkout(deep_clone=False, directory="builder", repository=common.builder_repo, branch=common.builder_branch, checkout_pr_head=False) }} | ||||||
|       - name: Install sccache (only for non-forked PRs, and pushes to trunk) |       - name: Install sccache (only for non-forked PRs, and pushes to trunk) | ||||||
|         uses: nick-fields/retry@v2.8.2 |         uses: nick-fields/retry@v2.8.2 | ||||||
|         if: ${{ github.event_name == 'push' || github.event.pull_request.head.repo.full_name == github.repository }} |         if: ${{ github.event_name == 'push' || github.event.pull_request.head.repo.full_name == github.repository }} | ||||||
|  | |||||||
							
								
								
									
										2
									
								
								.github/templates/upload.yml.j2
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.github/templates/upload.yml.j2
									
									
									
									
										vendored
									
									
								
							| @ -67,6 +67,6 @@ | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
| {%- endmacro %} | {%- endmacro %} | ||||||
|  | |||||||
| @ -62,8 +62,8 @@ jobs: | |||||||
|     steps: |     steps: | ||||||
|       !{{ common.setup_ec2_windows() }} |       !{{ common.setup_ec2_windows() }} | ||||||
|       !{{ set_runner_specific_vars() }} |       !{{ set_runner_specific_vars() }} | ||||||
|       !{{ common.checkout(deep_clone=False, directory="pytorch") }} |       !{{ common.checkout(deep_clone=False, directory="pytorch", checkout_pr_head=False) }} | ||||||
|       !{{ common.checkout(deep_clone=False, directory="builder", repository=common.builder_repo, branch=common.builder_branch) }} |       !{{ common.checkout(deep_clone=False, directory="builder", repository=common.builder_repo, branch=common.builder_branch, checkout_pr_head=False) }} | ||||||
|       - name: Populate binary env |       - name: Populate binary env | ||||||
|         shell: bash |         shell: bash | ||||||
|         run: | |         run: | | ||||||
| @ -102,8 +102,8 @@ jobs: | |||||||
|         with: |         with: | ||||||
|           name: !{{ config["build_name"] }} |           name: !{{ config["build_name"] }} | ||||||
|           path: "${{ env.PYTORCH_FINAL_PACKAGE_DIR }}" |           path: "${{ env.PYTORCH_FINAL_PACKAGE_DIR }}" | ||||||
|       !{{ common.checkout(deep_clone=False, directory="pytorch") }} |       !{{ common.checkout(deep_clone=False, directory="pytorch", checkout_pr_head=False) }} | ||||||
|       !{{ common.checkout(deep_clone=False, directory="builder", repository=common.builder_repo, branch=common.builder_branch) }} |       !{{ common.checkout(deep_clone=False, directory="builder", repository=common.builder_repo, branch=common.builder_branch, checkout_pr_head=False) }} | ||||||
|       - name: Populate binary env |       - name: Populate binary env | ||||||
|         shell: bash |         shell: bash | ||||||
|         run: | |         run: | | ||||||
|  | |||||||
							
								
								
									
										12
									
								
								.github/workflows/_android-build-test.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										12
									
								
								.github/workflows/_android-build-test.yml
									
									
									
									
										vendored
									
									
								
							| @ -36,7 +36,7 @@ jobs: | |||||||
|       keep-going: ${{ steps.filter.outputs.keep-going }} |       keep-going: ${{ steps.filter.outputs.keep-going }} | ||||||
|     steps: |     steps: | ||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: pytorch/pytorch/.github/actions/checkout-pytorch@main |         uses: pytorch/pytorch/.github/actions/checkout-pytorch@release/2.1 | ||||||
|         with: |         with: | ||||||
|           fetch-depth: 1 |           fetch-depth: 1 | ||||||
|           submodules: false |           submodules: false | ||||||
| @ -58,25 +58,25 @@ jobs: | |||||||
|     runs-on: ${{ matrix.runner }} |     runs-on: ${{ matrix.runner }} | ||||||
|     steps: |     steps: | ||||||
|       - name: Setup SSH (Click me for login details) |       - name: Setup SSH (Click me for login details) | ||||||
|         uses: pytorch/test-infra/.github/actions/setup-ssh@main |         uses: pytorch/test-infra/.github/actions/setup-ssh@release/2.1 | ||||||
|         with: |         with: | ||||||
|           github-secret: ${{ secrets.GITHUB_TOKEN }} |           github-secret: ${{ secrets.GITHUB_TOKEN }} | ||||||
|  |  | ||||||
|       # [see note: pytorch repo ref] |       # [see note: pytorch repo ref] | ||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: pytorch/pytorch/.github/actions/checkout-pytorch@main |         uses: pytorch/pytorch/.github/actions/checkout-pytorch@release/2.1 | ||||||
|  |  | ||||||
|       - name: Setup Linux |       - name: Setup Linux | ||||||
|         uses: ./.github/actions/setup-linux |         uses: ./.github/actions/setup-linux | ||||||
|  |  | ||||||
|       - name: Calculate docker image |       - name: Calculate docker image | ||||||
|         id: calculate-docker-image |         id: calculate-docker-image | ||||||
|         uses: pytorch/test-infra/.github/actions/calculate-docker-image@main |         uses: pytorch/test-infra/.github/actions/calculate-docker-image@release/2.1 | ||||||
|         with: |         with: | ||||||
|           docker-image-name: ${{ inputs.docker-image-name }} |           docker-image-name: ${{ inputs.docker-image-name }} | ||||||
|  |  | ||||||
|       - name: Pull docker image |       - name: Pull docker image | ||||||
|         uses: pytorch/test-infra/.github/actions/pull-docker-image@main |         uses: pytorch/test-infra/.github/actions/pull-docker-image@release/2.1 | ||||||
|         with: |         with: | ||||||
|           docker-image: ${{ steps.calculate-docker-image.outputs.docker-image }} |           docker-image: ${{ steps.calculate-docker-image.outputs.docker-image }} | ||||||
|  |  | ||||||
| @ -140,5 +140,5 @@ jobs: | |||||||
|         if: always() |         if: always() | ||||||
|  |  | ||||||
|       - name: Teardown Linux |       - name: Teardown Linux | ||||||
|         uses: pytorch/test-infra/.github/actions/teardown-linux@main |         uses: pytorch/test-infra/.github/actions/teardown-linux@release/2.1 | ||||||
|         if: always() |         if: always() | ||||||
|  | |||||||
							
								
								
									
										12
									
								
								.github/workflows/_android-full-build-test.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										12
									
								
								.github/workflows/_android-full-build-test.yml
									
									
									
									
										vendored
									
									
								
							| @ -36,7 +36,7 @@ jobs: | |||||||
|       keep-going: ${{ steps.filter.outputs.keep-going }} |       keep-going: ${{ steps.filter.outputs.keep-going }} | ||||||
|     steps: |     steps: | ||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: pytorch/pytorch/.github/actions/checkout-pytorch@main |         uses: pytorch/pytorch/.github/actions/checkout-pytorch@release/2.1 | ||||||
|         with: |         with: | ||||||
|           fetch-depth: 1 |           fetch-depth: 1 | ||||||
|           submodules: false |           submodules: false | ||||||
| @ -58,25 +58,25 @@ jobs: | |||||||
|     runs-on: ${{ matrix.runner }} |     runs-on: ${{ matrix.runner }} | ||||||
|     steps: |     steps: | ||||||
|       - name: Setup SSH (Click me for login details) |       - name: Setup SSH (Click me for login details) | ||||||
|         uses: pytorch/test-infra/.github/actions/setup-ssh@main |         uses: pytorch/test-infra/.github/actions/setup-ssh@release/2.1 | ||||||
|         with: |         with: | ||||||
|           github-secret: ${{ secrets.GITHUB_TOKEN }} |           github-secret: ${{ secrets.GITHUB_TOKEN }} | ||||||
|  |  | ||||||
|       # [see note: pytorch repo ref] |       # [see note: pytorch repo ref] | ||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: pytorch/pytorch/.github/actions/checkout-pytorch@main |         uses: pytorch/pytorch/.github/actions/checkout-pytorch@release/2.1 | ||||||
|  |  | ||||||
|       - name: Setup Linux |       - name: Setup Linux | ||||||
|         uses: ./.github/actions/setup-linux |         uses: ./.github/actions/setup-linux | ||||||
|  |  | ||||||
|       - name: Calculate docker image |       - name: Calculate docker image | ||||||
|         id: calculate-docker-image |         id: calculate-docker-image | ||||||
|         uses: pytorch/test-infra/.github/actions/calculate-docker-image@main |         uses: pytorch/test-infra/.github/actions/calculate-docker-image@release/2.1 | ||||||
|         with: |         with: | ||||||
|           docker-image-name: ${{ inputs.docker-image-name }} |           docker-image-name: ${{ inputs.docker-image-name }} | ||||||
|  |  | ||||||
|       - name: Pull docker image |       - name: Pull docker image | ||||||
|         uses: pytorch/test-infra/.github/actions/pull-docker-image@main |         uses: pytorch/test-infra/.github/actions/pull-docker-image@release/2.1 | ||||||
|         with: |         with: | ||||||
|           docker-image: ${{ steps.calculate-docker-image.outputs.docker-image }} |           docker-image: ${{ steps.calculate-docker-image.outputs.docker-image }} | ||||||
|  |  | ||||||
| @ -185,5 +185,5 @@ jobs: | |||||||
|         if: always() |         if: always() | ||||||
|  |  | ||||||
|       - name: Teardown Linux |       - name: Teardown Linux | ||||||
|         uses: pytorch/test-infra/.github/actions/teardown-linux@main |         uses: pytorch/test-infra/.github/actions/teardown-linux@release/2.1 | ||||||
|         if: always() |         if: always() | ||||||
|  | |||||||
							
								
								
									
										14
									
								
								.github/workflows/_bazel-build-test.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										14
									
								
								.github/workflows/_bazel-build-test.yml
									
									
									
									
										vendored
									
									
								
							| @ -41,7 +41,7 @@ jobs: | |||||||
|       reenabled-issues: ${{ steps.filter.outputs.reenabled-issues }} |       reenabled-issues: ${{ steps.filter.outputs.reenabled-issues }} | ||||||
|     steps: |     steps: | ||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: pytorch/pytorch/.github/actions/checkout-pytorch@main |         uses: pytorch/pytorch/.github/actions/checkout-pytorch@release/2.1 | ||||||
|         with: |         with: | ||||||
|           fetch-depth: 1 |           fetch-depth: 1 | ||||||
|           submodules: false |           submodules: false | ||||||
| @ -63,30 +63,30 @@ jobs: | |||||||
|     runs-on: ${{ matrix.runner }} |     runs-on: ${{ matrix.runner }} | ||||||
|     steps: |     steps: | ||||||
|       - name: Setup SSH (Click me for login details) |       - name: Setup SSH (Click me for login details) | ||||||
|         uses: pytorch/test-infra/.github/actions/setup-ssh@main |         uses: pytorch/test-infra/.github/actions/setup-ssh@release/2.1 | ||||||
|         with: |         with: | ||||||
|           github-secret: ${{ secrets.GITHUB_TOKEN }} |           github-secret: ${{ secrets.GITHUB_TOKEN }} | ||||||
|  |  | ||||||
|       # [see note: pytorch repo ref] |       # [see note: pytorch repo ref] | ||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: pytorch/pytorch/.github/actions/checkout-pytorch@main |         uses: pytorch/pytorch/.github/actions/checkout-pytorch@release/2.1 | ||||||
|  |  | ||||||
|       - name: Setup Linux |       - name: Setup Linux | ||||||
|         uses: ./.github/actions/setup-linux |         uses: ./.github/actions/setup-linux | ||||||
|  |  | ||||||
|       - name: Calculate docker image |       - name: Calculate docker image | ||||||
|         id: calculate-docker-image |         id: calculate-docker-image | ||||||
|         uses: pytorch/test-infra/.github/actions/calculate-docker-image@main |         uses: pytorch/test-infra/.github/actions/calculate-docker-image@release/2.1 | ||||||
|         with: |         with: | ||||||
|           docker-image-name: ${{ inputs.docker-image-name }} |           docker-image-name: ${{ inputs.docker-image-name }} | ||||||
|  |  | ||||||
|       - name: Pull docker image |       - name: Pull docker image | ||||||
|         uses: pytorch/test-infra/.github/actions/pull-docker-image@main |         uses: pytorch/test-infra/.github/actions/pull-docker-image@release/2.1 | ||||||
|         with: |         with: | ||||||
|           docker-image: ${{ steps.calculate-docker-image.outputs.docker-image }} |           docker-image: ${{ steps.calculate-docker-image.outputs.docker-image }} | ||||||
|  |  | ||||||
|       - name: Install nvidia driver, nvidia-docker runtime, set GPU_FLAG |       - name: Install nvidia driver, nvidia-docker runtime, set GPU_FLAG | ||||||
|         uses: pytorch/test-infra/.github/actions/setup-nvidia@main |         uses: pytorch/test-infra/.github/actions/setup-nvidia@release/2.1 | ||||||
|         if: ${{ inputs.cuda-version != 'cpu' }} |         if: ${{ inputs.cuda-version != 'cpu' }} | ||||||
|  |  | ||||||
|       - name: Output disk space left |       - name: Output disk space left | ||||||
| @ -197,5 +197,5 @@ jobs: | |||||||
|           file-suffix: bazel-${{ github.job }}_${{ steps.get-job-id.outputs.job-id }} |           file-suffix: bazel-${{ github.job }}_${{ steps.get-job-id.outputs.job-id }} | ||||||
|  |  | ||||||
|       - name: Teardown Linux |       - name: Teardown Linux | ||||||
|         uses: pytorch/test-infra/.github/actions/teardown-linux@main |         uses: pytorch/test-infra/.github/actions/teardown-linux@release/2.1 | ||||||
|         if: always() |         if: always() | ||||||
|  | |||||||
							
								
								
									
										15
									
								
								.github/workflows/_binary-build-linux.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										15
									
								
								.github/workflows/_binary-build-linux.yml
									
									
									
									
										vendored
									
									
								
							| @ -139,12 +139,12 @@ jobs: | |||||||
|         run: env |         run: env | ||||||
|  |  | ||||||
|       - name: "[FB EMPLOYEES] Enable SSH (Click me for login details)" |       - name: "[FB EMPLOYEES] Enable SSH (Click me for login details)" | ||||||
|         uses: pytorch/test-infra/.github/actions/setup-ssh@main |         uses: pytorch/test-infra/.github/actions/setup-ssh@release/2.1 | ||||||
|         with: |         with: | ||||||
|           github-secret: ${{ secrets.github-token }} |           github-secret: ${{ secrets.github-token }} | ||||||
|  |  | ||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: pytorch/pytorch/.github/actions/checkout-pytorch@main |         uses: pytorch/pytorch/.github/actions/checkout-pytorch@release/2.1 | ||||||
|         with: |         with: | ||||||
|           no-sudo: ${{ inputs.build_environment == 'linux-aarch64-binary-manywheel' }} |           no-sudo: ${{ inputs.build_environment == 'linux-aarch64-binary-manywheel' }} | ||||||
|  |  | ||||||
| @ -159,10 +159,12 @@ jobs: | |||||||
|       - name: Clean workspace |       - name: Clean workspace | ||||||
|         shell: bash |         shell: bash | ||||||
|         run: | |         run: | | ||||||
|  |           set -eux | ||||||
|  |  | ||||||
|           rm -rf "${GITHUB_WORKSPACE}" |           rm -rf "${GITHUB_WORKSPACE}" | ||||||
|           mkdir "${GITHUB_WORKSPACE}" |           mkdir "${GITHUB_WORKSPACE}" | ||||||
|  |  | ||||||
|           if [[ inputs.build_environment == 'linux-aarch64-binary-manywheel' ]]; then |           if [[ ${{ inputs.build_environment }} == 'linux-aarch64-binary-manywheel' ]]; then | ||||||
|             rm -rf "${RUNNER_TEMP}/artifacts" |             rm -rf "${RUNNER_TEMP}/artifacts" | ||||||
|             mkdir "${RUNNER_TEMP}/artifacts" |             mkdir "${RUNNER_TEMP}/artifacts" | ||||||
|           fi |           fi | ||||||
| @ -170,7 +172,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch to pytorch dir |       - name: Checkout PyTorch to pytorch dir | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -184,7 +185,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder to builder dir |       - name: Checkout pytorch/builder to builder dir | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -210,7 +211,7 @@ jobs: | |||||||
|  |  | ||||||
|       - name: Pull Docker image |       - name: Pull Docker image | ||||||
|         if: ${{ steps.filter.outputs.is-test-matrix-empty == 'False' }} |         if: ${{ steps.filter.outputs.is-test-matrix-empty == 'False' }} | ||||||
|         uses: pytorch/test-infra/.github/actions/pull-docker-image@main |         uses: pytorch/test-infra/.github/actions/pull-docker-image@release/2.1 | ||||||
|         with: |         with: | ||||||
|           docker-image: ${{ inputs.DOCKER_IMAGE }} |           docker-image: ${{ inputs.DOCKER_IMAGE }} | ||||||
|  |  | ||||||
| @ -267,7 +268,7 @@ jobs: | |||||||
|  |  | ||||||
|       - name: Teardown Linux |       - name: Teardown Linux | ||||||
|         if: always() |         if: always() | ||||||
|         uses: pytorch/test-infra/.github/actions/teardown-linux@main |         uses: pytorch/test-infra/.github/actions/teardown-linux@release/2.1 | ||||||
|  |  | ||||||
|       - name: Chown workspace |       - name: Chown workspace | ||||||
|         if: always() |         if: always() | ||||||
|  | |||||||
							
								
								
									
										13
									
								
								.github/workflows/_binary-test-linux.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										13
									
								
								.github/workflows/_binary-test-linux.yml
									
									
									
									
										vendored
									
									
								
							| @ -127,13 +127,13 @@ jobs: | |||||||
|           } >> "${GITHUB_ENV} }}" |           } >> "${GITHUB_ENV} }}" | ||||||
|  |  | ||||||
|       - name: "[FB EMPLOYEES] Enable SSH (Click me for login details)" |       - name: "[FB EMPLOYEES] Enable SSH (Click me for login details)" | ||||||
|         uses: pytorch/test-infra/.github/actions/setup-ssh@main |         uses: pytorch/test-infra/.github/actions/setup-ssh@release/2.1 | ||||||
|         with: |         with: | ||||||
|           github-secret: ${{ secrets.github-token }} |           github-secret: ${{ secrets.github-token }} | ||||||
|  |  | ||||||
|         # Setup the environment |         # Setup the environment | ||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: pytorch/pytorch/.github/actions/checkout-pytorch@main |         uses: pytorch/pytorch/.github/actions/checkout-pytorch@release/2.1 | ||||||
|         with: |         with: | ||||||
|           no-sudo: ${{ inputs.build_environment == 'linux-aarch64-binary-manywheel' }} |           no-sudo: ${{ inputs.build_environment == 'linux-aarch64-binary-manywheel' }} | ||||||
|  |  | ||||||
| @ -154,7 +154,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch to pytorch dir |       - name: Checkout PyTorch to pytorch dir | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|  |  | ||||||
| @ -167,7 +166,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder to builder dir |       - name: Checkout pytorch/builder to builder dir | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -198,12 +197,12 @@ jobs: | |||||||
|           path: "${{ runner.temp }}/artifacts/" |           path: "${{ runner.temp }}/artifacts/" | ||||||
|  |  | ||||||
|       - name: Install nvidia driver, nvidia-docker runtime, set GPU_FLAG |       - name: Install nvidia driver, nvidia-docker runtime, set GPU_FLAG | ||||||
|         uses: pytorch/test-infra/.github/actions/setup-nvidia@main |         uses: pytorch/test-infra/.github/actions/setup-nvidia@release/2.1 | ||||||
|         if: ${{ inputs.GPU_ARCH_TYPE == 'cuda' && steps.filter.outputs.is-test-matrix-empty == 'False' }} |         if: ${{ inputs.GPU_ARCH_TYPE == 'cuda' && steps.filter.outputs.is-test-matrix-empty == 'False' }} | ||||||
|  |  | ||||||
|       - name: Pull Docker image |       - name: Pull Docker image | ||||||
|         if: ${{ steps.filter.outputs.is-test-matrix-empty == 'False' }} |         if: ${{ steps.filter.outputs.is-test-matrix-empty == 'False' }} | ||||||
|         uses: pytorch/test-infra/.github/actions/pull-docker-image@main |         uses: pytorch/test-infra/.github/actions/pull-docker-image@release/2.1 | ||||||
|         with: |         with: | ||||||
|           docker-image: ${{ inputs.DOCKER_IMAGE }} |           docker-image: ${{ inputs.DOCKER_IMAGE }} | ||||||
|  |  | ||||||
| @ -213,7 +212,7 @@ jobs: | |||||||
|  |  | ||||||
|       - name: Teardown Linux |       - name: Teardown Linux | ||||||
|         if: always() |         if: always() | ||||||
|         uses: pytorch/test-infra/.github/actions/teardown-linux@main |         uses: pytorch/test-infra/.github/actions/teardown-linux@release/2.1 | ||||||
|  |  | ||||||
|       - name: Chown workspace |       - name: Chown workspace | ||||||
|         if: always() |         if: always() | ||||||
|  | |||||||
							
								
								
									
										4
									
								
								.github/workflows/_binary-upload.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								.github/workflows/_binary-upload.yml
									
									
									
									
										vendored
									
									
								
							| @ -97,7 +97,7 @@ jobs: | |||||||
|       SHA1: ${{ github.event.pull_request.head.sha || github.sha }} |       SHA1: ${{ github.event.pull_request.head.sha || github.sha }} | ||||||
|     steps: |     steps: | ||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: pytorch/pytorch/.github/actions/checkout-pytorch@main |         uses: pytorch/pytorch/.github/actions/checkout-pytorch@release/2.1 | ||||||
|         with: |         with: | ||||||
|           no-sudo: true |           no-sudo: true | ||||||
|  |  | ||||||
| @ -121,7 +121,7 @@ jobs: | |||||||
|         shell: bash -e -l {0} |         shell: bash -e -l {0} | ||||||
|         run: | |         run: | | ||||||
|           # reference ends with an RC suffix |           # reference ends with an RC suffix | ||||||
|           if [[ ${GITHUB_REF_NAME} = *-rc[0-9]* ]]; then |           if [[ "${GITHUB_REF_NAME}" = *-rc[0-9]* ]]; then | ||||||
|             echo "UPLOAD_CHANNEL=test" >> "$GITHUB_ENV" |             echo "UPLOAD_CHANNEL=test" >> "$GITHUB_ENV" | ||||||
|           fi |           fi | ||||||
|  |  | ||||||
|  | |||||||
							
								
								
									
										6
									
								
								.github/workflows/_buck-build-test.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										6
									
								
								.github/workflows/_buck-build-test.yml
									
									
									
									
										vendored
									
									
								
							| @ -22,7 +22,7 @@ jobs: | |||||||
|       keep-going: ${{ steps.filter.outputs.keep-going }} |       keep-going: ${{ steps.filter.outputs.keep-going }} | ||||||
|     steps: |     steps: | ||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: pytorch/pytorch/.github/actions/checkout-pytorch@main |         uses: pytorch/pytorch/.github/actions/checkout-pytorch@release/2.1 | ||||||
|         with: |         with: | ||||||
|           fetch-depth: 1 |           fetch-depth: 1 | ||||||
|           submodules: false |           submodules: false | ||||||
| @ -43,7 +43,7 @@ jobs: | |||||||
|     runs-on: ${{ matrix.runner }} |     runs-on: ${{ matrix.runner }} | ||||||
|     steps: |     steps: | ||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: pytorch/pytorch/.github/actions/checkout-pytorch@main |         uses: pytorch/pytorch/.github/actions/checkout-pytorch@release/2.1 | ||||||
|  |  | ||||||
|       - name: Set up JDK 8 |       - name: Set up JDK 8 | ||||||
|         uses: actions/setup-java@v3 |         uses: actions/setup-java@v3 | ||||||
| @ -52,7 +52,7 @@ jobs: | |||||||
|           distribution: 'temurin' |           distribution: 'temurin' | ||||||
|  |  | ||||||
|       - name: Setup miniconda |       - name: Setup miniconda | ||||||
|         uses: pytorch/test-infra/.github/actions/setup-miniconda@main |         uses: pytorch/test-infra/.github/actions/setup-miniconda@release/2.1 | ||||||
|         with: |         with: | ||||||
|           python-version: 3.8 |           python-version: 3.8 | ||||||
|           environment-file: .github/requirements/conda-env-${{ runner.os }}-${{ runner.arch }} |           environment-file: .github/requirements/conda-env-${{ runner.os }}-${{ runner.arch }} | ||||||
|  | |||||||
							
								
								
									
										10
									
								
								.github/workflows/_docs.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										10
									
								
								.github/workflows/_docs.yml
									
									
									
									
										vendored
									
									
								
							| @ -66,7 +66,7 @@ jobs: | |||||||
|     name: build-docs-${{ matrix.docs_type }}-${{ inputs.push }} |     name: build-docs-${{ matrix.docs_type }}-${{ inputs.push }} | ||||||
|     steps: |     steps: | ||||||
|       - name: Setup SSH (Click me for login details) |       - name: Setup SSH (Click me for login details) | ||||||
|         uses: pytorch/test-infra/.github/actions/setup-ssh@main |         uses: pytorch/test-infra/.github/actions/setup-ssh@release/2.1 | ||||||
|         with: |         with: | ||||||
|           github-secret: ${{ secrets.GITHUB_TOKEN }} |           github-secret: ${{ secrets.GITHUB_TOKEN }} | ||||||
|           instructions: | |           instructions: | | ||||||
| @ -77,19 +77,19 @@ jobs: | |||||||
|  |  | ||||||
|       # [see note: pytorch repo ref] |       # [see note: pytorch repo ref] | ||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: pytorch/pytorch/.github/actions/checkout-pytorch@main |         uses: pytorch/pytorch/.github/actions/checkout-pytorch@release/2.1 | ||||||
|  |  | ||||||
|       - name: Setup Linux |       - name: Setup Linux | ||||||
|         uses: ./.github/actions/setup-linux |         uses: ./.github/actions/setup-linux | ||||||
|  |  | ||||||
|       - name: Calculate docker image |       - name: Calculate docker image | ||||||
|         id: calculate-docker-image |         id: calculate-docker-image | ||||||
|         uses: pytorch/test-infra/.github/actions/calculate-docker-image@main |         uses: pytorch/test-infra/.github/actions/calculate-docker-image@release/2.1 | ||||||
|         with: |         with: | ||||||
|           docker-image-name: ${{ inputs.docker-image }} |           docker-image-name: ${{ inputs.docker-image }} | ||||||
|  |  | ||||||
|       - name: Pull docker image |       - name: Pull docker image | ||||||
|         uses: pytorch/test-infra/.github/actions/pull-docker-image@main |         uses: pytorch/test-infra/.github/actions/pull-docker-image@release/2.1 | ||||||
|         with: |         with: | ||||||
|           docker-image: ${{ steps.calculate-docker-image.outputs.docker-image }} |           docker-image: ${{ steps.calculate-docker-image.outputs.docker-image }} | ||||||
|  |  | ||||||
| @ -187,5 +187,5 @@ jobs: | |||||||
|           s3-prefix: pytorch/pytorch/${{ github.event.pull_request.number }}/functorchdocs |           s3-prefix: pytorch/pytorch/${{ github.event.pull_request.number }}/functorchdocs | ||||||
|  |  | ||||||
|       - name: Teardown Linux |       - name: Teardown Linux | ||||||
|         uses: pytorch/test-infra/.github/actions/teardown-linux@main |         uses: pytorch/test-infra/.github/actions/teardown-linux@release/2.1 | ||||||
|         if: always() |         if: always() | ||||||
|  | |||||||
							
								
								
									
										371
									
								
								.github/workflows/_ios-build-test.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										371
									
								
								.github/workflows/_ios-build-test.yml
									
									
									
									
										vendored
									
									
								
							| @ -7,14 +7,6 @@ on: | |||||||
|         required: true |         required: true | ||||||
|         type: string |         type: string | ||||||
|         description: Top-level label for what's being built/tested. |         description: Top-level label for what's being built/tested. | ||||||
|       ios-platform: |  | ||||||
|         required: true |  | ||||||
|         type: string |  | ||||||
|         description: Which iOS platform to build for. |  | ||||||
|       ios-arch: |  | ||||||
|         required: true |  | ||||||
|         type: string |  | ||||||
|         description: Which iOS arch to build for. |  | ||||||
|       sync-tag: |       sync-tag: | ||||||
|         required: false |         required: false | ||||||
|         type: string |         type: string | ||||||
| @ -31,8 +23,6 @@ on: | |||||||
| env: | env: | ||||||
|   GIT_DEFAULT_BRANCH: ${{ github.event.repository.default_branch }} |   GIT_DEFAULT_BRANCH: ${{ github.event.repository.default_branch }} | ||||||
|   BUILD_ENVIRONMENT: ${{ inputs.build-environment }} |   BUILD_ENVIRONMENT: ${{ inputs.build-environment }} | ||||||
|   IOS_PLATFORM: ${{ inputs.ios-platform }} |  | ||||||
|   IOS_ARCH: ${{ inputs.ios-arch }} |  | ||||||
|  |  | ||||||
| jobs: | jobs: | ||||||
|   filter: |   filter: | ||||||
| @ -43,7 +33,7 @@ jobs: | |||||||
|       keep-going: ${{ steps.filter.outputs.keep-going }} |       keep-going: ${{ steps.filter.outputs.keep-going }} | ||||||
|     steps: |     steps: | ||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: pytorch/pytorch/.github/actions/checkout-pytorch@main |         uses: pytorch/pytorch/.github/actions/checkout-pytorch@release/2.1 | ||||||
|         with: |         with: | ||||||
|           fetch-depth: 1 |           fetch-depth: 1 | ||||||
|           submodules: false |           submodules: false | ||||||
| @ -63,33 +53,30 @@ jobs: | |||||||
|       matrix: ${{ fromJSON(needs.filter.outputs.test-matrix) }} |       matrix: ${{ fromJSON(needs.filter.outputs.test-matrix) }} | ||||||
|       fail-fast: false |       fail-fast: false | ||||||
|     runs-on: ${{ matrix.runner }} |     runs-on: ${{ matrix.runner }} | ||||||
|  |     env: | ||||||
|  |       IOS_PLATFORM: ${{ matrix.ios_platform }} | ||||||
|  |       IOS_ARCH: ${{ matrix.ios_arch }} | ||||||
|  |       BUILD_LITE_INTERPRETER: ${{ matrix.use_lite_interpreter }} | ||||||
|  |       USE_PYTORCH_METAL: ${{ matrix.use_metal }} | ||||||
|  |       USE_COREML_DELEGATE: ${{ matrix.use_coreml }} | ||||||
|  |       CUSTOM_OP_LIST: ${{ matrix.use_custom_op_list }} | ||||||
|  |       # TODO: Bump it to 2.2.0 after cherry pick this or figure out a better way | ||||||
|  |       # to get this version instead of hard coding it here | ||||||
|  |       PYTORCH_VERSION: 2.1.0 | ||||||
|     timeout-minutes: 240 |     timeout-minutes: 240 | ||||||
|     steps: |     steps: | ||||||
|       # [see note: pytorch repo ref] |       # [see note: pytorch repo ref] | ||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: pytorch/pytorch/.github/actions/checkout-pytorch@main |         uses: pytorch/pytorch/.github/actions/checkout-pytorch@release/2.1 | ||||||
|  |  | ||||||
|       - name: Populate CI build options |       - name: Populate CI build options | ||||||
|  |         shell: bash | ||||||
|         run: | |         run: | | ||||||
|           # Most builds use the lite interpreter, if certain builds shouldn't |           set -ex | ||||||
|           # build the lite interpreter this env variable should get over-written |  | ||||||
|           # in the following case statement |  | ||||||
|           echo "BUILD_LITE_INTERPRETER=1" >> "${GITHUB_ENV}" |  | ||||||
|  |  | ||||||
|           case ${BUILD_ENVIRONMENT} in |           if [ -n "${CUSTOM_OP_LIST:-}" ]; then | ||||||
|             *metal*) |             echo "SELECTED_OP_LIST=${GITHUB_WORKSPACE}/ios/TestApp/custom_build/${CUSTOM_OP_LIST}" >> "${GITHUB_ENV}" | ||||||
|               echo "USE_PYTORCH_METAL=1" >> "${GITHUB_ENV}" |           fi | ||||||
|               ;; |  | ||||||
|             *full_jit*) |  | ||||||
|               echo "BUILD_LITE_INTERPRETER=0" >> "${GITHUB_ENV}" |  | ||||||
|               ;; |  | ||||||
|             *custom*) |  | ||||||
|               echo "SELECTED_OP_LIST=${GITHUB_WORKSPACE}/ios/TestApp/custom_build/mobilenetv2.yaml" >> "${GITHUB_ENV}" |  | ||||||
|               ;; |  | ||||||
|             *coreml*) |  | ||||||
|               echo "USE_COREML_DELEGATE=1" >> "${GITHUB_ENV}" |  | ||||||
|               ;; |  | ||||||
|           esac |  | ||||||
|  |  | ||||||
|       - name: Install brew dependencies |       - name: Install brew dependencies | ||||||
|         uses: nick-fields/retry@v2.8.2 |         uses: nick-fields/retry@v2.8.2 | ||||||
| @ -102,7 +89,7 @@ jobs: | |||||||
|             brew install libtool |             brew install libtool | ||||||
|  |  | ||||||
|       - name: Setup miniconda for iOS |       - name: Setup miniconda for iOS | ||||||
|         uses: pytorch/test-infra/.github/actions/setup-miniconda@main |         uses: pytorch/test-infra/.github/actions/setup-miniconda@release/2.1 | ||||||
|         with: |         with: | ||||||
|           python-version: "3.9" |           python-version: "3.9" | ||||||
|           environment-file: .github/requirements/conda-env-iOS |           environment-file: .github/requirements/conda-env-iOS | ||||||
| @ -116,54 +103,67 @@ jobs: | |||||||
|           retry_wait_seconds: 90 |           retry_wait_seconds: 90 | ||||||
|           command: | |           command: | | ||||||
|             set -x |             set -x | ||||||
|             cd ios/TestApp |  | ||||||
|             # install fastlane |             pushd ios/TestApp | ||||||
|  |             # Install fastlane | ||||||
|             sudo gem install bundler && bundle install |             sudo gem install bundler && bundle install | ||||||
|             bundle update fastlane |             bundle update fastlane | ||||||
|  |             popd | ||||||
|  |  | ||||||
|       - name: Build PyTorch Mobile Runtime |       - name: Build PyTorch mobile runtime | ||||||
|  |         shell: bash | ||||||
|         run: | |         run: | | ||||||
|  |           set -eux | ||||||
|           # shellcheck disable=SC1091 |           # shellcheck disable=SC1091 | ||||||
|           export TCLLIBPATH="/usr/local/lib" |           export TCLLIBPATH="/usr/local/lib" | ||||||
|           python -VV |  | ||||||
|           ${CONDA_RUN} scripts/build_ios.sh |           ${CONDA_RUN} scripts/build_ios.sh | ||||||
|  |  | ||||||
|       - name: Build TestApp |       - name: Build TestApp | ||||||
|         if: inputs.ios-platform == 'SIMULATOR' |         if: matrix.ios_platform == 'SIMULATOR' | ||||||
|         timeout-minutes: 15 |         timeout-minutes: 15 | ||||||
|         run: | |         run: | | ||||||
|           # run the ruby build script |           # Run the ruby build script | ||||||
|           if ! [ -x "$(command -v xcodebuild)" ]; then |           if ! [ -x "$(command -v xcodebuild)" ]; then | ||||||
|             echo 'Error: xcodebuild is not installed.' |             echo 'Error: xcodebuild is not installed.' | ||||||
|             exit 1 |             exit 1 | ||||||
|           fi |           fi | ||||||
|           ruby scripts/xcode_build.rb -i build_ios/install -x ios/TestApp/TestApp.xcodeproj -p "${IOS_PLATFORM}" |           ruby scripts/xcode_build.rb -i build_ios/install -x ios/TestApp/TestApp.xcodeproj -p "${IOS_PLATFORM}" | ||||||
|  |  | ||||||
|       - name: Run Simulator Tests |       - name: Run simulator tests | ||||||
|         if: inputs.ios-platform == 'SIMULATOR' |         if: matrix.ios_platform == 'SIMULATOR' | ||||||
|  |         shell: bash | ||||||
|         run: | |         run: | | ||||||
|  |           set -eux | ||||||
|           # shellcheck disable=SC1091 |           # shellcheck disable=SC1091 | ||||||
|           # use the pytorch nightly build to generate models |           # Use the pytorch nightly build to generate models | ||||||
|           ${CONDA_RUN} pip3 install --pre torch torchvision torchaudio -f https://download.pytorch.org/whl/nightly/cpu/torch_nightly.html |           ${CONDA_RUN} pip install --pre torch torchvision torchaudio --index-url https://download.pytorch.org/whl/nightly/cpu | ||||||
|           # generate models for differnet backends |  | ||||||
|           cd "${GITHUB_WORKSPACE}/ios/TestApp/benchmark" |           # Generate models for differnet backends | ||||||
|  |           pushd "${GITHUB_WORKSPACE}/ios/TestApp/benchmark" | ||||||
|           mkdir -p ../models |           mkdir -p ../models | ||||||
|  |           # NB: Both of the following scripts only export models with lite interpreter | ||||||
|           if [ "${USE_COREML_DELEGATE}" == 1 ]; then |           if [ "${USE_COREML_DELEGATE}" == 1 ]; then | ||||||
|             ${CONDA_RUN} python coreml_backend.py |             ${CONDA_RUN} python coreml_backend.py | ||||||
|           else |           else | ||||||
|             cd "${GITHUB_WORKSPACE}" |             pushd "${GITHUB_WORKSPACE}" | ||||||
|             ${CONDA_RUN} python test/mobile/model_test/gen_test_model.py ios-test |             ${CONDA_RUN} python test/mobile/model_test/gen_test_model.py ios-test | ||||||
|  |             popd | ||||||
|           fi |           fi | ||||||
|           cd "${GITHUB_WORKSPACE}/ios/TestApp/benchmark" |  | ||||||
|           if [ "${BUILD_LITE_INTERPRETER}" == 1 ]; then |           if [ "${BUILD_LITE_INTERPRETER}" == 1 ]; then | ||||||
|             echo "Setting up the TestApp for LiteInterpreter" |             echo "Setting up the TestApp for LiteInterpreter" | ||||||
|             ruby setup.rb --lite 1 |             ruby setup.rb --lite 1 | ||||||
|           else |           else | ||||||
|  |             # Generate some models for JIT without lite interpreter | ||||||
|  |             ${CONDA_RUN} python trace_model.py | ||||||
|  |  | ||||||
|             echo "Setting up the TestApp for Full JIT" |             echo "Setting up the TestApp for Full JIT" | ||||||
|             ruby setup.rb |             ruby setup.rb | ||||||
|           fi |           fi | ||||||
|           cd "${GITHUB_WORKSPACE}/ios/TestApp" |           popd | ||||||
|           # instruments -s -devices |  | ||||||
|  |           pushd "${GITHUB_WORKSPACE}/ios/TestApp" | ||||||
|  |           # Instruments -s -devices | ||||||
|           if [ "${BUILD_LITE_INTERPRETER}" == 1 ]; then |           if [ "${BUILD_LITE_INTERPRETER}" == 1 ]; then | ||||||
|             if [ "${USE_COREML_DELEGATE}" == 1 ]; then |             if [ "${USE_COREML_DELEGATE}" == 1 ]; then | ||||||
|               bundle exec fastlane scan --only_testing TestAppTests/TestAppTests/testCoreML |               bundle exec fastlane scan --only_testing TestAppTests/TestAppTests/testCoreML | ||||||
| @ -173,9 +173,282 @@ jobs: | |||||||
|           else |           else | ||||||
|             bundle exec fastlane scan --only_testing TestAppTests/TestAppTests/testFullJIT |             bundle exec fastlane scan --only_testing TestAppTests/TestAppTests/testFullJIT | ||||||
|           fi |           fi | ||||||
|  |           popd | ||||||
|  |  | ||||||
|       - name: Dump Simulator Tests On a Failure |       - name: Dump simulator tests on failure | ||||||
|         if: failure() && inputs.ios-platform == 'SIMULATOR' |         if: failure() && matrix.ios_platform == 'SIMULATOR' | ||||||
|         run: | |         run: | | ||||||
|           echo "Simulator Tests Logs:" |           echo "Simulator Tests Logs:" | ||||||
|           cat /Users/runner/Library/Logs/scan/*.log |           cat /Users/runner/Library/Logs/scan/*.log | ||||||
|  |  | ||||||
|  |       - name: Prepare the build artifacts for upload | ||||||
|  |         shell: bash | ||||||
|  |         run: | | ||||||
|  |           set -eux | ||||||
|  |  | ||||||
|  |           # The structure of the folder is as follows: | ||||||
|  |           # | ||||||
|  |           # RUNNER_TEMP/ | ||||||
|  |           # └── IOS_ARCH/ | ||||||
|  |           #     ├── LICENSE | ||||||
|  |           #     ├── install | ||||||
|  |           #     │   ├── include | ||||||
|  |           #     │   │   └── headers | ||||||
|  |           #     │   └── lib | ||||||
|  |           #     │       ├── libXNNPACK.a | ||||||
|  |           #     │       ├── libc10.a | ||||||
|  |           #     │       ├── libclog.a | ||||||
|  |           #     │       ├── libcpuinfo.a | ||||||
|  |           #     │       ├── libeigen_blas.a | ||||||
|  |           #     │       ├── libpthreadpool.a | ||||||
|  |           #     │       ├── libpytorch_qnnpack.a | ||||||
|  |           #     │       ├── libtorch.a | ||||||
|  |           #     │       └── libtorch_cpu.a | ||||||
|  |           #     ├── src | ||||||
|  |           #     │   └── LibTorch-Lite.h | ||||||
|  |           #     └── version.txt | ||||||
|  |           SETUP_DIR="${RUNNER_TEMP}/${IOS_ARCH}" | ||||||
|  |           mkdir -p "${SETUP_DIR}/src" | ||||||
|  |  | ||||||
|  |           cp -R "${GITHUB_WORKSPACE}/build_ios/install" "${SETUP_DIR}" | ||||||
|  |           # Copy the umbrella header and license | ||||||
|  |           if [ "${BUILD_LITE_INTERPRETER}" == 1 ]; then | ||||||
|  |             cp "${GITHUB_WORKSPACE}/ios/LibTorch-Lite.h" "${SETUP_DIR}/src" | ||||||
|  |           else | ||||||
|  |             cp "${GITHUB_WORKSPACE}/ios/LibTorch.h" "${SETUP_DIR}/src" | ||||||
|  |           fi | ||||||
|  |  | ||||||
|  |           # Copy license and version | ||||||
|  |           cp "${GITHUB_WORKSPACE}/LICENSE" "${SETUP_DIR}" | ||||||
|  |           echo "${PYTORCH_VERSION}" > "${SETUP_DIR}"/version.txt | ||||||
|  |  | ||||||
|  |           # Save the podspec for the upload job later | ||||||
|  |           if [ "${BUILD_LITE_INTERPRETER}" == "1" ]; then | ||||||
|  |             DATE=$(date -u +%Y%m%d) | ||||||
|  |             cp "${GITHUB_WORKSPACE}"/ios/LibTorch-Lite-Nightly.podspec.template "${SETUP_DIR}"/LibTorch-Lite-Nightly.podspec | ||||||
|  |             sed -i '' -e "s/IOS_NIGHTLY_BUILD_VERSION/${PYTORCH_VERSION}.${DATE}/g" "${SETUP_DIR}"/LibTorch-Lite-Nightly.podspec | ||||||
|  |  | ||||||
|  |             cp "${GITHUB_WORKSPACE}"/ios/LibTorch-Lite.podspec.template "${SETUP_DIR}"/LibTorch-Lite.podspec | ||||||
|  |             sed -i '' -e "s/IOS_BUILD_VERSION/${PYTORCH_VERSION}/g" "${SETUP_DIR}"/LibTorch-Lite.podspec | ||||||
|  |           else | ||||||
|  |             # NB: There is no nightly build without lite interpreter atm | ||||||
|  |             cp "${GITHUB_WORKSPACE}"/ios/LibTorch.podspec.template "${SETUP_DIR}"/LibTorch.podspec | ||||||
|  |             sed -i '' -e "s/IOS_BUILD_VERSION/${PYTORCH_VERSION}/g" "${SETUP_DIR}"/LibTorch.podspec | ||||||
|  |           fi | ||||||
|  |  | ||||||
|  |           pushd "${SETUP_DIR}" | ||||||
|  |           # NB: It's important to zip all the files before uploading because the GHA will upload | ||||||
|  |           # all files sequentially which is both slow and has too many requests. More info is at | ||||||
|  |           # https://github.com/actions/upload-artifact#too-many-uploads-resulting-in-429-responses | ||||||
|  |           zip -r "${IOS_ARCH}.zip" install src version.txt LICENSE ./*.podspec | ||||||
|  |           popd | ||||||
|  |  | ||||||
|  |       - uses: actions/upload-artifact@v3 | ||||||
|  |         with: | ||||||
|  |           name: pytorch-ios-build-artifacts-${{ matrix.ios_arch }} | ||||||
|  |           if-no-files-found: error | ||||||
|  |           path: ${{ runner.temp }}/${{ matrix.ios_arch }}/${{ matrix.ios_arch }}.zip | ||||||
|  |  | ||||||
|  |   upload-ios-artifacts: | ||||||
|  |     # NB: this job run on GitHub MacOS ephemeral runner so that it can use lipo | ||||||
|  |     # to create the fat iOS binaries for both x86_64 and arm64 | ||||||
|  |     runs-on: macos-12 | ||||||
|  |     needs: build | ||||||
|  |     # NB: Only upload release build, if we need it, we could also turn on nightly here | ||||||
|  |     environment: ${{ (github.event_name == 'push' && (github.event.ref == 'refs/heads/nightly' || startsWith(github.event.ref, 'refs/tags/v'))) && 'ios-upload' || '' }} | ||||||
|  |     steps: | ||||||
|  |       - uses: actions/checkout@v3 | ||||||
|  |  | ||||||
|  |       # For awscli S3 upload | ||||||
|  |       - uses: actions/setup-python@v4 | ||||||
|  |         with: | ||||||
|  |           python-version: '3.10' | ||||||
|  |           cache: pip | ||||||
|  |  | ||||||
|  |       # For cocoapods pod upload | ||||||
|  |       - uses: ruby/setup-ruby@v1 | ||||||
|  |         with: | ||||||
|  |           ruby-version: '3.2' | ||||||
|  |           bundler-cache: true | ||||||
|  |  | ||||||
|  |       - name: Download arm64 artifacts | ||||||
|  |         uses: actions/download-artifact@v3 | ||||||
|  |         with: | ||||||
|  |           name: pytorch-ios-build-artifacts-arm64 | ||||||
|  |  | ||||||
|  |       - name: Download x86_64 artifacts | ||||||
|  |         uses: actions/download-artifact@v3 | ||||||
|  |         with: | ||||||
|  |           name: pytorch-ios-build-artifacts-x86_64 | ||||||
|  |  | ||||||
|  |       - name: Unzip arm64 and x86_64 artifacts | ||||||
|  |         shell: bash | ||||||
|  |         run: | | ||||||
|  |           set -eux | ||||||
|  |  | ||||||
|  |           for ARCH in "arm64" "x86_64"; do | ||||||
|  |             TMP_DIR="${RUNNER_TEMP}/${ARCH}" | ||||||
|  |             mkdir -p "${TMP_DIR}" | ||||||
|  |  | ||||||
|  |             cp "${ARCH}.zip" "${TMP_DIR}" | ||||||
|  |  | ||||||
|  |             pushd "${TMP_DIR}" | ||||||
|  |             unzip -o "${ARCH}.zip" | ||||||
|  |             popd | ||||||
|  |           done | ||||||
|  |  | ||||||
|  |       - name: Prepare the artifact | ||||||
|  |         env: | ||||||
|  |           IS_NIGHTLY: ${{ github.event.ref == 'refs/heads/nightly' }} | ||||||
|  |         shell: bash | ||||||
|  |         working-directory: ${{ runner.temp }}/arm64 | ||||||
|  |         run: | | ||||||
|  |           set -eux | ||||||
|  |  | ||||||
|  |           DEST_DIR="${RUNNER_TEMP}"/ios | ||||||
|  |           echo "DEST_DIR=${DEST_DIR}" >> "$GITHUB_ENV" | ||||||
|  |  | ||||||
|  |           # Prepare all the sub directories | ||||||
|  |           mkdir -p "${DEST_DIR}"/install/lib | ||||||
|  |  | ||||||
|  |           # Copy header and share files, arm64 or x86_64 both work | ||||||
|  |           cp -R install/include "${DEST_DIR}"/install | ||||||
|  |           cp -R install/share "${DEST_DIR}"/install | ||||||
|  |           # The last dash is important to copy only files under src | ||||||
|  |           cp -R src "${DEST_DIR}" | ||||||
|  |           cp LICENSE "${DEST_DIR}" | ||||||
|  |  | ||||||
|  |           if [ "${IS_NIGHTLY}" == true ]; then | ||||||
|  |             PYTORCH_VERSION=$(cat version.txt) | ||||||
|  |             DATE=$(date -u +%Y%m%d) | ||||||
|  |             echo "${PYTORCH_VERSION}.${DATE}" > "${DEST_DIR}"/version.txt | ||||||
|  |           else | ||||||
|  |             cp version.txt "${DEST_DIR}" | ||||||
|  |           fi | ||||||
|  |           PYTORCH_VERSION=$(cat "${DEST_DIR}"/version.txt) | ||||||
|  |           echo "PYTORCH_VERSION=${PYTORCH_VERSION}" >> "$GITHUB_ENV" | ||||||
|  |  | ||||||
|  |           pushd install/lib | ||||||
|  |           # shellcheck disable=SC2207 | ||||||
|  |           LIBRARIES=($(ls ./*.a)) | ||||||
|  |           popd | ||||||
|  |  | ||||||
|  |           for LIB in "${LIBRARIES[@]}"; do | ||||||
|  |             FROM_LIBS=("${RUNNER_TEMP}"/arm64/install/lib/"${LIB}" "${RUNNER_TEMP}"/x86_64/install/lib/"${LIB}") | ||||||
|  |             # Create a fat binary for both arm64 and x86_64 | ||||||
|  |             lipo -create "${FROM_LIBS[@]}" -o "${DEST_DIR}"/install/lib/"${LIB}" | ||||||
|  |             # Print the info | ||||||
|  |             lipo -i "${DEST_DIR}"/install/lib/"${LIB}" | ||||||
|  |           done | ||||||
|  |  | ||||||
|  |           BUILD_LITE_INTERPRETER=1 | ||||||
|  |           if [ -f "${RUNNER_TEMP}"/arm64/LibTorch.podspec ]; then | ||||||
|  |             # If LibTorch.podspec is used instead of LibTorch-Lite.podspec, the artifact is built | ||||||
|  |             # without lite interpreter | ||||||
|  |             BUILD_LITE_INTERPRETER=0 | ||||||
|  |           fi | ||||||
|  |           echo "BUILD_LITE_INTERPRETER=${BUILD_LITE_INTERPRETER}" >> "$GITHUB_ENV" | ||||||
|  |  | ||||||
|  |       - name: Prepare the podspec | ||||||
|  |         env: | ||||||
|  |           IS_NIGHTLY: ${{ github.event.ref == 'refs/heads/nightly' }} | ||||||
|  |         shell: bash | ||||||
|  |         working-directory: ${{ env.DEST_DIR }} | ||||||
|  |         run: | | ||||||
|  |           set -eux | ||||||
|  |  | ||||||
|  |           ARTIFACT_NAME=libtorch | ||||||
|  |           SPEC_NAME=LibTorch | ||||||
|  |  | ||||||
|  |           if [ "${BUILD_LITE_INTERPRETER}" == "1" ]; then | ||||||
|  |             ARTIFACT_NAME="${ARTIFACT_NAME}_lite_ios" | ||||||
|  |             SPEC_NAME="${SPEC_NAME}-Lite" | ||||||
|  |           else | ||||||
|  |             ARTIFACT_NAME="${ARTIFACT_NAME}_ios" | ||||||
|  |           fi | ||||||
|  |  | ||||||
|  |           if [ "${IS_NIGHTLY}" == true ]; then | ||||||
|  |             ARTIFACT_NAME="${ARTIFACT_NAME}_nightly_${PYTORCH_VERSION}.zip" | ||||||
|  |             SPEC_NAME="${SPEC_NAME}-Nightly" | ||||||
|  |           else | ||||||
|  |             ARTIFACT_NAME="${ARTIFACT_NAME}_${PYTORCH_VERSION}.zip" | ||||||
|  |           fi | ||||||
|  |  | ||||||
|  |           SPEC_NAME_WITH_VERSION="${SPEC_NAME}-${PYTORCH_VERSION}.podspec" | ||||||
|  |           SPEC_NAME="${SPEC_NAME}.podspec" | ||||||
|  |  | ||||||
|  |           # Also copy the spec file | ||||||
|  |           cp "${RUNNER_TEMP}"/arm64/"${SPEC_NAME}" "${SPEC_NAME_WITH_VERSION}" | ||||||
|  |  | ||||||
|  |           # NB: It's important to zip all the files before uploading because the GHA will upload | ||||||
|  |           # all files sequentially which is both slow and has too many requests. More info is at | ||||||
|  |           # https://github.com/actions/upload-artifact#too-many-uploads-resulting-in-429-responses | ||||||
|  |           zip -r "${ARTIFACT_NAME}" install src version.txt LICENSE | ||||||
|  |  | ||||||
|  |           { | ||||||
|  |             echo "ARTIFACT_NAME=${ARTIFACT_NAME}" | ||||||
|  |             echo "SPEC_NAME_WITH_VERSION=${SPEC_NAME_WITH_VERSION}" | ||||||
|  |             echo "SPEC_NAME=${SPEC_NAME}" | ||||||
|  |           } >> "$GITHUB_ENV" | ||||||
|  |  | ||||||
|  |       - uses: actions/upload-artifact@v3 | ||||||
|  |         with: | ||||||
|  |           name: pytorch-ios-artifacts | ||||||
|  |           if-no-files-found: error | ||||||
|  |           path: ${{ env.DEST_DIR }}/${{ env.ARTIFACT_NAME }} | ||||||
|  |  | ||||||
|  |       - uses: actions/upload-artifact@v3 | ||||||
|  |         with: | ||||||
|  |           name: pytorch-ios-podspec | ||||||
|  |           if-no-files-found: error | ||||||
|  |           path: ${{ env.DEST_DIR }}/${{ env.SPEC_NAME_WITH_VERSION }} | ||||||
|  |  | ||||||
|  |       - name: Set DRY_RUN | ||||||
|  |         if: ${{ github.event_name == 'push' && (github.event.ref == 'refs/heads/nightly' || (startsWith(github.event.ref, 'refs/tags/v'))) }} | ||||||
|  |         shell: bash | ||||||
|  |         run: | | ||||||
|  |           echo "DRY_RUN=disabled" >> "$GITHUB_ENV" | ||||||
|  |  | ||||||
|  |       - name: Upload the artifact to S3 | ||||||
|  |         env: | ||||||
|  |           AWS_ACCESS_KEY_ID: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|  |           AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|  |           IS_NIGHTLY: ${{ github.event.ref == 'refs/heads/nightly' }} | ||||||
|  |         shell: bash | ||||||
|  |         working-directory: ${{ env.DEST_DIR }} | ||||||
|  |         run: | | ||||||
|  |           set -eux | ||||||
|  |  | ||||||
|  |           pip install -q awscli==1.29.40 | ||||||
|  |  | ||||||
|  |           DRY_RUN=${DRY_RUN:-enabled} | ||||||
|  |           AWS_S3_CP="aws s3 cp --dryrun" | ||||||
|  |           if [ "${DRY_RUN}" == "disabled" ]; then | ||||||
|  |             AWS_S3_CP="aws s3 cp" | ||||||
|  |           fi | ||||||
|  |  | ||||||
|  |           if [ "${IS_NIGHTLY}" == true ]; then | ||||||
|  |             BUCKET_NAME="ossci-ios-build" | ||||||
|  |           else | ||||||
|  |             BUCKET_NAME="ossci-ios" | ||||||
|  |           fi | ||||||
|  |  | ||||||
|  |           ${AWS_S3_CP} "${ARTIFACT_NAME}" "s3://${BUCKET_NAME}/" --acl public-read | ||||||
|  |           ${AWS_S3_CP} "${SPEC_NAME_WITH_VERSION}" "s3://${BUCKET_NAME}/" --acl public-read | ||||||
|  |  | ||||||
|  |       - name: Upload the artifact to cocoapods (nightly only) | ||||||
|  |         env: | ||||||
|  |           # We need to set this secret to upload to cocoapods. However, we might want | ||||||
|  |           # to NOT set this for PROD release so that we can upload the artifacts manually | ||||||
|  |           COCOAPODS_TRUNK_TOKEN: ${{ secrets.COCOAPODS_TRUNK_TOKEN || '' }} | ||||||
|  |         if: ${{ github.event_name == 'push' && github.event.ref == 'refs/heads/nightly' && env.COCOAPODS_TRUNK_TOKEN != '' }} | ||||||
|  |         shell: bash | ||||||
|  |         working-directory: ${{ runner.temp }}/arm64 | ||||||
|  |         run: | | ||||||
|  |           set -eux | ||||||
|  |  | ||||||
|  |           gem install cocoapods | ||||||
|  |  | ||||||
|  |           pod trunk me | ||||||
|  |           # Upload the spec to cocoapods | ||||||
|  |           pod trunk push --verbose --allow-warnings --use-libraries --skip-import-validation "${SPEC_NAME}" | ||||||
|  | |||||||
							
								
								
									
										10
									
								
								.github/workflows/_linux-build.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										10
									
								
								.github/workflows/_linux-build.yml
									
									
									
									
										vendored
									
									
								
							| @ -73,7 +73,7 @@ jobs: | |||||||
|       test-matrix: ${{ steps.filter.outputs.test-matrix }} |       test-matrix: ${{ steps.filter.outputs.test-matrix }} | ||||||
|     steps: |     steps: | ||||||
|       - name: Setup SSH (Click me for login details) |       - name: Setup SSH (Click me for login details) | ||||||
|         uses: pytorch/test-infra/.github/actions/setup-ssh@main |         uses: pytorch/test-infra/.github/actions/setup-ssh@release/2.1 | ||||||
|         with: |         with: | ||||||
|           github-secret: ${{ secrets.GITHUB_TOKEN }} |           github-secret: ${{ secrets.GITHUB_TOKEN }} | ||||||
|  |  | ||||||
| @ -82,19 +82,19 @@ jobs: | |||||||
|       # checkout because when we run this action we don't *have* a local |       # checkout because when we run this action we don't *have* a local | ||||||
|       # checkout. In other cases you should prefer a local checkout. |       # checkout. In other cases you should prefer a local checkout. | ||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: pytorch/pytorch/.github/actions/checkout-pytorch@main |         uses: pytorch/pytorch/.github/actions/checkout-pytorch@release/2.1 | ||||||
|  |  | ||||||
|       - name: Setup Linux |       - name: Setup Linux | ||||||
|         uses: ./.github/actions/setup-linux |         uses: ./.github/actions/setup-linux | ||||||
|  |  | ||||||
|       - name: Calculate docker image |       - name: Calculate docker image | ||||||
|         id: calculate-docker-image |         id: calculate-docker-image | ||||||
|         uses: pytorch/test-infra/.github/actions/calculate-docker-image@main |         uses: pytorch/test-infra/.github/actions/calculate-docker-image@release/2.1 | ||||||
|         with: |         with: | ||||||
|           docker-image-name: ${{ inputs.docker-image-name }} |           docker-image-name: ${{ inputs.docker-image-name }} | ||||||
|  |  | ||||||
|       - name: Pull docker image |       - name: Pull docker image | ||||||
|         uses: pytorch/test-infra/.github/actions/pull-docker-image@main |         uses: pytorch/test-infra/.github/actions/pull-docker-image@release/2.1 | ||||||
|         with: |         with: | ||||||
|           docker-image: ${{ steps.calculate-docker-image.outputs.docker-image }} |           docker-image: ${{ steps.calculate-docker-image.outputs.docker-image }} | ||||||
|  |  | ||||||
| @ -192,5 +192,5 @@ jobs: | |||||||
|           path: sccache-stats-*.json |           path: sccache-stats-*.json | ||||||
|  |  | ||||||
|       - name: Teardown Linux |       - name: Teardown Linux | ||||||
|         uses: pytorch/test-infra/.github/actions/teardown-linux@main |         uses: pytorch/test-infra/.github/actions/teardown-linux@release/2.1 | ||||||
|         if: always() |         if: always() | ||||||
|  | |||||||
							
								
								
									
										12
									
								
								.github/workflows/_linux-test.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										12
									
								
								.github/workflows/_linux-test.yml
									
									
									
									
										vendored
									
									
								
							| @ -57,7 +57,7 @@ jobs: | |||||||
|     timeout-minutes: ${{ inputs.timeout-minutes }} |     timeout-minutes: ${{ inputs.timeout-minutes }} | ||||||
|     steps: |     steps: | ||||||
|       - name: Setup SSH (Click me for login details) |       - name: Setup SSH (Click me for login details) | ||||||
|         uses: pytorch/test-infra/.github/actions/setup-ssh@main |         uses: pytorch/test-infra/.github/actions/setup-ssh@release/2.1 | ||||||
|         if: ${{ !contains(matrix.runner, 'gcp.a100') }} |         if: ${{ !contains(matrix.runner, 'gcp.a100') }} | ||||||
|         with: |         with: | ||||||
|           github-secret: ${{ secrets.GITHUB_TOKEN }} |           github-secret: ${{ secrets.GITHUB_TOKEN }} | ||||||
| @ -66,25 +66,25 @@ jobs: | |||||||
|               docker exec -it $(docker container ps --format '{{.ID}}') bash |               docker exec -it $(docker container ps --format '{{.ID}}') bash | ||||||
|  |  | ||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: pytorch/pytorch/.github/actions/checkout-pytorch@main |         uses: pytorch/pytorch/.github/actions/checkout-pytorch@release/2.1 | ||||||
|  |  | ||||||
|       - name: Setup Linux |       - name: Setup Linux | ||||||
|         uses: ./.github/actions/setup-linux |         uses: ./.github/actions/setup-linux | ||||||
|  |  | ||||||
|       - name: Calculate docker image |       - name: Calculate docker image | ||||||
|         id: calculate-docker-image |         id: calculate-docker-image | ||||||
|         uses: pytorch/test-infra/.github/actions/calculate-docker-image@main |         uses: pytorch/test-infra/.github/actions/calculate-docker-image@release/2.1 | ||||||
|         with: |         with: | ||||||
|           docker-image-name: ${{ inputs.docker-image }} |           docker-image-name: ${{ inputs.docker-image }} | ||||||
|  |  | ||||||
|       - name: Pull docker image |       - name: Pull docker image | ||||||
|         uses: pytorch/test-infra/.github/actions/pull-docker-image@main |         uses: pytorch/test-infra/.github/actions/pull-docker-image@release/2.1 | ||||||
|         with: |         with: | ||||||
|           docker-image: ${{ steps.calculate-docker-image.outputs.docker-image }} |           docker-image: ${{ steps.calculate-docker-image.outputs.docker-image }} | ||||||
|  |  | ||||||
|       - name: Install nvidia driver, nvidia-docker runtime, set GPU_FLAG |       - name: Install nvidia driver, nvidia-docker runtime, set GPU_FLAG | ||||||
|         id: install-nvidia-driver |         id: install-nvidia-driver | ||||||
|         uses: pytorch/test-infra/.github/actions/setup-nvidia@main |         uses: pytorch/test-infra/.github/actions/setup-nvidia@release/2.1 | ||||||
|         if: contains(inputs.build-environment, 'cuda') && !contains(matrix.config, 'nogpu') |         if: contains(inputs.build-environment, 'cuda') && !contains(matrix.config, 'nogpu') | ||||||
|  |  | ||||||
|       - name: Lock NVIDIA A100 40GB Frequency |       - name: Lock NVIDIA A100 40GB Frequency | ||||||
| @ -292,7 +292,7 @@ jobs: | |||||||
|           path: ./**/core.[1-9]* |           path: ./**/core.[1-9]* | ||||||
|  |  | ||||||
|       - name: Teardown Linux |       - name: Teardown Linux | ||||||
|         uses: pytorch/test-infra/.github/actions/teardown-linux@main |         uses: pytorch/test-infra/.github/actions/teardown-linux@release/2.1 | ||||||
|         if: always() |         if: always() | ||||||
|  |  | ||||||
|       # NB: We are currently having an intermittent GPU-related issue on G5 runners with |       # NB: We are currently having an intermittent GPU-related issue on G5 runners with | ||||||
|  | |||||||
							
								
								
									
										10
									
								
								.github/workflows/_mac-build.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										10
									
								
								.github/workflows/_mac-build.yml
									
									
									
									
										vendored
									
									
								
							| @ -71,11 +71,11 @@ jobs: | |||||||
|       test-matrix: ${{ steps.filter.outputs.test-matrix }} |       test-matrix: ${{ steps.filter.outputs.test-matrix }} | ||||||
|     steps: |     steps: | ||||||
|       - name: Clean up disk space before running MacOS workflow |       - name: Clean up disk space before running MacOS workflow | ||||||
|         uses: pytorch/test-infra/.github/actions/check-disk-space@main |         uses: pytorch/test-infra/.github/actions/check-disk-space@release/2.1 | ||||||
|  |  | ||||||
|       # [see note: pytorch repo ref] |       # [see note: pytorch repo ref] | ||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: pytorch/pytorch/.github/actions/checkout-pytorch@main |         uses: pytorch/pytorch/.github/actions/checkout-pytorch@release/2.1 | ||||||
|  |  | ||||||
|       - name: Set xcode version |       - name: Set xcode version | ||||||
|         env: |         env: | ||||||
| @ -87,7 +87,7 @@ jobs: | |||||||
|  |  | ||||||
|       - name: Setup miniconda |       - name: Setup miniconda | ||||||
|         if: inputs.environment-file == '' |         if: inputs.environment-file == '' | ||||||
|         uses: pytorch/test-infra/.github/actions/setup-miniconda@main |         uses: pytorch/test-infra/.github/actions/setup-miniconda@release/2.1 | ||||||
|         with: |         with: | ||||||
|           python-version: ${{ inputs.python-version }} |           python-version: ${{ inputs.python-version }} | ||||||
|           environment-file: .github/requirements/conda-env-${{ runner.os }}-${{ runner.arch }} |           environment-file: .github/requirements/conda-env-${{ runner.os }}-${{ runner.arch }} | ||||||
| @ -97,7 +97,7 @@ jobs: | |||||||
|       # environment even though the arch is x86-64 |       # environment even though the arch is x86-64 | ||||||
|       - name: Setup miniconda using the provided environment file |       - name: Setup miniconda using the provided environment file | ||||||
|         if: inputs.environment-file != '' |         if: inputs.environment-file != '' | ||||||
|         uses: pytorch/test-infra/.github/actions/setup-miniconda@main |         uses: pytorch/test-infra/.github/actions/setup-miniconda@release/2.1 | ||||||
|         with: |         with: | ||||||
|           python-version: ${{ inputs.python-version }} |           python-version: ${{ inputs.python-version }} | ||||||
|           environment-file: ${{ inputs.environment-file }} |           environment-file: ${{ inputs.environment-file }} | ||||||
| @ -206,4 +206,4 @@ jobs: | |||||||
|       - name: Clean up disk space |       - name: Clean up disk space | ||||||
|         if: always() |         if: always() | ||||||
|         continue-on-error: true |         continue-on-error: true | ||||||
|         uses: pytorch/test-infra/.github/actions/check-disk-space@main |         uses: pytorch/test-infra/.github/actions/check-disk-space@release/2.1 | ||||||
|  | |||||||
							
								
								
									
										4
									
								
								.github/workflows/_mac-test-mps.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								.github/workflows/_mac-test-mps.yml
									
									
									
									
										vendored
									
									
								
							| @ -41,7 +41,7 @@ jobs: | |||||||
|       reenabled-issues: ${{ steps.filter.outputs.reenabled-issues }} |       reenabled-issues: ${{ steps.filter.outputs.reenabled-issues }} | ||||||
|     steps: |     steps: | ||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: pytorch/pytorch/.github/actions/checkout-pytorch@main |         uses: pytorch/pytorch/.github/actions/checkout-pytorch@release/2.1 | ||||||
|         with: |         with: | ||||||
|           fetch-depth: 1 |           fetch-depth: 1 | ||||||
|           submodules: false |           submodules: false | ||||||
| @ -85,7 +85,7 @@ jobs: | |||||||
|           use-gha: true |           use-gha: true | ||||||
|  |  | ||||||
|       - name: Setup miniconda |       - name: Setup miniconda | ||||||
|         uses: pytorch/test-infra/.github/actions/setup-miniconda@main |         uses: pytorch/test-infra/.github/actions/setup-miniconda@release/2.1 | ||||||
|         with: |         with: | ||||||
|           python-version: ${{ inputs.python-version }} |           python-version: ${{ inputs.python-version }} | ||||||
|           environment-file: .github/requirements/conda-env-${{ runner.os }}-${{ runner.arch }} |           environment-file: .github/requirements/conda-env-${{ runner.os }}-${{ runner.arch }} | ||||||
|  | |||||||
							
								
								
									
										8
									
								
								.github/workflows/_mac-test.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										8
									
								
								.github/workflows/_mac-test.yml
									
									
									
									
										vendored
									
									
								
							| @ -69,11 +69,11 @@ jobs: | |||||||
|           done |           done | ||||||
|  |  | ||||||
|       - name: Clean up disk space before running MacOS workflow |       - name: Clean up disk space before running MacOS workflow | ||||||
|         uses: pytorch/test-infra/.github/actions/check-disk-space@main |         uses: pytorch/test-infra/.github/actions/check-disk-space@release/2.1 | ||||||
|  |  | ||||||
|       # [see note: pytorch repo ref] |       # [see note: pytorch repo ref] | ||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: pytorch/pytorch/.github/actions/checkout-pytorch@main |         uses: pytorch/pytorch/.github/actions/checkout-pytorch@release/2.1 | ||||||
|  |  | ||||||
|       - name: Download build artifacts |       - name: Download build artifacts | ||||||
|         uses: ./.github/actions/download-build-artifacts |         uses: ./.github/actions/download-build-artifacts | ||||||
| @ -82,7 +82,7 @@ jobs: | |||||||
|           use-gha: true |           use-gha: true | ||||||
|  |  | ||||||
|       - name: Setup miniconda |       - name: Setup miniconda | ||||||
|         uses: pytorch/test-infra/.github/actions/setup-miniconda@main |         uses: pytorch/test-infra/.github/actions/setup-miniconda@release/2.1 | ||||||
|         with: |         with: | ||||||
|           python-version: ${{ inputs.python-version }} |           python-version: ${{ inputs.python-version }} | ||||||
|           environment-file: .github/requirements/conda-env-${{ runner.os }}-${{ runner.arch }} |           environment-file: .github/requirements/conda-env-${{ runner.os }}-${{ runner.arch }} | ||||||
| @ -205,4 +205,4 @@ jobs: | |||||||
|       - name: Clean up disk space |       - name: Clean up disk space | ||||||
|         if: always() |         if: always() | ||||||
|         continue-on-error: true |         continue-on-error: true | ||||||
|         uses: pytorch/test-infra/.github/actions/check-disk-space@main |         uses: pytorch/test-infra/.github/actions/check-disk-space@release/2.1 | ||||||
|  | |||||||
							
								
								
									
										6
									
								
								.github/workflows/_rocm-test.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										6
									
								
								.github/workflows/_rocm-test.yml
									
									
									
									
										vendored
									
									
								
							| @ -48,7 +48,7 @@ jobs: | |||||||
|     steps: |     steps: | ||||||
|       # [see note: pytorch repo ref] |       # [see note: pytorch repo ref] | ||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: pytorch/pytorch/.github/actions/checkout-pytorch@main |         uses: pytorch/pytorch/.github/actions/checkout-pytorch@release/2.1 | ||||||
|         with: |         with: | ||||||
|           no-sudo: true |           no-sudo: true | ||||||
|  |  | ||||||
| @ -57,12 +57,12 @@ jobs: | |||||||
|  |  | ||||||
|       - name: Calculate docker image |       - name: Calculate docker image | ||||||
|         id: calculate-docker-image |         id: calculate-docker-image | ||||||
|         uses: pytorch/test-infra/.github/actions/calculate-docker-image@main |         uses: pytorch/test-infra/.github/actions/calculate-docker-image@release/2.1 | ||||||
|         with: |         with: | ||||||
|           docker-image-name: ${{ inputs.docker-image }} |           docker-image-name: ${{ inputs.docker-image }} | ||||||
|  |  | ||||||
|       - name: Pull docker image |       - name: Pull docker image | ||||||
|         uses: pytorch/test-infra/.github/actions/pull-docker-image@main |         uses: pytorch/test-infra/.github/actions/pull-docker-image@release/2.1 | ||||||
|         with: |         with: | ||||||
|           docker-image: ${{ steps.calculate-docker-image.outputs.docker-image }} |           docker-image: ${{ steps.calculate-docker-image.outputs.docker-image }} | ||||||
|  |  | ||||||
|  | |||||||
							
								
								
									
										6
									
								
								.github/workflows/_run_android_tests.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										6
									
								
								.github/workflows/_run_android_tests.yml
									
									
									
									
										vendored
									
									
								
							| @ -22,7 +22,7 @@ jobs: | |||||||
|       keep-going: ${{ steps.filter.outputs.keep-going }} |       keep-going: ${{ steps.filter.outputs.keep-going }} | ||||||
|     steps: |     steps: | ||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: pytorch/pytorch/.github/actions/checkout-pytorch@main |         uses: pytorch/pytorch/.github/actions/checkout-pytorch@release/2.1 | ||||||
|         with: |         with: | ||||||
|           fetch-depth: 1 |           fetch-depth: 1 | ||||||
|           submodules: false |           submodules: false | ||||||
| @ -45,10 +45,10 @@ jobs: | |||||||
|     steps: |     steps: | ||||||
|       # [see note: pytorch repo ref] |       # [see note: pytorch repo ref] | ||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: pytorch/pytorch/.github/actions/checkout-pytorch@main |         uses: pytorch/pytorch/.github/actions/checkout-pytorch@release/2.1 | ||||||
|  |  | ||||||
|       - name: Setup miniconda |       - name: Setup miniconda | ||||||
|         uses: pytorch/test-infra/.github/actions/setup-miniconda@main |         uses: pytorch/test-infra/.github/actions/setup-miniconda@release/2.1 | ||||||
|         with: |         with: | ||||||
|           python-version: 3.8 |           python-version: 3.8 | ||||||
|           environment-file: .github/requirements/conda-env-${{ runner.os }}-${{ runner.arch }} |           environment-file: .github/requirements/conda-env-${{ runner.os }}-${{ runner.arch }} | ||||||
|  | |||||||
							
								
								
									
										6
									
								
								.github/workflows/_win-build.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										6
									
								
								.github/workflows/_win-build.yml
									
									
									
									
										vendored
									
									
								
							| @ -60,10 +60,10 @@ jobs: | |||||||
|           git config --global core.fsmonitor false |           git config --global core.fsmonitor false | ||||||
|  |  | ||||||
|       - name: Clean up leftover processes on non-ephemeral Windows runner |       - name: Clean up leftover processes on non-ephemeral Windows runner | ||||||
|         uses: pytorch/test-infra/.github/actions/cleanup-runner@main |         uses: pytorch/test-infra/.github/actions/cleanup-runner@release/2.1 | ||||||
|  |  | ||||||
|       - name: Setup SSH (Click me for login details) |       - name: Setup SSH (Click me for login details) | ||||||
|         uses: pytorch/test-infra/.github/actions/setup-ssh@main |         uses: pytorch/test-infra/.github/actions/setup-ssh@release/2.1 | ||||||
|         with: |         with: | ||||||
|           github-secret: ${{ secrets.GITHUB_TOKEN }} |           github-secret: ${{ secrets.GITHUB_TOKEN }} | ||||||
|           instructions: | |           instructions: | | ||||||
| @ -78,7 +78,7 @@ jobs: | |||||||
|  |  | ||||||
|       # [see note: pytorch repo ref] |       # [see note: pytorch repo ref] | ||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: pytorch/pytorch/.github/actions/checkout-pytorch@main |         uses: pytorch/pytorch/.github/actions/checkout-pytorch@release/2.1 | ||||||
|         with: |         with: | ||||||
|           no-sudo: true |           no-sudo: true | ||||||
|  |  | ||||||
|  | |||||||
							
								
								
									
										6
									
								
								.github/workflows/_win-test.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										6
									
								
								.github/workflows/_win-test.yml
									
									
									
									
										vendored
									
									
								
							| @ -48,10 +48,10 @@ jobs: | |||||||
|           git config --global core.fsmonitor false |           git config --global core.fsmonitor false | ||||||
|  |  | ||||||
|       - name: Clean up leftover processes on non-ephemeral Windows runner |       - name: Clean up leftover processes on non-ephemeral Windows runner | ||||||
|         uses: pytorch/test-infra/.github/actions/cleanup-runner@main |         uses: pytorch/test-infra/.github/actions/cleanup-runner@release/2.1 | ||||||
|  |  | ||||||
|       - name: Setup SSH (Click me for login details) |       - name: Setup SSH (Click me for login details) | ||||||
|         uses: pytorch/test-infra/.github/actions/setup-ssh@main |         uses: pytorch/test-infra/.github/actions/setup-ssh@release/2.1 | ||||||
|         with: |         with: | ||||||
|           github-secret: ${{ secrets.GITHUB_TOKEN }} |           github-secret: ${{ secrets.GITHUB_TOKEN }} | ||||||
|           instructions: | |           instructions: | | ||||||
| @ -67,7 +67,7 @@ jobs: | |||||||
|  |  | ||||||
|       # [see note: pytorch repo ref] |       # [see note: pytorch repo ref] | ||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: pytorch/pytorch/.github/actions/checkout-pytorch@main |         uses: pytorch/pytorch/.github/actions/checkout-pytorch@release/2.1 | ||||||
|         with: |         with: | ||||||
|           no-sudo: true |           no-sudo: true | ||||||
|  |  | ||||||
|  | |||||||
							
								
								
									
										70
									
								
								.github/workflows/build-ios-binaries.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										70
									
								
								.github/workflows/build-ios-binaries.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,70 @@ | |||||||
|  | name: Build iOS binaries | ||||||
|  |  | ||||||
|  | on: | ||||||
|  |   push: | ||||||
|  |     branches: | ||||||
|  |       - nightly | ||||||
|  |     tags: | ||||||
|  |       # NOTE: Binary build pipelines should only get triggered on release candidate builds | ||||||
|  |       # Release candidate tags look like: v1.11.0-rc1 | ||||||
|  |       - v[0-9]+.[0-9]+.[0-9]+-rc[0-9]+ | ||||||
|  |     paths: | ||||||
|  |       - .github/workflows/build-ios-binaries.yml | ||||||
|  |       - .github/workflows/_ios-build-test.yml | ||||||
|  |   pull_request: | ||||||
|  |     paths: | ||||||
|  |       - .github/workflows/build-ios-binaries.yml | ||||||
|  |       - .github/workflows/_ios-build-test.yml | ||||||
|  |   # NB: We can use this workflow dispatch to test and build iOS binaries manually | ||||||
|  |   workflow_dispatch: | ||||||
|  |     inputs: | ||||||
|  |       use_lite_interpreter: | ||||||
|  |         description: "Use PyTorch lite interpreter?" | ||||||
|  |         type: string | ||||||
|  |         default: 1 | ||||||
|  |       use_coreml: | ||||||
|  |         description: "Use Apple Core ML?" | ||||||
|  |         type: string | ||||||
|  |         default: 1 | ||||||
|  |       use_custom_op_list: | ||||||
|  |         description: "Specify the custom ops list to include in the binaries" | ||||||
|  |         type: string | ||||||
|  |         default: "" | ||||||
|  |  | ||||||
|  | concurrency: | ||||||
|  |   group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }}-${{ github.event_name == 'workflow_dispatch' }} | ||||||
|  |   cancel-in-progress: true | ||||||
|  |  | ||||||
|  | jobs: | ||||||
|  |   # TODO: Figure out how to migrate this job to M1 runner | ||||||
|  |   ios-build-test: | ||||||
|  |     name: ios-build-test | ||||||
|  |     uses: ./.github/workflows/_ios-build-test.yml | ||||||
|  |     with: | ||||||
|  |       build-environment: ios-build-test | ||||||
|  |       sync-tag: ios-build-test | ||||||
|  |       test-matrix: | | ||||||
|  |         { include: [ | ||||||
|  |           { config: "default", | ||||||
|  |             shard: 1, | ||||||
|  |             num_shards: 1, | ||||||
|  |             runner: "macos-12", | ||||||
|  |             ios_platform: "SIMULATOR", | ||||||
|  |             ios_arch: "x86_64", | ||||||
|  |             use_lite_interpreter: ${{ inputs.use_lite_interpreter || 1 }}, | ||||||
|  |             use_metal: 0, | ||||||
|  |             use_coreml: ${{ inputs.use_coreml || 1 }}, | ||||||
|  |             use_custom_op_list: ${{ inputs.use_custom_op_list || '' }} | ||||||
|  |           }, | ||||||
|  |           { config: "default", | ||||||
|  |             shard: 1, | ||||||
|  |             num_shards: 1, | ||||||
|  |             runner: "macos-12", | ||||||
|  |             ios_platform: "OS", | ||||||
|  |             ios_arch: "arm64", | ||||||
|  |             use_lite_interpreter: ${{ inputs.use_lite_interpreter || 1 }}, | ||||||
|  |             use_metal: 1, | ||||||
|  |             use_coreml: ${{ inputs.use_coreml || 1 }}, | ||||||
|  |             use_custom_op_list: ${{ inputs.use_custom_op_list || '' }} | ||||||
|  |           } | ||||||
|  |         ]} | ||||||
							
								
								
									
										192
									
								
								.github/workflows/build-triton-wheel.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										192
									
								
								.github/workflows/build-triton-wheel.yml
									
									
									
									
										vendored
									
									
								
							| @ -3,7 +3,11 @@ name: Build Triton wheels | |||||||
| on: | on: | ||||||
|   push: |   push: | ||||||
|     branches: |     branches: | ||||||
|       - main |       - release/2.1 | ||||||
|  |     tags: | ||||||
|  |       # NOTE: Binary build pipelines should only get triggered on release candidate builds | ||||||
|  |       # Release candidate tags look like: v1.11.0-rc1 | ||||||
|  |       - v[0-9]+.[0-9]+.[0-9]+-rc[0-9]+ | ||||||
|     paths: |     paths: | ||||||
|       - .github/workflows/build-triton-wheel.yml |       - .github/workflows/build-triton-wheel.yml | ||||||
|       - .github/scripts/build_triton_wheel.py |       - .github/scripts/build_triton_wheel.py | ||||||
| @ -43,12 +47,12 @@ jobs: | |||||||
|       BUILD_DEVICE: ${{ matrix.device }} |       BUILD_DEVICE: ${{ matrix.device }} | ||||||
|     steps: |     steps: | ||||||
|       - name: Setup SSH (Click me for login details) |       - name: Setup SSH (Click me for login details) | ||||||
|         uses: pytorch/test-infra/.github/actions/setup-ssh@main |         uses: pytorch/test-infra/.github/actions/setup-ssh@release/2.1 | ||||||
|         with: |         with: | ||||||
|           github-secret: ${{ secrets.GITHUB_TOKEN }} |           github-secret: ${{ secrets.GITHUB_TOKEN }} | ||||||
|  |  | ||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: pytorch/pytorch/.github/actions/checkout-pytorch@main |         uses: pytorch/pytorch/.github/actions/checkout-pytorch@release/2.1 | ||||||
|         with: |         with: | ||||||
|           submodules: false |           submodules: false | ||||||
|  |  | ||||||
| @ -56,11 +60,13 @@ jobs: | |||||||
|         uses: ./.github/actions/setup-linux |         uses: ./.github/actions/setup-linux | ||||||
|  |  | ||||||
|       - name: Pull Docker image |       - name: Pull Docker image | ||||||
|         uses: pytorch/test-infra/.github/actions/pull-docker-image@main |         uses: pytorch/test-infra/.github/actions/pull-docker-image@release/2.1 | ||||||
|         with: |         with: | ||||||
|           docker-image: ${{ env.DOCKER_IMAGE }} |           docker-image: ${{ env.DOCKER_IMAGE }} | ||||||
|  |  | ||||||
|       - name: Build Triton wheel |       - name: Build Triton wheel | ||||||
|  |         env: | ||||||
|  |           IS_RELEASE_TAG: ${{ startsWith(github.event.ref, 'refs/tags/v') }} | ||||||
|         run: | |         run: | | ||||||
|           set -x |           set -x | ||||||
|           mkdir -p "${RUNNER_TEMP}/artifacts/" |           mkdir -p "${RUNNER_TEMP}/artifacts/" | ||||||
| @ -98,64 +104,75 @@ jobs: | |||||||
|             BUILD_ROCM="--build-rocm" |             BUILD_ROCM="--build-rocm" | ||||||
|           fi |           fi | ||||||
|  |  | ||||||
|  |           RELEASE="" | ||||||
|  |           if [[ "${IS_RELEASE_TAG}" == true ]]; then | ||||||
|  |             RELEASE="--release" | ||||||
|  |           fi | ||||||
|  |  | ||||||
|           docker exec -t "${container_name}" yum install -y zlib-devel zip |           docker exec -t "${container_name}" yum install -y zlib-devel zip | ||||||
|           docker exec -t "${container_name}" "${PYTHON_EXECUTABLE}"  -m pip install -U setuptools==67.4.0 |           docker exec -t "${container_name}" "${PYTHON_EXECUTABLE}"  -m pip install -U setuptools==67.4.0 | ||||||
|           docker exec -t "${container_name}" "${PYTHON_EXECUTABLE}" /pytorch/.github/scripts/build_triton_wheel.py $BUILD_ROCM |           docker exec -t "${container_name}" "${PYTHON_EXECUTABLE}" /pytorch/.github/scripts/build_triton_wheel.py $BUILD_ROCM $RELEASE | ||||||
|           docker exec -t "${container_name}" chown -R 1000.1000 /artifacts |           docker exec -t "${container_name}" chown -R 1000.1000 /artifacts | ||||||
|  |  | ||||||
|       - uses: actions/upload-artifact@v3 |       - uses: actions/upload-artifact@v3 | ||||||
|         with: |         with: | ||||||
|           name: "pytorch-triton-wheel-${{ matrix.py_vers }}" |           # NB: Use the same name here and all wheels can be downloaded by referring to the same artifact | ||||||
|  |           name: pytorch-triton-wheel | ||||||
|           if-no-files-found: error |           if-no-files-found: error | ||||||
|           path: |           path: ${{ runner.temp }}/artifacts/* | ||||||
|             ${{ runner.temp }}/artifacts/* |  | ||||||
|  |  | ||||||
|       - name: Teardown Linux |       - name: Teardown Linux | ||||||
|         uses: pytorch/test-infra/.github/actions/teardown-linux@main |         uses: pytorch/test-infra/.github/actions/teardown-linux@release/2.1 | ||||||
|         if: always() |         if: always() | ||||||
|  |  | ||||||
|   upload-wheel: |   upload-wheel: | ||||||
|     runs-on: linux.20_04.4x |     runs-on: ubuntu-22.04 | ||||||
|     needs: build-wheel |     needs: build-wheel | ||||||
|     container: |     container: | ||||||
|       image: continuumio/miniconda3:4.12.0 |       image: continuumio/miniconda3:4.12.0 | ||||||
|     env: |     environment: ${{ (github.event_name == 'push' && (github.event.ref == 'refs/heads/nightly' || startsWith(github.event.ref, 'refs/tags/v'))) && 'conda-aws-upload' || '' }} | ||||||
|       GITHUB_TOKEN: ${{ secrets.github-token }} |  | ||||||
|     steps: |     steps: | ||||||
|       - name: Download Build Artifacts (3.8) |       - uses: actions/checkout@v3 | ||||||
|  |  | ||||||
|  |       - name: Download Build Artifacts | ||||||
|         uses: actions/download-artifact@v3 |         uses: actions/download-artifact@v3 | ||||||
|         with: |         with: | ||||||
|           name: "pytorch-triton-wheel-3.8" |           name: pytorch-triton-wheel | ||||||
|           path: "${{ runner.temp }}/artifacts/" |           path: ${{ runner.temp }}/artifacts/ | ||||||
|       - name: Download Build Artifacts (3.9) |  | ||||||
|         uses: actions/download-artifact@v3 |       - name: Set DRY_RUN (only for tagged pushes) | ||||||
|         with: |         if: ${{ github.event_name == 'push' && (github.event.ref == 'refs/heads/nightly' || (startsWith(github.event.ref, 'refs/tags/v'))) }} | ||||||
|           name: "pytorch-triton-wheel-3.9" |         shell: bash | ||||||
|           path: "${{ runner.temp }}/artifacts/" |  | ||||||
|       - name: Download Build Artifacts (3.10) |  | ||||||
|         uses: actions/download-artifact@v3 |  | ||||||
|         with: |  | ||||||
|           name: "pytorch-triton-wheel-3.10" |  | ||||||
|           path: "${{ runner.temp }}/artifacts/" |  | ||||||
|       - name: Download Build Artifacts (3.11) |  | ||||||
|         uses: actions/download-artifact@v3 |  | ||||||
|         with: |  | ||||||
|           name: "pytorch-triton-wheel-3.11" |  | ||||||
|           path: "${{ runner.temp }}/artifacts/" |  | ||||||
|       - name: Upload binaries |  | ||||||
|         if: ${{ github.event_name == 'push' && github.event.ref == 'refs/heads/main' }} |  | ||||||
|         env: |  | ||||||
|           PKG_DIR: "${{ runner.temp }}/artifacts" |  | ||||||
|           # When running these on pull_request events these should be blank |  | ||||||
|           AWS_ACCESS_KEY_ID: ${{ secrets.AWS_S3_UPDATE_ACCESS_KEY_ID }} |  | ||||||
|           AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_S3_UPDATE_SECRET_ACCESS_KEY }} |  | ||||||
|           UPLOAD_BUCKET: "s3://pytorch" |  | ||||||
|         run: | |         run: | | ||||||
|             set -ex |           echo "DRY_RUN=disabled" >> "$GITHUB_ENV" | ||||||
|             pip install -q awscli |  | ||||||
|             s3_dir="${UPLOAD_BUCKET}/whl/nightly/" |       - name: Set UPLOAD_CHANNEL (only for tagged pushes) | ||||||
|             for pkg in "${PKG_DIR}/"*.whl; do |         if: ${{ github.event_name == 'push' && startsWith(github.event.ref, 'refs/tags/v') }} | ||||||
|               aws s3 cp --no-progress --acl public-read "${pkg}" "${s3_dir}" |         shell: bash | ||||||
|              done |         run: | | ||||||
|  |           set -ex | ||||||
|  |  | ||||||
|  |           # reference ends with an RC suffix | ||||||
|  |           if [[ "${GITHUB_REF_NAME}" = *-rc[0-9]* ]]; then | ||||||
|  |             echo "UPLOAD_CHANNEL=test" >> "$GITHUB_ENV" | ||||||
|  |           fi | ||||||
|  |  | ||||||
|  |       # NB: This step is gated by DRY_RUN, which is enabled everywhere except nightly and release branches | ||||||
|  |       - name: Upload binaries | ||||||
|  |         env: | ||||||
|  |           PACKAGE_TYPE: wheel | ||||||
|  |           # The UPLOAD_SUBFOLDER needs to be empty here so that triton wheels are uploaded | ||||||
|  |           # to nightly or test | ||||||
|  |           UPLOAD_SUBFOLDER: "" | ||||||
|  |           PKG_DIR: ${{ runner.temp }}/artifacts | ||||||
|  |           # When running these on pull_request events these should be blank | ||||||
|  |           AWS_ACCESS_KEY_ID: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|  |           AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|  |         shell: bash | ||||||
|  |         run: | | ||||||
|  |           set -ex | ||||||
|  |           bash .circleci/scripts/binary_upload.sh | ||||||
|  |  | ||||||
|   build-conda: |   build-conda: | ||||||
|     name: "Build Triton Conda" |     name: "Build Triton Conda" | ||||||
|     runs-on: [self-hosted, linux.2xlarge] |     runs-on: [self-hosted, linux.2xlarge] | ||||||
| @ -164,19 +181,17 @@ jobs: | |||||||
|       matrix: |       matrix: | ||||||
|         py_vers: [ "3.8", "3.9", "3.10", "3.11" ] |         py_vers: [ "3.8", "3.9", "3.10", "3.11" ] | ||||||
|     timeout-minutes: 40 |     timeout-minutes: 40 | ||||||
|     environment: ${{ (github.event_name == 'push' && github.event.ref == 'refs/heads/main') && 'conda-aws-upload' || '' }} |  | ||||||
|     env: |     env: | ||||||
|       DOCKER_IMAGE: pytorch/conda-builder:cpu |       DOCKER_IMAGE: pytorch/conda-builder:cpu | ||||||
|       PY_VERS: ${{ matrix.py_vers }} |       PY_VERS: ${{ matrix.py_vers }} | ||||||
|       ANACONDA_API_TOKEN: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |  | ||||||
|     steps: |     steps: | ||||||
|       - name: Setup SSH (Click me for login details) |       - name: Setup SSH (Click me for login details) | ||||||
|         uses: pytorch/test-infra/.github/actions/setup-ssh@main |         uses: pytorch/test-infra/.github/actions/setup-ssh@release/2.1 | ||||||
|         with: |         with: | ||||||
|           github-secret: ${{ secrets.GITHUB_TOKEN }} |           github-secret: ${{ secrets.GITHUB_TOKEN }} | ||||||
|  |  | ||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: pytorch/pytorch/.github/actions/checkout-pytorch@main |         uses: pytorch/pytorch/.github/actions/checkout-pytorch@release/2.1 | ||||||
|         with: |         with: | ||||||
|           submodules: false |           submodules: false | ||||||
|  |  | ||||||
| @ -184,11 +199,13 @@ jobs: | |||||||
|         uses: ./.github/actions/setup-linux |         uses: ./.github/actions/setup-linux | ||||||
|  |  | ||||||
|       - name: Pull Docker image |       - name: Pull Docker image | ||||||
|         uses: pytorch/test-infra/.github/actions/pull-docker-image@main |         uses: pytorch/test-infra/.github/actions/pull-docker-image@release/2.1 | ||||||
|         with: |         with: | ||||||
|           docker-image: ${{ env.DOCKER_IMAGE }} |           docker-image: ${{ env.DOCKER_IMAGE }} | ||||||
|  |  | ||||||
|       - name: Build Triton conda package |       - name: Build Triton conda package | ||||||
|  |         env: | ||||||
|  |           IS_RELEASE_TAG: ${{ startsWith(github.event.ref, 'refs/tags/v') }} | ||||||
|         run: | |         run: | | ||||||
|           set -x |           set -x | ||||||
|           mkdir -p "${RUNNER_TEMP}/artifacts/" |           mkdir -p "${RUNNER_TEMP}/artifacts/" | ||||||
| @ -198,31 +215,76 @@ jobs: | |||||||
|             -v "${GITHUB_WORKSPACE}:/pytorch" \ |             -v "${GITHUB_WORKSPACE}:/pytorch" \ | ||||||
|             -v "${RUNNER_TEMP}/artifacts:/artifacts" \ |             -v "${RUNNER_TEMP}/artifacts:/artifacts" \ | ||||||
|             -w /artifacts/ \ |             -w /artifacts/ \ | ||||||
|             -e ANACONDA_API_TOKEN \ |  | ||||||
|             "${DOCKER_IMAGE}" \ |             "${DOCKER_IMAGE}" \ | ||||||
|           ) |           ) | ||||||
|  |  | ||||||
|  |           RELEASE="" | ||||||
|  |           if [[ "${IS_RELEASE_TAG}" == true ]]; then | ||||||
|  |             RELEASE="--release" | ||||||
|  |           fi | ||||||
|  |  | ||||||
|           docker exec -t "${container_name}" yum install -y llvm11 llvm11-devel llvm11-static llvm11-libs zlib-devel |           docker exec -t "${container_name}" yum install -y llvm11 llvm11-devel llvm11-static llvm11-libs zlib-devel | ||||||
|           docker exec -t "${container_name}" python /pytorch/.github/scripts/build_triton_wheel.py --build-conda --py-version="${PY_VERS}" |           docker exec -t "${container_name}" python /pytorch/.github/scripts/build_triton_wheel.py --build-conda --py-version="${PY_VERS}" $RELEASE | ||||||
|  |  | ||||||
|       - name: Upload artifacts to Anaconda |  | ||||||
|         if: ${{ github.event_name == 'push' && github.event.ref == 'refs/heads/main' }} |  | ||||||
|         run: | |  | ||||||
|           container_name=$(docker container ps --format '{{.ID}}') |  | ||||||
|           docker exec -t "${container_name}" sh -c "anaconda upload /artifacts/torch*.tar.bz2 -u pytorch-nightly --label main --no-progress --force" |  | ||||||
|  |  | ||||||
|       - name: Chown artifacts |  | ||||||
|         run: | |  | ||||||
|           container_name=$(docker container ps --format '{{.ID}}') |  | ||||||
|           docker exec -t "${container_name}" chown -R 1000.1000 /artifacts |           docker exec -t "${container_name}" chown -R 1000.1000 /artifacts | ||||||
|  |  | ||||||
|       - uses: actions/upload-artifact@v3 |       - uses: actions/upload-artifact@v3 | ||||||
|         with: |         with: | ||||||
|           name: "pytorch-triton-conda-${{ matrix.py_vers }}" |           # NB: Use the same name here and all wheels can be downloaded by referring to the same artifact | ||||||
|  |           name: pytorch-triton-conda | ||||||
|           if-no-files-found: error |           if-no-files-found: error | ||||||
|           path: |           path: ${{ runner.temp }}/artifacts/* | ||||||
|             ${{ runner.temp }}/artifacts/* |  | ||||||
|  |  | ||||||
|       - name: Teardown Linux |       - name: Teardown Linux | ||||||
|         uses: pytorch/test-infra/.github/actions/teardown-linux@main |         uses: pytorch/test-infra/.github/actions/teardown-linux@release/2.1 | ||||||
|         if: always() |         if: always() | ||||||
|  |  | ||||||
|  |   upload-conda: | ||||||
|  |     runs-on: ubuntu-22.04 | ||||||
|  |     needs: build-conda | ||||||
|  |     container: | ||||||
|  |       image: continuumio/miniconda3:4.12.0 | ||||||
|  |     environment: ${{ (github.event_name == 'push' && (github.event.ref == 'refs/heads/nightly' || startsWith(github.event.ref, 'refs/tags/v'))) && 'conda-aws-upload' || '' }} | ||||||
|  |     steps: | ||||||
|  |       - uses: actions/checkout@v3 | ||||||
|  |  | ||||||
|  |       - name: Download Build Artifacts | ||||||
|  |         uses: actions/download-artifact@v3 | ||||||
|  |         with: | ||||||
|  |           name: pytorch-triton-conda | ||||||
|  |           path: ${{ runner.temp }}/artifacts/ | ||||||
|  |  | ||||||
|  |       - name: Set DRY_RUN (only for tagged pushes) | ||||||
|  |         if: ${{ github.event_name == 'push' && (github.event.ref == 'refs/heads/nightly' || (startsWith(github.event.ref, 'refs/tags/v'))) }} | ||||||
|  |         shell: bash | ||||||
|  |         run: | | ||||||
|  |           echo "DRY_RUN=disabled" >> "$GITHUB_ENV" | ||||||
|  |  | ||||||
|  |       - name: Set UPLOAD_CHANNEL (only for tagged pushes) | ||||||
|  |         if: ${{ github.event_name == 'push' && startsWith(github.event.ref, 'refs/tags/v') }} | ||||||
|  |         shell: bash | ||||||
|  |         run: | | ||||||
|  |           set -ex | ||||||
|  |  | ||||||
|  |           # reference ends with an RC suffix | ||||||
|  |           if [[ "${GITHUB_REF_NAME}" = *-rc[0-9]* ]]; then | ||||||
|  |             echo "UPLOAD_CHANNEL=test" >> "$GITHUB_ENV" | ||||||
|  |           fi | ||||||
|  |  | ||||||
|  |       # NB: This step is gated by DRY_RUN, which is enabled everywhere except nightly and release branches | ||||||
|  |       - name: Upload binaries to Anaconda | ||||||
|  |         env: | ||||||
|  |           PACKAGE_TYPE: conda | ||||||
|  |           PKG_DIR: ${{ runner.temp }}/artifacts | ||||||
|  |           # When running these on pull_request events these should be blank | ||||||
|  |           CONDA_PYTORCHBOT_TOKEN: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} | ||||||
|  |           CONDA_PYTORCHBOT_TOKEN_TEST: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|  |         shell: bash | ||||||
|  |         run: | | ||||||
|  |           set -ex | ||||||
|  |  | ||||||
|  |           if [[ "${UPLOAD_CHANNEL}" = "nightly" ]]; then | ||||||
|  |             export ANACONDA_API_TOKEN="${CONDA_PYTORCHBOT_TOKEN}" | ||||||
|  |           else | ||||||
|  |             export ANACONDA_API_TOKEN="${CONDA_PYTORCHBOT_TOKEN_TEST}" | ||||||
|  |           fi | ||||||
|  |           bash .circleci/scripts/binary_upload.sh | ||||||
|  | |||||||
							
								
								
									
										2
									
								
								.github/workflows/check-labels.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.github/workflows/check-labels.yml
									
									
									
									
										vendored
									
									
								
							| @ -29,7 +29,7 @@ jobs: | |||||||
|     runs-on: linux.20_04.4x |     runs-on: linux.20_04.4x | ||||||
|     steps: |     steps: | ||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: pytorch/pytorch/.github/actions/checkout-pytorch@main |         uses: pytorch/pytorch/.github/actions/checkout-pytorch@release/2.1 | ||||||
|         with: |         with: | ||||||
|           submodules: false |           submodules: false | ||||||
|           fetch-depth: 1 |           fetch-depth: 1 | ||||||
|  | |||||||
| @ -10,7 +10,7 @@ jobs: | |||||||
|     runs-on: ubuntu-latest |     runs-on: ubuntu-latest | ||||||
|     steps: |     steps: | ||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: pytorch/pytorch/.github/actions/checkout-pytorch@main |         uses: pytorch/pytorch/.github/actions/checkout-pytorch@release/2.1 | ||||||
|  |  | ||||||
|       - name: Run close_nonexistent_disable_issues.py |       - name: Run close_nonexistent_disable_issues.py | ||||||
|         env: |         env: | ||||||
|  | |||||||
							
								
								
									
										8
									
								
								.github/workflows/docker-builds.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										8
									
								
								.github/workflows/docker-builds.yml
									
									
									
									
										vendored
									
									
								
							| @ -61,21 +61,21 @@ jobs: | |||||||
|       # [see note: pytorch repo ref] |       # [see note: pytorch repo ref] | ||||||
|       # deep clone (fetch-depth 0) required for git merge-base |       # deep clone (fetch-depth 0) required for git merge-base | ||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: pytorch/pytorch/.github/actions/checkout-pytorch@main |         uses: pytorch/pytorch/.github/actions/checkout-pytorch@release/2.1 | ||||||
|  |  | ||||||
|       - name: Setup Linux |       - name: Setup Linux | ||||||
|         uses: ./.github/actions/setup-linux |         uses: ./.github/actions/setup-linux | ||||||
|  |  | ||||||
|       - name: Build docker image |       - name: Build docker image | ||||||
|         id: build-docker-image |         id: build-docker-image | ||||||
|         uses: pytorch/test-infra/.github/actions/calculate-docker-image@main |         uses: pytorch/test-infra/.github/actions/calculate-docker-image@release/2.1 | ||||||
|         with: |         with: | ||||||
|           docker-image-name: ${{ matrix.docker-image-name }} |           docker-image-name: ${{ matrix.docker-image-name }} | ||||||
|           always-rebuild: true |           always-rebuild: true | ||||||
|           push: true |           push: true | ||||||
|  |  | ||||||
|       - name: Pull docker image |       - name: Pull docker image | ||||||
|         uses: pytorch/test-infra/.github/actions/pull-docker-image@main |         uses: pytorch/test-infra/.github/actions/pull-docker-image@release/2.1 | ||||||
|         with: |         with: | ||||||
|           docker-image: ${{ steps.build-docker-image.outputs.docker-image }} |           docker-image: ${{ steps.build-docker-image.outputs.docker-image }} | ||||||
|  |  | ||||||
| @ -105,5 +105,5 @@ jobs: | |||||||
|         if: always() |         if: always() | ||||||
|  |  | ||||||
|       - name: Teardown Linux |       - name: Teardown Linux | ||||||
|         uses: pytorch/test-infra/.github/actions/teardown-linux@main |         uses: pytorch/test-infra/.github/actions/teardown-linux@release/2.1 | ||||||
|         if: always() |         if: always() | ||||||
|  | |||||||
							
								
								
									
										10
									
								
								.github/workflows/docker-release.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										10
									
								
								.github/workflows/docker-release.yml
									
									
									
									
										vendored
									
									
								
							| @ -47,7 +47,7 @@ jobs: | |||||||
|       BUILD_PLATFORMS: ${{ matrix.platform }} |       BUILD_PLATFORMS: ${{ matrix.platform }} | ||||||
|     steps: |     steps: | ||||||
|       - name: Setup SSH (Click me for login details) |       - name: Setup SSH (Click me for login details) | ||||||
|         uses: pytorch/test-infra/.github/actions/setup-ssh@main |         uses: pytorch/test-infra/.github/actions/setup-ssh@release/2.1 | ||||||
|         with: |         with: | ||||||
|           github-secret: ${{ secrets.GITHUB_TOKEN }} |           github-secret: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       # [see note: pytorch repo ref] |       # [see note: pytorch repo ref] | ||||||
| @ -82,12 +82,10 @@ jobs: | |||||||
|           echo "${RUNNER_TEMP}/bin" >> "${GITHUB_PATH}" |           echo "${RUNNER_TEMP}/bin" >> "${GITHUB_PATH}" | ||||||
|           # Generate PyTorch version to use |           # Generate PyTorch version to use | ||||||
|           echo "PYTORCH_VERSION=$(python3 .github/scripts/generate_pytorch_version.py)" >> "${GITHUB_ENV}" |           echo "PYTORCH_VERSION=$(python3 .github/scripts/generate_pytorch_version.py)" >> "${GITHUB_ENV}" | ||||||
|       - name: Setup nightly specific variables |       - name: Setup release specific variables | ||||||
|         if: ${{ github.event.ref == 'refs/heads/nightly' || startsWith(github.event.ref, 'refs/tags/ciflow/nightly/') }} |  | ||||||
|         run: | |         run: | | ||||||
|           { |           { | ||||||
|             echo "DOCKER_IMAGE=pytorch-nightly"; |             echo "INSTALL_CHANNEL=pytorch-test"; | ||||||
|             echo "INSTALL_CHANNEL=pytorch-nightly"; |  | ||||||
|             echo "TRITON_VERSION=$(cut -f 1 .ci/docker/triton_version.txt)+$(cut -c -10 .ci/docker/ci_commit_pins/triton.txt)"; |             echo "TRITON_VERSION=$(cut -f 1 .ci/docker/triton_version.txt)+$(cut -c -10 .ci/docker/ci_commit_pins/triton.txt)"; | ||||||
|           } >> "${GITHUB_ENV}" |           } >> "${GITHUB_ENV}" | ||||||
|       - name: Run docker build / push |       - name: Run docker build / push | ||||||
| @ -109,5 +107,5 @@ jobs: | |||||||
|                  ghcr.io/pytorch/pytorch-nightly:latest |                  ghcr.io/pytorch/pytorch-nightly:latest | ||||||
|           docker push ghcr.io/pytorch/pytorch-nightly:latest |           docker push ghcr.io/pytorch/pytorch-nightly:latest | ||||||
|       - name: Teardown Linux |       - name: Teardown Linux | ||||||
|         uses: pytorch/test-infra/.github/actions/teardown-linux@main |         uses: pytorch/test-infra/.github/actions/teardown-linux@release/2.1 | ||||||
|         if: always() |         if: always() | ||||||
|  | |||||||
							
								
								
									
										8
									
								
								.github/workflows/generated-linux-aarch64-binary-manywheel-nightly.yml
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										8
									
								
								.github/workflows/generated-linux-aarch64-binary-manywheel-nightly.yml
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -93,7 +93,7 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|  |  | ||||||
|   manywheel-py3_9-cpu-aarch64-build: |   manywheel-py3_9-cpu-aarch64-build: | ||||||
| @ -153,7 +153,7 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|  |  | ||||||
|   manywheel-py3_10-cpu-aarch64-build: |   manywheel-py3_10-cpu-aarch64-build: | ||||||
| @ -213,7 +213,7 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|  |  | ||||||
|   manywheel-py3_11-cpu-aarch64-build: |   manywheel-py3_11-cpu-aarch64-build: | ||||||
| @ -273,5 +273,5 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|  | |||||||
							
								
								
									
										24
									
								
								.github/workflows/generated-linux-binary-conda-nightly.yml
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										24
									
								
								.github/workflows/generated-linux-binary-conda-nightly.yml
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -90,7 +90,7 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|  |  | ||||||
|   conda-py3_8-cuda11_8-build: |   conda-py3_8-cuda11_8-build: | ||||||
| @ -150,7 +150,7 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|  |  | ||||||
|   conda-py3_8-cuda12_1-build: |   conda-py3_8-cuda12_1-build: | ||||||
| @ -210,7 +210,7 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|  |  | ||||||
|   conda-py3_9-cpu-build: |   conda-py3_9-cpu-build: | ||||||
| @ -267,7 +267,7 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|  |  | ||||||
|   conda-py3_9-cuda11_8-build: |   conda-py3_9-cuda11_8-build: | ||||||
| @ -327,7 +327,7 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|  |  | ||||||
|   conda-py3_9-cuda12_1-build: |   conda-py3_9-cuda12_1-build: | ||||||
| @ -387,7 +387,7 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|  |  | ||||||
|   conda-py3_10-cpu-build: |   conda-py3_10-cpu-build: | ||||||
| @ -444,7 +444,7 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|  |  | ||||||
|   conda-py3_10-cuda11_8-build: |   conda-py3_10-cuda11_8-build: | ||||||
| @ -504,7 +504,7 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|  |  | ||||||
|   conda-py3_10-cuda12_1-build: |   conda-py3_10-cuda12_1-build: | ||||||
| @ -564,7 +564,7 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|  |  | ||||||
|   conda-py3_11-cpu-build: |   conda-py3_11-cpu-build: | ||||||
| @ -621,7 +621,7 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|  |  | ||||||
|   conda-py3_11-cuda11_8-build: |   conda-py3_11-cuda11_8-build: | ||||||
| @ -681,7 +681,7 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|  |  | ||||||
|   conda-py3_11-cuda12_1-build: |   conda-py3_11-cuda12_1-build: | ||||||
| @ -741,5 +741,5 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|  | |||||||
							
								
								
									
										52
									
								
								.github/workflows/generated-linux-binary-libtorch-cxx11-abi-nightly.yml
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										52
									
								
								.github/workflows/generated-linux-binary-libtorch-cxx11-abi-nightly.yml
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -93,7 +93,7 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|  |  | ||||||
|   libtorch-cpu-shared-without-deps-cxx11-abi-build: |   libtorch-cpu-shared-without-deps-cxx11-abi-build: | ||||||
| @ -153,7 +153,7 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|  |  | ||||||
|   libtorch-cpu-static-with-deps-cxx11-abi-build: |   libtorch-cpu-static-with-deps-cxx11-abi-build: | ||||||
| @ -213,7 +213,7 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|  |  | ||||||
|   libtorch-cpu-static-without-deps-cxx11-abi-build: |   libtorch-cpu-static-without-deps-cxx11-abi-build: | ||||||
| @ -273,7 +273,7 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|  |  | ||||||
|   libtorch-cuda11_8-shared-with-deps-cxx11-abi-build: |   libtorch-cuda11_8-shared-with-deps-cxx11-abi-build: | ||||||
| @ -336,7 +336,7 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|  |  | ||||||
|   libtorch-cuda11_8-shared-without-deps-cxx11-abi-build: |   libtorch-cuda11_8-shared-without-deps-cxx11-abi-build: | ||||||
| @ -399,7 +399,7 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|  |  | ||||||
|   libtorch-cuda11_8-static-with-deps-cxx11-abi-build: |   libtorch-cuda11_8-static-with-deps-cxx11-abi-build: | ||||||
| @ -462,7 +462,7 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|  |  | ||||||
|   libtorch-cuda11_8-static-without-deps-cxx11-abi-build: |   libtorch-cuda11_8-static-without-deps-cxx11-abi-build: | ||||||
| @ -525,7 +525,7 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|  |  | ||||||
|   libtorch-cuda12_1-shared-with-deps-cxx11-abi-build: |   libtorch-cuda12_1-shared-with-deps-cxx11-abi-build: | ||||||
| @ -588,7 +588,7 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|  |  | ||||||
|   libtorch-cuda12_1-shared-without-deps-cxx11-abi-build: |   libtorch-cuda12_1-shared-without-deps-cxx11-abi-build: | ||||||
| @ -651,7 +651,7 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|  |  | ||||||
|   libtorch-cuda12_1-static-with-deps-cxx11-abi-build: |   libtorch-cuda12_1-static-with-deps-cxx11-abi-build: | ||||||
| @ -714,7 +714,7 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|  |  | ||||||
|   libtorch-cuda12_1-static-without-deps-cxx11-abi-build: |   libtorch-cuda12_1-static-without-deps-cxx11-abi-build: | ||||||
| @ -777,7 +777,7 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|  |  | ||||||
|   libtorch-rocm5_5-shared-with-deps-cxx11-abi-build: |   libtorch-rocm5_5-shared-with-deps-cxx11-abi-build: | ||||||
| @ -828,7 +828,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -840,7 +839,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -854,7 +853,7 @@ jobs: | |||||||
|         run: | |         run: | | ||||||
|           echo "GPU_FLAG=--device=/dev/mem --device=/dev/kfd --device=/dev/dri --group-add video --group-add daemon" >> "${GITHUB_ENV}" |           echo "GPU_FLAG=--device=/dev/mem --device=/dev/kfd --device=/dev/dri --group-add video --group-add daemon" >> "${GITHUB_ENV}" | ||||||
|       - name: Pull Docker image |       - name: Pull Docker image | ||||||
|         uses: pytorch/test-infra/.github/actions/pull-docker-image@main |         uses: pytorch/test-infra/.github/actions/pull-docker-image@release/2.1 | ||||||
|         with: |         with: | ||||||
|           docker-image: pytorch/libtorch-cxx11-builder:rocm5.5 |           docker-image: pytorch/libtorch-cxx11-builder:rocm5.5 | ||||||
|       - name: Test Pytorch binary |       - name: Test Pytorch binary | ||||||
| @ -881,7 +880,7 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|  |  | ||||||
|   libtorch-rocm5_5-static-with-deps-cxx11-abi-build: |   libtorch-rocm5_5-static-with-deps-cxx11-abi-build: | ||||||
| @ -932,7 +931,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -944,7 +942,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -958,7 +956,7 @@ jobs: | |||||||
|         run: | |         run: | | ||||||
|           echo "GPU_FLAG=--device=/dev/mem --device=/dev/kfd --device=/dev/dri --group-add video --group-add daemon" >> "${GITHUB_ENV}" |           echo "GPU_FLAG=--device=/dev/mem --device=/dev/kfd --device=/dev/dri --group-add video --group-add daemon" >> "${GITHUB_ENV}" | ||||||
|       - name: Pull Docker image |       - name: Pull Docker image | ||||||
|         uses: pytorch/test-infra/.github/actions/pull-docker-image@main |         uses: pytorch/test-infra/.github/actions/pull-docker-image@release/2.1 | ||||||
|         with: |         with: | ||||||
|           docker-image: pytorch/libtorch-cxx11-builder:rocm5.5 |           docker-image: pytorch/libtorch-cxx11-builder:rocm5.5 | ||||||
|       - name: Test Pytorch binary |       - name: Test Pytorch binary | ||||||
| @ -985,7 +983,7 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|  |  | ||||||
|   libtorch-rocm5_6-shared-with-deps-cxx11-abi-build: |   libtorch-rocm5_6-shared-with-deps-cxx11-abi-build: | ||||||
| @ -1036,7 +1034,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -1048,7 +1045,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -1062,7 +1059,7 @@ jobs: | |||||||
|         run: | |         run: | | ||||||
|           echo "GPU_FLAG=--device=/dev/mem --device=/dev/kfd --device=/dev/dri --group-add video --group-add daemon" >> "${GITHUB_ENV}" |           echo "GPU_FLAG=--device=/dev/mem --device=/dev/kfd --device=/dev/dri --group-add video --group-add daemon" >> "${GITHUB_ENV}" | ||||||
|       - name: Pull Docker image |       - name: Pull Docker image | ||||||
|         uses: pytorch/test-infra/.github/actions/pull-docker-image@main |         uses: pytorch/test-infra/.github/actions/pull-docker-image@release/2.1 | ||||||
|         with: |         with: | ||||||
|           docker-image: pytorch/libtorch-cxx11-builder:rocm5.6 |           docker-image: pytorch/libtorch-cxx11-builder:rocm5.6 | ||||||
|       - name: Test Pytorch binary |       - name: Test Pytorch binary | ||||||
| @ -1089,7 +1086,7 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|  |  | ||||||
|   libtorch-rocm5_6-static-with-deps-cxx11-abi-build: |   libtorch-rocm5_6-static-with-deps-cxx11-abi-build: | ||||||
| @ -1140,7 +1137,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -1152,7 +1148,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -1166,7 +1162,7 @@ jobs: | |||||||
|         run: | |         run: | | ||||||
|           echo "GPU_FLAG=--device=/dev/mem --device=/dev/kfd --device=/dev/dri --group-add video --group-add daemon" >> "${GITHUB_ENV}" |           echo "GPU_FLAG=--device=/dev/mem --device=/dev/kfd --device=/dev/dri --group-add video --group-add daemon" >> "${GITHUB_ENV}" | ||||||
|       - name: Pull Docker image |       - name: Pull Docker image | ||||||
|         uses: pytorch/test-infra/.github/actions/pull-docker-image@main |         uses: pytorch/test-infra/.github/actions/pull-docker-image@release/2.1 | ||||||
|         with: |         with: | ||||||
|           docker-image: pytorch/libtorch-cxx11-builder:rocm5.6 |           docker-image: pytorch/libtorch-cxx11-builder:rocm5.6 | ||||||
|       - name: Test Pytorch binary |       - name: Test Pytorch binary | ||||||
| @ -1193,5 +1189,5 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|  | |||||||
							
								
								
									
										52
									
								
								.github/workflows/generated-linux-binary-libtorch-pre-cxx11-nightly.yml
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										52
									
								
								.github/workflows/generated-linux-binary-libtorch-pre-cxx11-nightly.yml
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -93,7 +93,7 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|  |  | ||||||
|   libtorch-cpu-shared-without-deps-pre-cxx11-build: |   libtorch-cpu-shared-without-deps-pre-cxx11-build: | ||||||
| @ -153,7 +153,7 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|  |  | ||||||
|   libtorch-cpu-static-with-deps-pre-cxx11-build: |   libtorch-cpu-static-with-deps-pre-cxx11-build: | ||||||
| @ -213,7 +213,7 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|  |  | ||||||
|   libtorch-cpu-static-without-deps-pre-cxx11-build: |   libtorch-cpu-static-without-deps-pre-cxx11-build: | ||||||
| @ -273,7 +273,7 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|  |  | ||||||
|   libtorch-cuda11_8-shared-with-deps-pre-cxx11-build: |   libtorch-cuda11_8-shared-with-deps-pre-cxx11-build: | ||||||
| @ -336,7 +336,7 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|  |  | ||||||
|   libtorch-cuda11_8-shared-without-deps-pre-cxx11-build: |   libtorch-cuda11_8-shared-without-deps-pre-cxx11-build: | ||||||
| @ -399,7 +399,7 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|  |  | ||||||
|   libtorch-cuda11_8-static-with-deps-pre-cxx11-build: |   libtorch-cuda11_8-static-with-deps-pre-cxx11-build: | ||||||
| @ -462,7 +462,7 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|  |  | ||||||
|   libtorch-cuda11_8-static-without-deps-pre-cxx11-build: |   libtorch-cuda11_8-static-without-deps-pre-cxx11-build: | ||||||
| @ -525,7 +525,7 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|  |  | ||||||
|   libtorch-cuda12_1-shared-with-deps-pre-cxx11-build: |   libtorch-cuda12_1-shared-with-deps-pre-cxx11-build: | ||||||
| @ -588,7 +588,7 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|  |  | ||||||
|   libtorch-cuda12_1-shared-without-deps-pre-cxx11-build: |   libtorch-cuda12_1-shared-without-deps-pre-cxx11-build: | ||||||
| @ -651,7 +651,7 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|  |  | ||||||
|   libtorch-cuda12_1-static-with-deps-pre-cxx11-build: |   libtorch-cuda12_1-static-with-deps-pre-cxx11-build: | ||||||
| @ -714,7 +714,7 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|  |  | ||||||
|   libtorch-cuda12_1-static-without-deps-pre-cxx11-build: |   libtorch-cuda12_1-static-without-deps-pre-cxx11-build: | ||||||
| @ -777,7 +777,7 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|  |  | ||||||
|   libtorch-rocm5_5-shared-with-deps-pre-cxx11-build: |   libtorch-rocm5_5-shared-with-deps-pre-cxx11-build: | ||||||
| @ -828,7 +828,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -840,7 +839,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -854,7 +853,7 @@ jobs: | |||||||
|         run: | |         run: | | ||||||
|           echo "GPU_FLAG=--device=/dev/mem --device=/dev/kfd --device=/dev/dri --group-add video --group-add daemon" >> "${GITHUB_ENV}" |           echo "GPU_FLAG=--device=/dev/mem --device=/dev/kfd --device=/dev/dri --group-add video --group-add daemon" >> "${GITHUB_ENV}" | ||||||
|       - name: Pull Docker image |       - name: Pull Docker image | ||||||
|         uses: pytorch/test-infra/.github/actions/pull-docker-image@main |         uses: pytorch/test-infra/.github/actions/pull-docker-image@release/2.1 | ||||||
|         with: |         with: | ||||||
|           docker-image: pytorch/manylinux-builder:rocm5.5 |           docker-image: pytorch/manylinux-builder:rocm5.5 | ||||||
|       - name: Test Pytorch binary |       - name: Test Pytorch binary | ||||||
| @ -881,7 +880,7 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|  |  | ||||||
|   libtorch-rocm5_5-static-with-deps-pre-cxx11-build: |   libtorch-rocm5_5-static-with-deps-pre-cxx11-build: | ||||||
| @ -932,7 +931,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -944,7 +942,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -958,7 +956,7 @@ jobs: | |||||||
|         run: | |         run: | | ||||||
|           echo "GPU_FLAG=--device=/dev/mem --device=/dev/kfd --device=/dev/dri --group-add video --group-add daemon" >> "${GITHUB_ENV}" |           echo "GPU_FLAG=--device=/dev/mem --device=/dev/kfd --device=/dev/dri --group-add video --group-add daemon" >> "${GITHUB_ENV}" | ||||||
|       - name: Pull Docker image |       - name: Pull Docker image | ||||||
|         uses: pytorch/test-infra/.github/actions/pull-docker-image@main |         uses: pytorch/test-infra/.github/actions/pull-docker-image@release/2.1 | ||||||
|         with: |         with: | ||||||
|           docker-image: pytorch/manylinux-builder:rocm5.5 |           docker-image: pytorch/manylinux-builder:rocm5.5 | ||||||
|       - name: Test Pytorch binary |       - name: Test Pytorch binary | ||||||
| @ -985,7 +983,7 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|  |  | ||||||
|   libtorch-rocm5_6-shared-with-deps-pre-cxx11-build: |   libtorch-rocm5_6-shared-with-deps-pre-cxx11-build: | ||||||
| @ -1036,7 +1034,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -1048,7 +1045,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -1062,7 +1059,7 @@ jobs: | |||||||
|         run: | |         run: | | ||||||
|           echo "GPU_FLAG=--device=/dev/mem --device=/dev/kfd --device=/dev/dri --group-add video --group-add daemon" >> "${GITHUB_ENV}" |           echo "GPU_FLAG=--device=/dev/mem --device=/dev/kfd --device=/dev/dri --group-add video --group-add daemon" >> "${GITHUB_ENV}" | ||||||
|       - name: Pull Docker image |       - name: Pull Docker image | ||||||
|         uses: pytorch/test-infra/.github/actions/pull-docker-image@main |         uses: pytorch/test-infra/.github/actions/pull-docker-image@release/2.1 | ||||||
|         with: |         with: | ||||||
|           docker-image: pytorch/manylinux-builder:rocm5.6 |           docker-image: pytorch/manylinux-builder:rocm5.6 | ||||||
|       - name: Test Pytorch binary |       - name: Test Pytorch binary | ||||||
| @ -1089,7 +1086,7 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|  |  | ||||||
|   libtorch-rocm5_6-static-with-deps-pre-cxx11-build: |   libtorch-rocm5_6-static-with-deps-pre-cxx11-build: | ||||||
| @ -1140,7 +1137,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -1152,7 +1148,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -1166,7 +1162,7 @@ jobs: | |||||||
|         run: | |         run: | | ||||||
|           echo "GPU_FLAG=--device=/dev/mem --device=/dev/kfd --device=/dev/dri --group-add video --group-add daemon" >> "${GITHUB_ENV}" |           echo "GPU_FLAG=--device=/dev/mem --device=/dev/kfd --device=/dev/dri --group-add video --group-add daemon" >> "${GITHUB_ENV}" | ||||||
|       - name: Pull Docker image |       - name: Pull Docker image | ||||||
|         uses: pytorch/test-infra/.github/actions/pull-docker-image@main |         uses: pytorch/test-infra/.github/actions/pull-docker-image@release/2.1 | ||||||
|         with: |         with: | ||||||
|           docker-image: pytorch/manylinux-builder:rocm5.6 |           docker-image: pytorch/manylinux-builder:rocm5.6 | ||||||
|       - name: Test Pytorch binary |       - name: Test Pytorch binary | ||||||
| @ -1193,5 +1189,5 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|  | |||||||
							
								
								
									
										2
									
								
								.github/workflows/generated-linux-binary-manywheel-main.yml
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.github/workflows/generated-linux-binary-manywheel-main.yml
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -86,7 +86,7 @@ jobs: | |||||||
|       DESIRED_PYTHON: "3.8" |       DESIRED_PYTHON: "3.8" | ||||||
|       build_name: manywheel-py3_8-cuda12_1-with-pypi-cudnn |       build_name: manywheel-py3_8-cuda12_1-with-pypi-cudnn | ||||||
|       build_environment: linux-binary-manywheel |       build_environment: linux-binary-manywheel | ||||||
|       PYTORCH_EXTRA_INSTALL_REQUIREMENTS: nvidia-cuda-nvrtc-cu12==12.1.105; platform_system == 'Linux' and platform_machine == 'x86_64' | nvidia-cuda-runtime-cu12==12.1.105; platform_system == 'Linux' and platform_machine == 'x86_64' | nvidia-cuda-cupti-cu12==12.1.105; platform_system == 'Linux' and platform_machine == 'x86_64' | nvidia-cudnn-cu12==8.9.2.26; platform_system == 'Linux' and platform_machine == 'x86_64' | nvidia-cublas-cu12==12.1.3.1; platform_system == 'Linux' and platform_machine == 'x86_64' | nvidia-cufft-cu12==11.0.2.54; platform_system == 'Linux' and platform_machine == 'x86_64' | nvidia-curand-cu12==10.3.2.106; platform_system == 'Linux' and platform_machine == 'x86_64' | nvidia-cusolver-cu12==11.4.5.107; platform_system == 'Linux' and platform_machine == 'x86_64' | nvidia-cusparse-cu12==12.1.0.106; platform_system == 'Linux' and platform_machine == 'x86_64' | nvidia-nccl-cu12==2.18.1; platform_system == 'Linux' and platform_machine == 'x86_64' | nvidia-nvtx-cu12==12.1.105; platform_system == 'Linux' and platform_machine == 'x86_64' |       PYTORCH_EXTRA_INSTALL_REQUIREMENTS: nvidia-cuda-nvrtc-cu12==12.1.105; platform_system == 'Linux' and platform_machine == 'x86_64' | nvidia-cuda-runtime-cu12==12.1.105; platform_system == 'Linux' and platform_machine == 'x86_64' | nvidia-cuda-cupti-cu12==12.1.105; platform_system == 'Linux' and platform_machine == 'x86_64' | nvidia-cudnn-cu12==8.9.2.26; platform_system == 'Linux' and platform_machine == 'x86_64' | nvidia-cublas-cu12==12.1.3.1; platform_system == 'Linux' and platform_machine == 'x86_64' | nvidia-cufft-cu12==11.0.2.54; platform_system == 'Linux' and platform_machine == 'x86_64' | nvidia-curand-cu12==10.3.2.106; platform_system == 'Linux' and platform_machine == 'x86_64' | nvidia-cusolver-cu12==11.4.5.107; platform_system == 'Linux' and platform_machine == 'x86_64' | nvidia-cusparse-cu12==12.1.0.106; platform_system == 'Linux' and platform_machine == 'x86_64' | nvidia-nccl-cu12==2.18.1; platform_system == 'Linux' and platform_machine == 'x86_64' | nvidia-nvtx-cu12==12.1.105; platform_system == 'Linux' and platform_machine == 'x86_64' | triton==2.1.0; platform_system == 'Linux' and platform_machine == 'x86_64' | ||||||
|     secrets: |     secrets: | ||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|   manywheel-py3_8-cuda12_1-with-pypi-cudnn-test:  # Testing |   manywheel-py3_8-cuda12_1-with-pypi-cudnn-test:  # Testing | ||||||
|  | |||||||
							
								
								
									
										104
									
								
								.github/workflows/generated-linux-binary-manywheel-nightly.yml
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										104
									
								
								.github/workflows/generated-linux-binary-manywheel-nightly.yml
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -90,7 +90,7 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|  |  | ||||||
|   manywheel-py3_8-cpu-cxx11-abi-build: |   manywheel-py3_8-cpu-cxx11-abi-build: | ||||||
| @ -150,7 +150,7 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|  |  | ||||||
|   manywheel-py3_8-cuda11_8-build: |   manywheel-py3_8-cuda11_8-build: | ||||||
| @ -210,7 +210,7 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|  |  | ||||||
|   manywheel-py3_8-cuda12_1-with-pypi-cudnn-build: |   manywheel-py3_8-cuda12_1-with-pypi-cudnn-build: | ||||||
| @ -229,7 +229,7 @@ jobs: | |||||||
|       DESIRED_PYTHON: "3.8" |       DESIRED_PYTHON: "3.8" | ||||||
|       build_name: manywheel-py3_8-cuda12_1-with-pypi-cudnn |       build_name: manywheel-py3_8-cuda12_1-with-pypi-cudnn | ||||||
|       build_environment: linux-binary-manywheel |       build_environment: linux-binary-manywheel | ||||||
|       PYTORCH_EXTRA_INSTALL_REQUIREMENTS: nvidia-cuda-nvrtc-cu12==12.1.105; platform_system == 'Linux' and platform_machine == 'x86_64' | nvidia-cuda-runtime-cu12==12.1.105; platform_system == 'Linux' and platform_machine == 'x86_64' | nvidia-cuda-cupti-cu12==12.1.105; platform_system == 'Linux' and platform_machine == 'x86_64' | nvidia-cudnn-cu12==8.9.2.26; platform_system == 'Linux' and platform_machine == 'x86_64' | nvidia-cublas-cu12==12.1.3.1; platform_system == 'Linux' and platform_machine == 'x86_64' | nvidia-cufft-cu12==11.0.2.54; platform_system == 'Linux' and platform_machine == 'x86_64' | nvidia-curand-cu12==10.3.2.106; platform_system == 'Linux' and platform_machine == 'x86_64' | nvidia-cusolver-cu12==11.4.5.107; platform_system == 'Linux' and platform_machine == 'x86_64' | nvidia-cusparse-cu12==12.1.0.106; platform_system == 'Linux' and platform_machine == 'x86_64' | nvidia-nccl-cu12==2.18.1; platform_system == 'Linux' and platform_machine == 'x86_64' | nvidia-nvtx-cu12==12.1.105; platform_system == 'Linux' and platform_machine == 'x86_64' |       PYTORCH_EXTRA_INSTALL_REQUIREMENTS: nvidia-cuda-nvrtc-cu12==12.1.105; platform_system == 'Linux' and platform_machine == 'x86_64' | nvidia-cuda-runtime-cu12==12.1.105; platform_system == 'Linux' and platform_machine == 'x86_64' | nvidia-cuda-cupti-cu12==12.1.105; platform_system == 'Linux' and platform_machine == 'x86_64' | nvidia-cudnn-cu12==8.9.2.26; platform_system == 'Linux' and platform_machine == 'x86_64' | nvidia-cublas-cu12==12.1.3.1; platform_system == 'Linux' and platform_machine == 'x86_64' | nvidia-cufft-cu12==11.0.2.54; platform_system == 'Linux' and platform_machine == 'x86_64' | nvidia-curand-cu12==10.3.2.106; platform_system == 'Linux' and platform_machine == 'x86_64' | nvidia-cusolver-cu12==11.4.5.107; platform_system == 'Linux' and platform_machine == 'x86_64' | nvidia-cusparse-cu12==12.1.0.106; platform_system == 'Linux' and platform_machine == 'x86_64' | nvidia-nccl-cu12==2.18.1; platform_system == 'Linux' and platform_machine == 'x86_64' | nvidia-nvtx-cu12==12.1.105; platform_system == 'Linux' and platform_machine == 'x86_64' | triton==2.1.0; platform_system == 'Linux' and platform_machine == 'x86_64' | ||||||
|     secrets: |     secrets: | ||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|   manywheel-py3_8-cuda12_1-with-pypi-cudnn-test:  # Testing |   manywheel-py3_8-cuda12_1-with-pypi-cudnn-test:  # Testing | ||||||
| @ -271,7 +271,7 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|  |  | ||||||
|   manywheel-py3_8-cuda12_1-build: |   manywheel-py3_8-cuda12_1-build: | ||||||
| @ -331,7 +331,7 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|  |  | ||||||
|   manywheel-py3_8-rocm5_5-build: |   manywheel-py3_8-rocm5_5-build: | ||||||
| @ -380,7 +380,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -392,7 +391,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -406,7 +405,7 @@ jobs: | |||||||
|         run: | |         run: | | ||||||
|           echo "GPU_FLAG=--device=/dev/mem --device=/dev/kfd --device=/dev/dri --group-add video --group-add daemon" >> "${GITHUB_ENV}" |           echo "GPU_FLAG=--device=/dev/mem --device=/dev/kfd --device=/dev/dri --group-add video --group-add daemon" >> "${GITHUB_ENV}" | ||||||
|       - name: Pull Docker image |       - name: Pull Docker image | ||||||
|         uses: pytorch/test-infra/.github/actions/pull-docker-image@main |         uses: pytorch/test-infra/.github/actions/pull-docker-image@release/2.1 | ||||||
|         with: |         with: | ||||||
|           docker-image: pytorch/manylinux-builder:rocm5.5 |           docker-image: pytorch/manylinux-builder:rocm5.5 | ||||||
|       - name: Test Pytorch binary |       - name: Test Pytorch binary | ||||||
| @ -432,7 +431,7 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|  |  | ||||||
|   manywheel-py3_8-rocm5_6-build: |   manywheel-py3_8-rocm5_6-build: | ||||||
| @ -481,7 +480,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -493,7 +491,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -507,7 +505,7 @@ jobs: | |||||||
|         run: | |         run: | | ||||||
|           echo "GPU_FLAG=--device=/dev/mem --device=/dev/kfd --device=/dev/dri --group-add video --group-add daemon" >> "${GITHUB_ENV}" |           echo "GPU_FLAG=--device=/dev/mem --device=/dev/kfd --device=/dev/dri --group-add video --group-add daemon" >> "${GITHUB_ENV}" | ||||||
|       - name: Pull Docker image |       - name: Pull Docker image | ||||||
|         uses: pytorch/test-infra/.github/actions/pull-docker-image@main |         uses: pytorch/test-infra/.github/actions/pull-docker-image@release/2.1 | ||||||
|         with: |         with: | ||||||
|           docker-image: pytorch/manylinux-builder:rocm5.6 |           docker-image: pytorch/manylinux-builder:rocm5.6 | ||||||
|       - name: Test Pytorch binary |       - name: Test Pytorch binary | ||||||
| @ -533,7 +531,7 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|  |  | ||||||
|   manywheel-py3_9-cpu-build: |   manywheel-py3_9-cpu-build: | ||||||
| @ -590,7 +588,7 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|  |  | ||||||
|   manywheel-py3_9-cpu-cxx11-abi-build: |   manywheel-py3_9-cpu-cxx11-abi-build: | ||||||
| @ -650,7 +648,7 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|  |  | ||||||
|   manywheel-py3_9-cuda11_8-build: |   manywheel-py3_9-cuda11_8-build: | ||||||
| @ -710,7 +708,7 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|  |  | ||||||
|   manywheel-py3_9-cuda12_1-with-pypi-cudnn-build: |   manywheel-py3_9-cuda12_1-with-pypi-cudnn-build: | ||||||
| @ -729,7 +727,7 @@ jobs: | |||||||
|       DESIRED_PYTHON: "3.9" |       DESIRED_PYTHON: "3.9" | ||||||
|       build_name: manywheel-py3_9-cuda12_1-with-pypi-cudnn |       build_name: manywheel-py3_9-cuda12_1-with-pypi-cudnn | ||||||
|       build_environment: linux-binary-manywheel |       build_environment: linux-binary-manywheel | ||||||
|       PYTORCH_EXTRA_INSTALL_REQUIREMENTS: nvidia-cuda-nvrtc-cu12==12.1.105; platform_system == 'Linux' and platform_machine == 'x86_64' | nvidia-cuda-runtime-cu12==12.1.105; platform_system == 'Linux' and platform_machine == 'x86_64' | nvidia-cuda-cupti-cu12==12.1.105; platform_system == 'Linux' and platform_machine == 'x86_64' | nvidia-cudnn-cu12==8.9.2.26; platform_system == 'Linux' and platform_machine == 'x86_64' | nvidia-cublas-cu12==12.1.3.1; platform_system == 'Linux' and platform_machine == 'x86_64' | nvidia-cufft-cu12==11.0.2.54; platform_system == 'Linux' and platform_machine == 'x86_64' | nvidia-curand-cu12==10.3.2.106; platform_system == 'Linux' and platform_machine == 'x86_64' | nvidia-cusolver-cu12==11.4.5.107; platform_system == 'Linux' and platform_machine == 'x86_64' | nvidia-cusparse-cu12==12.1.0.106; platform_system == 'Linux' and platform_machine == 'x86_64' | nvidia-nccl-cu12==2.18.1; platform_system == 'Linux' and platform_machine == 'x86_64' | nvidia-nvtx-cu12==12.1.105; platform_system == 'Linux' and platform_machine == 'x86_64' |       PYTORCH_EXTRA_INSTALL_REQUIREMENTS: nvidia-cuda-nvrtc-cu12==12.1.105; platform_system == 'Linux' and platform_machine == 'x86_64' | nvidia-cuda-runtime-cu12==12.1.105; platform_system == 'Linux' and platform_machine == 'x86_64' | nvidia-cuda-cupti-cu12==12.1.105; platform_system == 'Linux' and platform_machine == 'x86_64' | nvidia-cudnn-cu12==8.9.2.26; platform_system == 'Linux' and platform_machine == 'x86_64' | nvidia-cublas-cu12==12.1.3.1; platform_system == 'Linux' and platform_machine == 'x86_64' | nvidia-cufft-cu12==11.0.2.54; platform_system == 'Linux' and platform_machine == 'x86_64' | nvidia-curand-cu12==10.3.2.106; platform_system == 'Linux' and platform_machine == 'x86_64' | nvidia-cusolver-cu12==11.4.5.107; platform_system == 'Linux' and platform_machine == 'x86_64' | nvidia-cusparse-cu12==12.1.0.106; platform_system == 'Linux' and platform_machine == 'x86_64' | nvidia-nccl-cu12==2.18.1; platform_system == 'Linux' and platform_machine == 'x86_64' | nvidia-nvtx-cu12==12.1.105; platform_system == 'Linux' and platform_machine == 'x86_64' | triton==2.1.0; platform_system == 'Linux' and platform_machine == 'x86_64' | ||||||
|     secrets: |     secrets: | ||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|   manywheel-py3_9-cuda12_1-with-pypi-cudnn-test:  # Testing |   manywheel-py3_9-cuda12_1-with-pypi-cudnn-test:  # Testing | ||||||
| @ -771,7 +769,7 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|  |  | ||||||
|   manywheel-py3_9-cuda12_1-build: |   manywheel-py3_9-cuda12_1-build: | ||||||
| @ -831,7 +829,7 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|  |  | ||||||
|   manywheel-py3_9-rocm5_5-build: |   manywheel-py3_9-rocm5_5-build: | ||||||
| @ -880,7 +878,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -892,7 +889,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -906,7 +903,7 @@ jobs: | |||||||
|         run: | |         run: | | ||||||
|           echo "GPU_FLAG=--device=/dev/mem --device=/dev/kfd --device=/dev/dri --group-add video --group-add daemon" >> "${GITHUB_ENV}" |           echo "GPU_FLAG=--device=/dev/mem --device=/dev/kfd --device=/dev/dri --group-add video --group-add daemon" >> "${GITHUB_ENV}" | ||||||
|       - name: Pull Docker image |       - name: Pull Docker image | ||||||
|         uses: pytorch/test-infra/.github/actions/pull-docker-image@main |         uses: pytorch/test-infra/.github/actions/pull-docker-image@release/2.1 | ||||||
|         with: |         with: | ||||||
|           docker-image: pytorch/manylinux-builder:rocm5.5 |           docker-image: pytorch/manylinux-builder:rocm5.5 | ||||||
|       - name: Test Pytorch binary |       - name: Test Pytorch binary | ||||||
| @ -932,7 +929,7 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|  |  | ||||||
|   manywheel-py3_9-rocm5_6-build: |   manywheel-py3_9-rocm5_6-build: | ||||||
| @ -981,7 +978,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -993,7 +989,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -1007,7 +1003,7 @@ jobs: | |||||||
|         run: | |         run: | | ||||||
|           echo "GPU_FLAG=--device=/dev/mem --device=/dev/kfd --device=/dev/dri --group-add video --group-add daemon" >> "${GITHUB_ENV}" |           echo "GPU_FLAG=--device=/dev/mem --device=/dev/kfd --device=/dev/dri --group-add video --group-add daemon" >> "${GITHUB_ENV}" | ||||||
|       - name: Pull Docker image |       - name: Pull Docker image | ||||||
|         uses: pytorch/test-infra/.github/actions/pull-docker-image@main |         uses: pytorch/test-infra/.github/actions/pull-docker-image@release/2.1 | ||||||
|         with: |         with: | ||||||
|           docker-image: pytorch/manylinux-builder:rocm5.6 |           docker-image: pytorch/manylinux-builder:rocm5.6 | ||||||
|       - name: Test Pytorch binary |       - name: Test Pytorch binary | ||||||
| @ -1033,7 +1029,7 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|  |  | ||||||
|   manywheel-py3_10-cpu-build: |   manywheel-py3_10-cpu-build: | ||||||
| @ -1090,7 +1086,7 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|  |  | ||||||
|   manywheel-py3_10-cpu-cxx11-abi-build: |   manywheel-py3_10-cpu-cxx11-abi-build: | ||||||
| @ -1150,7 +1146,7 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|  |  | ||||||
|   manywheel-py3_10-cuda11_8-build: |   manywheel-py3_10-cuda11_8-build: | ||||||
| @ -1210,7 +1206,7 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|  |  | ||||||
|   manywheel-py3_10-cuda12_1-with-pypi-cudnn-build: |   manywheel-py3_10-cuda12_1-with-pypi-cudnn-build: | ||||||
| @ -1229,7 +1225,7 @@ jobs: | |||||||
|       DESIRED_PYTHON: "3.10" |       DESIRED_PYTHON: "3.10" | ||||||
|       build_name: manywheel-py3_10-cuda12_1-with-pypi-cudnn |       build_name: manywheel-py3_10-cuda12_1-with-pypi-cudnn | ||||||
|       build_environment: linux-binary-manywheel |       build_environment: linux-binary-manywheel | ||||||
|       PYTORCH_EXTRA_INSTALL_REQUIREMENTS: nvidia-cuda-nvrtc-cu12==12.1.105; platform_system == 'Linux' and platform_machine == 'x86_64' | nvidia-cuda-runtime-cu12==12.1.105; platform_system == 'Linux' and platform_machine == 'x86_64' | nvidia-cuda-cupti-cu12==12.1.105; platform_system == 'Linux' and platform_machine == 'x86_64' | nvidia-cudnn-cu12==8.9.2.26; platform_system == 'Linux' and platform_machine == 'x86_64' | nvidia-cublas-cu12==12.1.3.1; platform_system == 'Linux' and platform_machine == 'x86_64' | nvidia-cufft-cu12==11.0.2.54; platform_system == 'Linux' and platform_machine == 'x86_64' | nvidia-curand-cu12==10.3.2.106; platform_system == 'Linux' and platform_machine == 'x86_64' | nvidia-cusolver-cu12==11.4.5.107; platform_system == 'Linux' and platform_machine == 'x86_64' | nvidia-cusparse-cu12==12.1.0.106; platform_system == 'Linux' and platform_machine == 'x86_64' | nvidia-nccl-cu12==2.18.1; platform_system == 'Linux' and platform_machine == 'x86_64' | nvidia-nvtx-cu12==12.1.105; platform_system == 'Linux' and platform_machine == 'x86_64' |       PYTORCH_EXTRA_INSTALL_REQUIREMENTS: nvidia-cuda-nvrtc-cu12==12.1.105; platform_system == 'Linux' and platform_machine == 'x86_64' | nvidia-cuda-runtime-cu12==12.1.105; platform_system == 'Linux' and platform_machine == 'x86_64' | nvidia-cuda-cupti-cu12==12.1.105; platform_system == 'Linux' and platform_machine == 'x86_64' | nvidia-cudnn-cu12==8.9.2.26; platform_system == 'Linux' and platform_machine == 'x86_64' | nvidia-cublas-cu12==12.1.3.1; platform_system == 'Linux' and platform_machine == 'x86_64' | nvidia-cufft-cu12==11.0.2.54; platform_system == 'Linux' and platform_machine == 'x86_64' | nvidia-curand-cu12==10.3.2.106; platform_system == 'Linux' and platform_machine == 'x86_64' | nvidia-cusolver-cu12==11.4.5.107; platform_system == 'Linux' and platform_machine == 'x86_64' | nvidia-cusparse-cu12==12.1.0.106; platform_system == 'Linux' and platform_machine == 'x86_64' | nvidia-nccl-cu12==2.18.1; platform_system == 'Linux' and platform_machine == 'x86_64' | nvidia-nvtx-cu12==12.1.105; platform_system == 'Linux' and platform_machine == 'x86_64' | triton==2.1.0; platform_system == 'Linux' and platform_machine == 'x86_64' | ||||||
|     secrets: |     secrets: | ||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|   manywheel-py3_10-cuda12_1-with-pypi-cudnn-test:  # Testing |   manywheel-py3_10-cuda12_1-with-pypi-cudnn-test:  # Testing | ||||||
| @ -1271,7 +1267,7 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|  |  | ||||||
|   manywheel-py3_10-cuda12_1-build: |   manywheel-py3_10-cuda12_1-build: | ||||||
| @ -1331,7 +1327,7 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|  |  | ||||||
|   manywheel-py3_10-rocm5_5-build: |   manywheel-py3_10-rocm5_5-build: | ||||||
| @ -1380,7 +1376,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -1392,7 +1387,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -1406,7 +1401,7 @@ jobs: | |||||||
|         run: | |         run: | | ||||||
|           echo "GPU_FLAG=--device=/dev/mem --device=/dev/kfd --device=/dev/dri --group-add video --group-add daemon" >> "${GITHUB_ENV}" |           echo "GPU_FLAG=--device=/dev/mem --device=/dev/kfd --device=/dev/dri --group-add video --group-add daemon" >> "${GITHUB_ENV}" | ||||||
|       - name: Pull Docker image |       - name: Pull Docker image | ||||||
|         uses: pytorch/test-infra/.github/actions/pull-docker-image@main |         uses: pytorch/test-infra/.github/actions/pull-docker-image@release/2.1 | ||||||
|         with: |         with: | ||||||
|           docker-image: pytorch/manylinux-builder:rocm5.5 |           docker-image: pytorch/manylinux-builder:rocm5.5 | ||||||
|       - name: Test Pytorch binary |       - name: Test Pytorch binary | ||||||
| @ -1432,7 +1427,7 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|  |  | ||||||
|   manywheel-py3_10-rocm5_6-build: |   manywheel-py3_10-rocm5_6-build: | ||||||
| @ -1481,7 +1476,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -1493,7 +1487,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -1507,7 +1501,7 @@ jobs: | |||||||
|         run: | |         run: | | ||||||
|           echo "GPU_FLAG=--device=/dev/mem --device=/dev/kfd --device=/dev/dri --group-add video --group-add daemon" >> "${GITHUB_ENV}" |           echo "GPU_FLAG=--device=/dev/mem --device=/dev/kfd --device=/dev/dri --group-add video --group-add daemon" >> "${GITHUB_ENV}" | ||||||
|       - name: Pull Docker image |       - name: Pull Docker image | ||||||
|         uses: pytorch/test-infra/.github/actions/pull-docker-image@main |         uses: pytorch/test-infra/.github/actions/pull-docker-image@release/2.1 | ||||||
|         with: |         with: | ||||||
|           docker-image: pytorch/manylinux-builder:rocm5.6 |           docker-image: pytorch/manylinux-builder:rocm5.6 | ||||||
|       - name: Test Pytorch binary |       - name: Test Pytorch binary | ||||||
| @ -1533,7 +1527,7 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|  |  | ||||||
|   manywheel-py3_11-cpu-build: |   manywheel-py3_11-cpu-build: | ||||||
| @ -1590,7 +1584,7 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|  |  | ||||||
|   manywheel-py3_11-cpu-cxx11-abi-build: |   manywheel-py3_11-cpu-cxx11-abi-build: | ||||||
| @ -1650,7 +1644,7 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|  |  | ||||||
|   manywheel-py3_11-cuda11_8-build: |   manywheel-py3_11-cuda11_8-build: | ||||||
| @ -1710,7 +1704,7 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|  |  | ||||||
|   manywheel-py3_11-cuda12_1-with-pypi-cudnn-build: |   manywheel-py3_11-cuda12_1-with-pypi-cudnn-build: | ||||||
| @ -1729,7 +1723,7 @@ jobs: | |||||||
|       DESIRED_PYTHON: "3.11" |       DESIRED_PYTHON: "3.11" | ||||||
|       build_name: manywheel-py3_11-cuda12_1-with-pypi-cudnn |       build_name: manywheel-py3_11-cuda12_1-with-pypi-cudnn | ||||||
|       build_environment: linux-binary-manywheel |       build_environment: linux-binary-manywheel | ||||||
|       PYTORCH_EXTRA_INSTALL_REQUIREMENTS: nvidia-cuda-nvrtc-cu12==12.1.105; platform_system == 'Linux' and platform_machine == 'x86_64' | nvidia-cuda-runtime-cu12==12.1.105; platform_system == 'Linux' and platform_machine == 'x86_64' | nvidia-cuda-cupti-cu12==12.1.105; platform_system == 'Linux' and platform_machine == 'x86_64' | nvidia-cudnn-cu12==8.9.2.26; platform_system == 'Linux' and platform_machine == 'x86_64' | nvidia-cublas-cu12==12.1.3.1; platform_system == 'Linux' and platform_machine == 'x86_64' | nvidia-cufft-cu12==11.0.2.54; platform_system == 'Linux' and platform_machine == 'x86_64' | nvidia-curand-cu12==10.3.2.106; platform_system == 'Linux' and platform_machine == 'x86_64' | nvidia-cusolver-cu12==11.4.5.107; platform_system == 'Linux' and platform_machine == 'x86_64' | nvidia-cusparse-cu12==12.1.0.106; platform_system == 'Linux' and platform_machine == 'x86_64' | nvidia-nccl-cu12==2.18.1; platform_system == 'Linux' and platform_machine == 'x86_64' | nvidia-nvtx-cu12==12.1.105; platform_system == 'Linux' and platform_machine == 'x86_64' |       PYTORCH_EXTRA_INSTALL_REQUIREMENTS: nvidia-cuda-nvrtc-cu12==12.1.105; platform_system == 'Linux' and platform_machine == 'x86_64' | nvidia-cuda-runtime-cu12==12.1.105; platform_system == 'Linux' and platform_machine == 'x86_64' | nvidia-cuda-cupti-cu12==12.1.105; platform_system == 'Linux' and platform_machine == 'x86_64' | nvidia-cudnn-cu12==8.9.2.26; platform_system == 'Linux' and platform_machine == 'x86_64' | nvidia-cublas-cu12==12.1.3.1; platform_system == 'Linux' and platform_machine == 'x86_64' | nvidia-cufft-cu12==11.0.2.54; platform_system == 'Linux' and platform_machine == 'x86_64' | nvidia-curand-cu12==10.3.2.106; platform_system == 'Linux' and platform_machine == 'x86_64' | nvidia-cusolver-cu12==11.4.5.107; platform_system == 'Linux' and platform_machine == 'x86_64' | nvidia-cusparse-cu12==12.1.0.106; platform_system == 'Linux' and platform_machine == 'x86_64' | nvidia-nccl-cu12==2.18.1; platform_system == 'Linux' and platform_machine == 'x86_64' | nvidia-nvtx-cu12==12.1.105; platform_system == 'Linux' and platform_machine == 'x86_64' | triton==2.1.0; platform_system == 'Linux' and platform_machine == 'x86_64' | ||||||
|     secrets: |     secrets: | ||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|   manywheel-py3_11-cuda12_1-with-pypi-cudnn-test:  # Testing |   manywheel-py3_11-cuda12_1-with-pypi-cudnn-test:  # Testing | ||||||
| @ -1771,7 +1765,7 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|  |  | ||||||
|   manywheel-py3_11-cuda12_1-build: |   manywheel-py3_11-cuda12_1-build: | ||||||
| @ -1831,7 +1825,7 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|  |  | ||||||
|   manywheel-py3_11-rocm5_5-build: |   manywheel-py3_11-rocm5_5-build: | ||||||
| @ -1880,7 +1874,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -1892,7 +1885,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -1906,7 +1899,7 @@ jobs: | |||||||
|         run: | |         run: | | ||||||
|           echo "GPU_FLAG=--device=/dev/mem --device=/dev/kfd --device=/dev/dri --group-add video --group-add daemon" >> "${GITHUB_ENV}" |           echo "GPU_FLAG=--device=/dev/mem --device=/dev/kfd --device=/dev/dri --group-add video --group-add daemon" >> "${GITHUB_ENV}" | ||||||
|       - name: Pull Docker image |       - name: Pull Docker image | ||||||
|         uses: pytorch/test-infra/.github/actions/pull-docker-image@main |         uses: pytorch/test-infra/.github/actions/pull-docker-image@release/2.1 | ||||||
|         with: |         with: | ||||||
|           docker-image: pytorch/manylinux-builder:rocm5.5 |           docker-image: pytorch/manylinux-builder:rocm5.5 | ||||||
|       - name: Test Pytorch binary |       - name: Test Pytorch binary | ||||||
| @ -1932,7 +1925,7 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|  |  | ||||||
|   manywheel-py3_11-rocm5_6-build: |   manywheel-py3_11-rocm5_6-build: | ||||||
| @ -1981,7 +1974,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -1993,7 +1985,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -2007,7 +1999,7 @@ jobs: | |||||||
|         run: | |         run: | | ||||||
|           echo "GPU_FLAG=--device=/dev/mem --device=/dev/kfd --device=/dev/dri --group-add video --group-add daemon" >> "${GITHUB_ENV}" |           echo "GPU_FLAG=--device=/dev/mem --device=/dev/kfd --device=/dev/dri --group-add video --group-add daemon" >> "${GITHUB_ENV}" | ||||||
|       - name: Pull Docker image |       - name: Pull Docker image | ||||||
|         uses: pytorch/test-infra/.github/actions/pull-docker-image@main |         uses: pytorch/test-infra/.github/actions/pull-docker-image@release/2.1 | ||||||
|         with: |         with: | ||||||
|           docker-image: pytorch/manylinux-builder:rocm5.6 |           docker-image: pytorch/manylinux-builder:rocm5.6 | ||||||
|       - name: Test Pytorch binary |       - name: Test Pytorch binary | ||||||
| @ -2033,5 +2025,5 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|  | |||||||
							
								
								
									
										20
									
								
								.github/workflows/generated-macos-arm64-binary-conda-nightly.yml
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										20
									
								
								.github/workflows/generated-macos-arm64-binary-conda-nightly.yml
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -75,7 +75,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -87,7 +86,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -144,7 +143,7 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|   conda-py3_9-cpu-build: |   conda-py3_9-cpu-build: | ||||||
|     if: ${{ github.repository_owner == 'pytorch' }} |     if: ${{ github.repository_owner == 'pytorch' }} | ||||||
| @ -187,7 +186,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -199,7 +197,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -256,7 +254,7 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|   conda-py3_10-cpu-build: |   conda-py3_10-cpu-build: | ||||||
|     if: ${{ github.repository_owner == 'pytorch' }} |     if: ${{ github.repository_owner == 'pytorch' }} | ||||||
| @ -299,7 +297,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -311,7 +308,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -368,7 +365,7 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|   conda-py3_11-cpu-build: |   conda-py3_11-cpu-build: | ||||||
|     if: ${{ github.repository_owner == 'pytorch' }} |     if: ${{ github.repository_owner == 'pytorch' }} | ||||||
| @ -411,7 +408,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -423,7 +419,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -480,5 +476,5 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|  | |||||||
							
								
								
									
										20
									
								
								.github/workflows/generated-macos-arm64-binary-wheel-nightly.yml
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										20
									
								
								.github/workflows/generated-macos-arm64-binary-wheel-nightly.yml
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -75,7 +75,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -87,7 +86,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -144,7 +143,7 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|   wheel-py3_9-cpu-build: |   wheel-py3_9-cpu-build: | ||||||
|     if: ${{ github.repository_owner == 'pytorch' }} |     if: ${{ github.repository_owner == 'pytorch' }} | ||||||
| @ -187,7 +186,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -199,7 +197,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -256,7 +254,7 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|   wheel-py3_10-cpu-build: |   wheel-py3_10-cpu-build: | ||||||
|     if: ${{ github.repository_owner == 'pytorch' }} |     if: ${{ github.repository_owner == 'pytorch' }} | ||||||
| @ -299,7 +297,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -311,7 +308,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -368,7 +365,7 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|   wheel-py3_11-cpu-build: |   wheel-py3_11-cpu-build: | ||||||
|     if: ${{ github.repository_owner == 'pytorch' }} |     if: ${{ github.repository_owner == 'pytorch' }} | ||||||
| @ -411,7 +408,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -423,7 +419,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -480,5 +476,5 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|  | |||||||
							
								
								
									
										20
									
								
								.github/workflows/generated-macos-binary-conda-nightly.yml
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										20
									
								
								.github/workflows/generated-macos-binary-conda-nightly.yml
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -73,7 +73,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -85,7 +84,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -142,7 +141,7 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|   conda-py3_9-cpu-build: |   conda-py3_9-cpu-build: | ||||||
|     if: ${{ github.repository_owner == 'pytorch' }} |     if: ${{ github.repository_owner == 'pytorch' }} | ||||||
| @ -185,7 +184,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -197,7 +195,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -254,7 +252,7 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|   conda-py3_10-cpu-build: |   conda-py3_10-cpu-build: | ||||||
|     if: ${{ github.repository_owner == 'pytorch' }} |     if: ${{ github.repository_owner == 'pytorch' }} | ||||||
| @ -297,7 +295,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -309,7 +306,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -366,7 +363,7 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|   conda-py3_11-cpu-build: |   conda-py3_11-cpu-build: | ||||||
|     if: ${{ github.repository_owner == 'pytorch' }} |     if: ${{ github.repository_owner == 'pytorch' }} | ||||||
| @ -409,7 +406,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -421,7 +417,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -478,5 +474,5 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|  | |||||||
							
								
								
									
										20
									
								
								.github/workflows/generated-macos-binary-libtorch-cxx11-abi-nightly.yml
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										20
									
								
								.github/workflows/generated-macos-binary-libtorch-cxx11-abi-nightly.yml
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -77,7 +77,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -89,7 +88,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -147,7 +146,7 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|   libtorch-cpu-shared-without-deps-cxx11-abi-build: |   libtorch-cpu-shared-without-deps-cxx11-abi-build: | ||||||
|     if: ${{ github.repository_owner == 'pytorch' }} |     if: ${{ github.repository_owner == 'pytorch' }} | ||||||
| @ -194,7 +193,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -206,7 +204,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -264,7 +262,7 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|   libtorch-cpu-static-with-deps-cxx11-abi-build: |   libtorch-cpu-static-with-deps-cxx11-abi-build: | ||||||
|     if: ${{ github.repository_owner == 'pytorch' }} |     if: ${{ github.repository_owner == 'pytorch' }} | ||||||
| @ -311,7 +309,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -323,7 +320,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -381,7 +378,7 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|   libtorch-cpu-static-without-deps-cxx11-abi-build: |   libtorch-cpu-static-without-deps-cxx11-abi-build: | ||||||
|     if: ${{ github.repository_owner == 'pytorch' }} |     if: ${{ github.repository_owner == 'pytorch' }} | ||||||
| @ -428,7 +425,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -440,7 +436,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -498,5 +494,5 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|  | |||||||
							
								
								
									
										20
									
								
								.github/workflows/generated-macos-binary-wheel-nightly.yml
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										20
									
								
								.github/workflows/generated-macos-binary-wheel-nightly.yml
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -73,7 +73,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -85,7 +84,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -142,7 +141,7 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|   wheel-py3_9-cpu-build: |   wheel-py3_9-cpu-build: | ||||||
|     if: ${{ github.repository_owner == 'pytorch' }} |     if: ${{ github.repository_owner == 'pytorch' }} | ||||||
| @ -185,7 +184,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -197,7 +195,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -254,7 +252,7 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|   wheel-py3_10-cpu-build: |   wheel-py3_10-cpu-build: | ||||||
|     if: ${{ github.repository_owner == 'pytorch' }} |     if: ${{ github.repository_owner == 'pytorch' }} | ||||||
| @ -297,7 +295,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -309,7 +306,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -366,7 +363,7 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|   wheel-py3_11-cpu-build: |   wheel-py3_11-cpu-build: | ||||||
|     if: ${{ github.repository_owner == 'pytorch' }} |     if: ${{ github.repository_owner == 'pytorch' }} | ||||||
| @ -409,7 +406,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -421,7 +417,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -478,5 +474,5 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|  | |||||||
							
								
								
									
										96
									
								
								.github/workflows/generated-windows-binary-conda-nightly.yml
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										96
									
								
								.github/workflows/generated-windows-binary-conda-nightly.yml
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -92,7 +92,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -104,7 +103,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -208,7 +207,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -220,7 +218,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -268,7 +266,7 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|   conda-py3_8-cuda11_8-build: |   conda-py3_8-cuda11_8-build: | ||||||
|     if: ${{ github.repository_owner == 'pytorch' }} |     if: ${{ github.repository_owner == 'pytorch' }} | ||||||
| @ -331,7 +329,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -343,7 +340,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -448,7 +445,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -460,7 +456,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -509,7 +505,7 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|   conda-py3_8-cuda12_1-build: |   conda-py3_8-cuda12_1-build: | ||||||
|     if: ${{ github.repository_owner == 'pytorch' }} |     if: ${{ github.repository_owner == 'pytorch' }} | ||||||
| @ -572,7 +568,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -584,7 +579,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -689,7 +684,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -701,7 +695,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -750,7 +744,7 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|   conda-py3_9-cpu-build: |   conda-py3_9-cpu-build: | ||||||
|     if: ${{ github.repository_owner == 'pytorch' }} |     if: ${{ github.repository_owner == 'pytorch' }} | ||||||
| @ -812,7 +806,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -824,7 +817,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -928,7 +921,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -940,7 +932,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -988,7 +980,7 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|   conda-py3_9-cuda11_8-build: |   conda-py3_9-cuda11_8-build: | ||||||
|     if: ${{ github.repository_owner == 'pytorch' }} |     if: ${{ github.repository_owner == 'pytorch' }} | ||||||
| @ -1051,7 +1043,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -1063,7 +1054,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -1168,7 +1159,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -1180,7 +1170,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -1229,7 +1219,7 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|   conda-py3_9-cuda12_1-build: |   conda-py3_9-cuda12_1-build: | ||||||
|     if: ${{ github.repository_owner == 'pytorch' }} |     if: ${{ github.repository_owner == 'pytorch' }} | ||||||
| @ -1292,7 +1282,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -1304,7 +1293,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -1409,7 +1398,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -1421,7 +1409,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -1470,7 +1458,7 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|   conda-py3_10-cpu-build: |   conda-py3_10-cpu-build: | ||||||
|     if: ${{ github.repository_owner == 'pytorch' }} |     if: ${{ github.repository_owner == 'pytorch' }} | ||||||
| @ -1532,7 +1520,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -1544,7 +1531,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -1648,7 +1635,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -1660,7 +1646,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -1708,7 +1694,7 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|   conda-py3_10-cuda11_8-build: |   conda-py3_10-cuda11_8-build: | ||||||
|     if: ${{ github.repository_owner == 'pytorch' }} |     if: ${{ github.repository_owner == 'pytorch' }} | ||||||
| @ -1771,7 +1757,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -1783,7 +1768,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -1888,7 +1873,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -1900,7 +1884,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -1949,7 +1933,7 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|   conda-py3_10-cuda12_1-build: |   conda-py3_10-cuda12_1-build: | ||||||
|     if: ${{ github.repository_owner == 'pytorch' }} |     if: ${{ github.repository_owner == 'pytorch' }} | ||||||
| @ -2012,7 +1996,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -2024,7 +2007,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -2129,7 +2112,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -2141,7 +2123,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -2190,7 +2172,7 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|   conda-py3_11-cpu-build: |   conda-py3_11-cpu-build: | ||||||
|     if: ${{ github.repository_owner == 'pytorch' }} |     if: ${{ github.repository_owner == 'pytorch' }} | ||||||
| @ -2252,7 +2234,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -2264,7 +2245,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -2368,7 +2349,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -2380,7 +2360,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -2428,7 +2408,7 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|   conda-py3_11-cuda11_8-build: |   conda-py3_11-cuda11_8-build: | ||||||
|     if: ${{ github.repository_owner == 'pytorch' }} |     if: ${{ github.repository_owner == 'pytorch' }} | ||||||
| @ -2491,7 +2471,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -2503,7 +2482,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -2608,7 +2587,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -2620,7 +2598,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -2669,7 +2647,7 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|   conda-py3_11-cuda12_1-build: |   conda-py3_11-cuda12_1-build: | ||||||
|     if: ${{ github.repository_owner == 'pytorch' }} |     if: ${{ github.repository_owner == 'pytorch' }} | ||||||
| @ -2732,7 +2710,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -2744,7 +2721,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -2849,7 +2826,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -2861,7 +2837,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -2910,5 +2886,5 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|  | |||||||
							
								
								
									
										6
									
								
								.github/workflows/generated-windows-binary-libtorch-debug-main.yml
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										6
									
								
								.github/workflows/generated-windows-binary-libtorch-debug-main.yml
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -89,7 +89,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -101,7 +100,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -209,7 +208,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -221,7 +219,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
|  | |||||||
							
								
								
									
										96
									
								
								.github/workflows/generated-windows-binary-libtorch-debug-nightly.yml
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										96
									
								
								.github/workflows/generated-windows-binary-libtorch-debug-nightly.yml
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -96,7 +96,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -108,7 +107,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -216,7 +215,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -228,7 +226,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -280,7 +278,7 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|   libtorch-cpu-shared-without-deps-debug-build: |   libtorch-cpu-shared-without-deps-debug-build: | ||||||
|     if: ${{ github.repository_owner == 'pytorch' }} |     if: ${{ github.repository_owner == 'pytorch' }} | ||||||
| @ -346,7 +344,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -358,7 +355,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -466,7 +463,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -478,7 +474,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -530,7 +526,7 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|   libtorch-cpu-static-with-deps-debug-build: |   libtorch-cpu-static-with-deps-debug-build: | ||||||
|     if: ${{ github.repository_owner == 'pytorch' }} |     if: ${{ github.repository_owner == 'pytorch' }} | ||||||
| @ -596,7 +592,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -608,7 +603,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -716,7 +711,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -728,7 +722,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -780,7 +774,7 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|   libtorch-cpu-static-without-deps-debug-build: |   libtorch-cpu-static-without-deps-debug-build: | ||||||
|     if: ${{ github.repository_owner == 'pytorch' }} |     if: ${{ github.repository_owner == 'pytorch' }} | ||||||
| @ -846,7 +840,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -858,7 +851,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -966,7 +959,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -978,7 +970,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -1030,7 +1022,7 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|   libtorch-cuda11_8-shared-with-deps-debug-build: |   libtorch-cuda11_8-shared-with-deps-debug-build: | ||||||
|     if: ${{ github.repository_owner == 'pytorch' }} |     if: ${{ github.repository_owner == 'pytorch' }} | ||||||
| @ -1097,7 +1089,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -1109,7 +1100,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -1218,7 +1209,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -1230,7 +1220,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -1283,7 +1273,7 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|   libtorch-cuda11_8-shared-without-deps-debug-build: |   libtorch-cuda11_8-shared-without-deps-debug-build: | ||||||
|     if: ${{ github.repository_owner == 'pytorch' }} |     if: ${{ github.repository_owner == 'pytorch' }} | ||||||
| @ -1350,7 +1340,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -1362,7 +1351,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -1471,7 +1460,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -1483,7 +1471,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -1536,7 +1524,7 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|   libtorch-cuda11_8-static-with-deps-debug-build: |   libtorch-cuda11_8-static-with-deps-debug-build: | ||||||
|     if: ${{ github.repository_owner == 'pytorch' }} |     if: ${{ github.repository_owner == 'pytorch' }} | ||||||
| @ -1603,7 +1591,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -1615,7 +1602,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -1724,7 +1711,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -1736,7 +1722,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -1789,7 +1775,7 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|   libtorch-cuda11_8-static-without-deps-debug-build: |   libtorch-cuda11_8-static-without-deps-debug-build: | ||||||
|     if: ${{ github.repository_owner == 'pytorch' }} |     if: ${{ github.repository_owner == 'pytorch' }} | ||||||
| @ -1856,7 +1842,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -1868,7 +1853,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -1977,7 +1962,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -1989,7 +1973,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -2042,7 +2026,7 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|   libtorch-cuda12_1-shared-with-deps-debug-build: |   libtorch-cuda12_1-shared-with-deps-debug-build: | ||||||
|     if: ${{ github.repository_owner == 'pytorch' }} |     if: ${{ github.repository_owner == 'pytorch' }} | ||||||
| @ -2109,7 +2093,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -2121,7 +2104,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -2230,7 +2213,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -2242,7 +2224,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -2295,7 +2277,7 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|   libtorch-cuda12_1-shared-without-deps-debug-build: |   libtorch-cuda12_1-shared-without-deps-debug-build: | ||||||
|     if: ${{ github.repository_owner == 'pytorch' }} |     if: ${{ github.repository_owner == 'pytorch' }} | ||||||
| @ -2362,7 +2344,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -2374,7 +2355,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -2483,7 +2464,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -2495,7 +2475,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -2548,7 +2528,7 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|   libtorch-cuda12_1-static-with-deps-debug-build: |   libtorch-cuda12_1-static-with-deps-debug-build: | ||||||
|     if: ${{ github.repository_owner == 'pytorch' }} |     if: ${{ github.repository_owner == 'pytorch' }} | ||||||
| @ -2615,7 +2595,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -2627,7 +2606,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -2736,7 +2715,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -2748,7 +2726,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -2801,7 +2779,7 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|   libtorch-cuda12_1-static-without-deps-debug-build: |   libtorch-cuda12_1-static-without-deps-debug-build: | ||||||
|     if: ${{ github.repository_owner == 'pytorch' }} |     if: ${{ github.repository_owner == 'pytorch' }} | ||||||
| @ -2868,7 +2846,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -2880,7 +2857,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -2989,7 +2966,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -3001,7 +2977,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -3054,5 +3030,5 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|  | |||||||
							
								
								
									
										6
									
								
								.github/workflows/generated-windows-binary-libtorch-release-main.yml
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										6
									
								
								.github/workflows/generated-windows-binary-libtorch-release-main.yml
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -89,7 +89,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -101,7 +100,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -209,7 +208,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -221,7 +219,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
|  | |||||||
							
								
								
									
										96
									
								
								.github/workflows/generated-windows-binary-libtorch-release-nightly.yml
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										96
									
								
								.github/workflows/generated-windows-binary-libtorch-release-nightly.yml
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -96,7 +96,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -108,7 +107,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -216,7 +215,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -228,7 +226,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -280,7 +278,7 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|   libtorch-cpu-shared-without-deps-release-build: |   libtorch-cpu-shared-without-deps-release-build: | ||||||
|     if: ${{ github.repository_owner == 'pytorch' }} |     if: ${{ github.repository_owner == 'pytorch' }} | ||||||
| @ -346,7 +344,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -358,7 +355,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -466,7 +463,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -478,7 +474,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -530,7 +526,7 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|   libtorch-cpu-static-with-deps-release-build: |   libtorch-cpu-static-with-deps-release-build: | ||||||
|     if: ${{ github.repository_owner == 'pytorch' }} |     if: ${{ github.repository_owner == 'pytorch' }} | ||||||
| @ -596,7 +592,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -608,7 +603,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -716,7 +711,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -728,7 +722,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -780,7 +774,7 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|   libtorch-cpu-static-without-deps-release-build: |   libtorch-cpu-static-without-deps-release-build: | ||||||
|     if: ${{ github.repository_owner == 'pytorch' }} |     if: ${{ github.repository_owner == 'pytorch' }} | ||||||
| @ -846,7 +840,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -858,7 +851,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -966,7 +959,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -978,7 +970,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -1030,7 +1022,7 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|   libtorch-cuda11_8-shared-with-deps-release-build: |   libtorch-cuda11_8-shared-with-deps-release-build: | ||||||
|     if: ${{ github.repository_owner == 'pytorch' }} |     if: ${{ github.repository_owner == 'pytorch' }} | ||||||
| @ -1097,7 +1089,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -1109,7 +1100,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -1218,7 +1209,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -1230,7 +1220,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -1283,7 +1273,7 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|   libtorch-cuda11_8-shared-without-deps-release-build: |   libtorch-cuda11_8-shared-without-deps-release-build: | ||||||
|     if: ${{ github.repository_owner == 'pytorch' }} |     if: ${{ github.repository_owner == 'pytorch' }} | ||||||
| @ -1350,7 +1340,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -1362,7 +1351,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -1471,7 +1460,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -1483,7 +1471,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -1536,7 +1524,7 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|   libtorch-cuda11_8-static-with-deps-release-build: |   libtorch-cuda11_8-static-with-deps-release-build: | ||||||
|     if: ${{ github.repository_owner == 'pytorch' }} |     if: ${{ github.repository_owner == 'pytorch' }} | ||||||
| @ -1603,7 +1591,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -1615,7 +1602,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -1724,7 +1711,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -1736,7 +1722,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -1789,7 +1775,7 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|   libtorch-cuda11_8-static-without-deps-release-build: |   libtorch-cuda11_8-static-without-deps-release-build: | ||||||
|     if: ${{ github.repository_owner == 'pytorch' }} |     if: ${{ github.repository_owner == 'pytorch' }} | ||||||
| @ -1856,7 +1842,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -1868,7 +1853,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -1977,7 +1962,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -1989,7 +1973,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -2042,7 +2026,7 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|   libtorch-cuda12_1-shared-with-deps-release-build: |   libtorch-cuda12_1-shared-with-deps-release-build: | ||||||
|     if: ${{ github.repository_owner == 'pytorch' }} |     if: ${{ github.repository_owner == 'pytorch' }} | ||||||
| @ -2109,7 +2093,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -2121,7 +2104,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -2230,7 +2213,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -2242,7 +2224,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -2295,7 +2277,7 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|   libtorch-cuda12_1-shared-without-deps-release-build: |   libtorch-cuda12_1-shared-without-deps-release-build: | ||||||
|     if: ${{ github.repository_owner == 'pytorch' }} |     if: ${{ github.repository_owner == 'pytorch' }} | ||||||
| @ -2362,7 +2344,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -2374,7 +2355,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -2483,7 +2464,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -2495,7 +2475,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -2548,7 +2528,7 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|   libtorch-cuda12_1-static-with-deps-release-build: |   libtorch-cuda12_1-static-with-deps-release-build: | ||||||
|     if: ${{ github.repository_owner == 'pytorch' }} |     if: ${{ github.repository_owner == 'pytorch' }} | ||||||
| @ -2615,7 +2595,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -2627,7 +2606,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -2736,7 +2715,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -2748,7 +2726,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -2801,7 +2779,7 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|   libtorch-cuda12_1-static-without-deps-release-build: |   libtorch-cuda12_1-static-without-deps-release-build: | ||||||
|     if: ${{ github.repository_owner == 'pytorch' }} |     if: ${{ github.repository_owner == 'pytorch' }} | ||||||
| @ -2868,7 +2846,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -2880,7 +2857,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -2989,7 +2966,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -3001,7 +2977,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -3054,5 +3030,5 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|  | |||||||
							
								
								
									
										96
									
								
								.github/workflows/generated-windows-binary-wheel-nightly.yml
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										96
									
								
								.github/workflows/generated-windows-binary-wheel-nightly.yml
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -92,7 +92,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -104,7 +103,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -208,7 +207,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -220,7 +218,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -268,7 +266,7 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|   wheel-py3_8-cuda11_8-build: |   wheel-py3_8-cuda11_8-build: | ||||||
|     if: ${{ github.repository_owner == 'pytorch' }} |     if: ${{ github.repository_owner == 'pytorch' }} | ||||||
| @ -331,7 +329,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -343,7 +340,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -448,7 +445,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -460,7 +456,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -509,7 +505,7 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|   wheel-py3_8-cuda12_1-build: |   wheel-py3_8-cuda12_1-build: | ||||||
|     if: ${{ github.repository_owner == 'pytorch' }} |     if: ${{ github.repository_owner == 'pytorch' }} | ||||||
| @ -572,7 +568,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -584,7 +579,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -689,7 +684,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -701,7 +695,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -750,7 +744,7 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|   wheel-py3_9-cpu-build: |   wheel-py3_9-cpu-build: | ||||||
|     if: ${{ github.repository_owner == 'pytorch' }} |     if: ${{ github.repository_owner == 'pytorch' }} | ||||||
| @ -812,7 +806,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -824,7 +817,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -928,7 +921,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -940,7 +932,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -988,7 +980,7 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|   wheel-py3_9-cuda11_8-build: |   wheel-py3_9-cuda11_8-build: | ||||||
|     if: ${{ github.repository_owner == 'pytorch' }} |     if: ${{ github.repository_owner == 'pytorch' }} | ||||||
| @ -1051,7 +1043,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -1063,7 +1054,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -1168,7 +1159,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -1180,7 +1170,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -1229,7 +1219,7 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|   wheel-py3_9-cuda12_1-build: |   wheel-py3_9-cuda12_1-build: | ||||||
|     if: ${{ github.repository_owner == 'pytorch' }} |     if: ${{ github.repository_owner == 'pytorch' }} | ||||||
| @ -1292,7 +1282,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -1304,7 +1293,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -1409,7 +1398,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -1421,7 +1409,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -1470,7 +1458,7 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|   wheel-py3_10-cpu-build: |   wheel-py3_10-cpu-build: | ||||||
|     if: ${{ github.repository_owner == 'pytorch' }} |     if: ${{ github.repository_owner == 'pytorch' }} | ||||||
| @ -1532,7 +1520,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -1544,7 +1531,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -1648,7 +1635,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -1660,7 +1646,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -1708,7 +1694,7 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|   wheel-py3_10-cuda11_8-build: |   wheel-py3_10-cuda11_8-build: | ||||||
|     if: ${{ github.repository_owner == 'pytorch' }} |     if: ${{ github.repository_owner == 'pytorch' }} | ||||||
| @ -1771,7 +1757,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -1783,7 +1768,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -1888,7 +1873,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -1900,7 +1884,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -1949,7 +1933,7 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|   wheel-py3_10-cuda12_1-build: |   wheel-py3_10-cuda12_1-build: | ||||||
|     if: ${{ github.repository_owner == 'pytorch' }} |     if: ${{ github.repository_owner == 'pytorch' }} | ||||||
| @ -2012,7 +1996,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -2024,7 +2007,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -2129,7 +2112,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -2141,7 +2123,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -2190,7 +2172,7 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|   wheel-py3_11-cpu-build: |   wheel-py3_11-cpu-build: | ||||||
|     if: ${{ github.repository_owner == 'pytorch' }} |     if: ${{ github.repository_owner == 'pytorch' }} | ||||||
| @ -2252,7 +2234,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -2264,7 +2245,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -2368,7 +2349,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -2380,7 +2360,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -2428,7 +2408,7 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|   wheel-py3_11-cuda11_8-build: |   wheel-py3_11-cuda11_8-build: | ||||||
|     if: ${{ github.repository_owner == 'pytorch' }} |     if: ${{ github.repository_owner == 'pytorch' }} | ||||||
| @ -2491,7 +2471,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -2503,7 +2482,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -2608,7 +2587,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -2620,7 +2598,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -2669,7 +2647,7 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|   wheel-py3_11-cuda12_1-build: |   wheel-py3_11-cuda12_1-build: | ||||||
|     if: ${{ github.repository_owner == 'pytorch' }} |     if: ${{ github.repository_owner == 'pytorch' }} | ||||||
| @ -2732,7 +2710,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -2744,7 +2721,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -2849,7 +2826,6 @@ jobs: | |||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} |  | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           path: pytorch |           path: pytorch | ||||||
|           quiet-checkout: true |           quiet-checkout: true | ||||||
| @ -2861,7 +2837,7 @@ jobs: | |||||||
|       - name: Checkout pytorch/builder |       - name: Checkout pytorch/builder | ||||||
|         uses: malfet/checkout@silent-checkout |         uses: malfet/checkout@silent-checkout | ||||||
|         with: |         with: | ||||||
|           ref: main |           ref: release/2.1 | ||||||
|           submodules: recursive |           submodules: recursive | ||||||
|           repository: pytorch/builder |           repository: pytorch/builder | ||||||
|           path: builder |           path: builder | ||||||
| @ -2910,5 +2886,5 @@ jobs: | |||||||
|       github-token: ${{ secrets.GITHUB_TOKEN }} |       github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} |       aws-pytorch-uploader-access-key-id: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} | ||||||
|       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} |       aws-pytorch-uploader-secret-access-key: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} | ||||||
|       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} |       conda-pytorchbot-token: ${{ secrets.CONDA_PYTORCHBOT_TOKEN_TEST }} | ||||||
|     uses: ./.github/workflows/_binary-upload.yml |     uses: ./.github/workflows/_binary-upload.yml | ||||||
|  | |||||||
							
								
								
									
										2
									
								
								.github/workflows/lint-bc.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.github/workflows/lint-bc.yml
									
									
									
									
										vendored
									
									
								
							| @ -26,7 +26,7 @@ jobs: | |||||||
|     runs-on: ubuntu-latest |     runs-on: ubuntu-latest | ||||||
|     steps: |     steps: | ||||||
|       - name: Run BC Lint Action |       - name: Run BC Lint Action | ||||||
|         uses: pytorch/test-infra/.github/actions/bc-lint@main |         uses: pytorch/test-infra/.github/actions/bc-lint@release/2.1 | ||||||
|         with: |         with: | ||||||
|           repo: ${{ github.event.pull_request.head.repo.full_name }} |           repo: ${{ github.event.pull_request.head.repo.full_name }} | ||||||
|           base_sha: ${{ github.event.pull_request.base.sha }} |           base_sha: ${{ github.event.pull_request.base.sha }} | ||||||
|  | |||||||
							
								
								
									
										16
									
								
								.github/workflows/lint.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										16
									
								
								.github/workflows/lint.yml
									
									
									
									
										vendored
									
									
								
							| @ -15,7 +15,7 @@ on: | |||||||
| # When any other step fails, it's job will be retried once by retryBot. | # When any other step fails, it's job will be retried once by retryBot. | ||||||
| jobs: | jobs: | ||||||
|   lintrunner: |   lintrunner: | ||||||
|     uses: pytorch/test-infra/.github/workflows/linux_job.yml@main |     uses: pytorch/test-infra/.github/workflows/linux_job.yml@release/2.1 | ||||||
|     with: |     with: | ||||||
|       runner: linux.2xlarge |       runner: linux.2xlarge | ||||||
|       docker-image: pytorch-linux-focal-linter |       docker-image: pytorch-linux-focal-linter | ||||||
| @ -62,7 +62,7 @@ jobs: | |||||||
|         exit $RC |         exit $RC | ||||||
|  |  | ||||||
|   quick-checks: |   quick-checks: | ||||||
|     uses: pytorch/test-infra/.github/workflows/linux_job.yml@main |     uses: pytorch/test-infra/.github/workflows/linux_job.yml@release/2.1 | ||||||
|     with: |     with: | ||||||
|       runner: linux.2xlarge |       runner: linux.2xlarge | ||||||
|       docker-image: pytorch-linux-focal-linter |       docker-image: pytorch-linux-focal-linter | ||||||
| @ -103,7 +103,7 @@ jobs: | |||||||
|     if: github.event_name == 'pull_request' && !contains(github.event.pull_request.labels.*.name, 'skip-pr-sanity-checks') |     if: github.event_name == 'pull_request' && !contains(github.event.pull_request.labels.*.name, 'skip-pr-sanity-checks') | ||||||
|     steps: |     steps: | ||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: pytorch/pytorch/.github/actions/checkout-pytorch@main |         uses: pytorch/pytorch/.github/actions/checkout-pytorch@release/2.1 | ||||||
|         with: |         with: | ||||||
|           submodules: false |           submodules: false | ||||||
|           fetch-depth: -1 |           fetch-depth: -1 | ||||||
| @ -116,7 +116,7 @@ jobs: | |||||||
|           bash .github/scripts/pr-sanity-check.sh |           bash .github/scripts/pr-sanity-check.sh | ||||||
|  |  | ||||||
|   workflow-checks: |   workflow-checks: | ||||||
|     uses: pytorch/test-infra/.github/workflows/linux_job.yml@main |     uses: pytorch/test-infra/.github/workflows/linux_job.yml@release/2.1 | ||||||
|     with: |     with: | ||||||
|       runner: linux.2xlarge |       runner: linux.2xlarge | ||||||
|       docker-image: pytorch-linux-focal-linter |       docker-image: pytorch-linux-focal-linter | ||||||
| @ -151,7 +151,7 @@ jobs: | |||||||
|         exit $RC |         exit $RC | ||||||
|  |  | ||||||
|   toc: |   toc: | ||||||
|     uses: pytorch/test-infra/.github/workflows/linux_job.yml@main |     uses: pytorch/test-infra/.github/workflows/linux_job.yml@release/2.1 | ||||||
|     with: |     with: | ||||||
|       runner: linux.2xlarge |       runner: linux.2xlarge | ||||||
|       docker-image: pytorch-linux-focal-linter |       docker-image: pytorch-linux-focal-linter | ||||||
| @ -189,7 +189,7 @@ jobs: | |||||||
|   test-tools: |   test-tools: | ||||||
|     name: Test tools |     name: Test tools | ||||||
|     if: ${{ github.repository == 'pytorch/pytorch' }} |     if: ${{ github.repository == 'pytorch/pytorch' }} | ||||||
|     uses: pytorch/test-infra/.github/workflows/linux_job.yml@main |     uses: pytorch/test-infra/.github/workflows/linux_job.yml@release/2.1 | ||||||
|     with: |     with: | ||||||
|       runner: linux.2xlarge |       runner: linux.2xlarge | ||||||
|       docker-image: pytorch-linux-focal-linter |       docker-image: pytorch-linux-focal-linter | ||||||
| @ -210,7 +210,7 @@ jobs: | |||||||
|     runs-on: linux.20_04.4x |     runs-on: linux.20_04.4x | ||||||
|     steps: |     steps: | ||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: pytorch/pytorch/.github/actions/checkout-pytorch@main |         uses: pytorch/pytorch/.github/actions/checkout-pytorch@release/2.1 | ||||||
|         with: |         with: | ||||||
|           submodules: false |           submodules: false | ||||||
|           fetch-depth: 1 |           fetch-depth: 1 | ||||||
| @ -240,7 +240,7 @@ jobs: | |||||||
|       # [see note: pytorch repo ref] |       # [see note: pytorch repo ref] | ||||||
|       # deep clone (fetch-depth 0) required, to allow us to use git log |       # deep clone (fetch-depth 0) required, to allow us to use git log | ||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: pytorch/pytorch/.github/actions/checkout-pytorch@main |         uses: pytorch/pytorch/.github/actions/checkout-pytorch@release/2.1 | ||||||
|         with: |         with: | ||||||
|           submodules: false |           submodules: false | ||||||
|           fetch-depth: 1 |           fetch-depth: 1 | ||||||
|  | |||||||
| @ -21,7 +21,7 @@ jobs: | |||||||
|     environment: upload-stats |     environment: upload-stats | ||||||
|     steps: |     steps: | ||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: pytorch/pytorch/.github/actions/checkout-pytorch@main |         uses: pytorch/pytorch/.github/actions/checkout-pytorch@release/2.1 | ||||||
|         with: |         with: | ||||||
|           fetch-depth: 1 |           fetch-depth: 1 | ||||||
|           submodules: false |           submodules: false | ||||||
|  | |||||||
							
								
								
									
										46
									
								
								.github/workflows/periodic.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										46
									
								
								.github/workflows/periodic.yml
									
									
									
									
										vendored
									
									
								
							| @ -112,30 +112,38 @@ jobs: | |||||||
|       cuda-version: "11.8" |       cuda-version: "11.8" | ||||||
|       test-matrix: ${{ needs.win-vs2019-cuda11_8-py3-build.outputs.test-matrix }} |       test-matrix: ${{ needs.win-vs2019-cuda11_8-py3-build.outputs.test-matrix }} | ||||||
|  |  | ||||||
|   ios-12-5-1-x86-64-coreml: |   # TODO: Figure out how to migrate this job to M1 runner | ||||||
|     name: ios-12-5-1-x86-64-coreml |   ios-build-test: | ||||||
|  |     name: ios-build-test | ||||||
|     if: github.event_name != 'schedule' || github.event.schedule == '45 0,8,16 * * 1-5' || github.event.schedule == '45 4 * * 0,6' |     if: github.event_name != 'schedule' || github.event.schedule == '45 0,8,16 * * 1-5' || github.event.schedule == '45 4 * * 0,6' | ||||||
|     uses: ./.github/workflows/_ios-build-test.yml |     uses: ./.github/workflows/_ios-build-test.yml | ||||||
|     with: |     with: | ||||||
|       build-environment: ios-12-5-1-x86-64-coreml |       build-environment: ios-build-test | ||||||
|       ios-platform: SIMULATOR |       sync-tag: ios-build-test | ||||||
|       ios-arch: x86_64 |  | ||||||
|       test-matrix: | |       test-matrix: | | ||||||
|         { include: [ |         { include: [ | ||||||
|           { config: "default", shard: 1, num_shards: 1, runner: "macos-12" }, |           { config: "default", | ||||||
|         ]} |             shard: 1, | ||||||
|  |             num_shards: 1, | ||||||
|   ios-12-5-1-arm64-custom-ops: |             runner: "macos-12", | ||||||
|     name: ios-12-5-1-arm64-custom-ops |             ios_platform: "SIMULATOR", | ||||||
|     if: github.event_name != 'schedule' || github.event.schedule == '45 0,8,16 * * 1-5' || github.event.schedule == '45 4 * * 0,6' |             ios_arch: "x86_64", | ||||||
|     uses: ./.github/workflows/_ios-build-test.yml |             use_lite_interpreter: 1, | ||||||
|     with: |             use_metal: 0, | ||||||
|       build-environment: ios-12-5-1-arm64-custom-ops |             use_coreml: 1, | ||||||
|       ios-platform: OS |             use_custom_op_list: "" | ||||||
|       ios-arch: arm64 |           }, | ||||||
|       test-matrix: | |           { config: "default", | ||||||
|         { include: [ |             shard: 1, | ||||||
|           { config: "default", shard: 1, num_shards: 1, runner: "macos-12" }, |             num_shards: 1, | ||||||
|  |             runner: "macos-12", | ||||||
|  |             ios_platform: "OS", | ||||||
|  |             ios_arch: "arm64", | ||||||
|  |             use_lite_interpreter: 1, | ||||||
|  |             use_metal: 1, | ||||||
|  |             use_coreml: 1, | ||||||
|  |             use_custom_op_list: "mobilenetv2.yaml" | ||||||
|  |           } | ||||||
|         ]} |         ]} | ||||||
|  |  | ||||||
|   buck-build-test: |   buck-build-test: | ||||||
|  | |||||||
							
								
								
									
										2
									
								
								.github/workflows/update_pytorch_labels.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.github/workflows/update_pytorch_labels.yml
									
									
									
									
										vendored
									
									
								
							| @ -14,7 +14,7 @@ jobs: | |||||||
|     if: ${{ github.repository == 'pytorch/pytorch' }} |     if: ${{ github.repository == 'pytorch/pytorch' }} | ||||||
|     steps: |     steps: | ||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: pytorch/pytorch/.github/actions/checkout-pytorch@main |         uses: pytorch/pytorch/.github/actions/checkout-pytorch@release/2.1 | ||||||
|         with: |         with: | ||||||
|           fetch-depth: 1 |           fetch-depth: 1 | ||||||
|           submodules: false |           submodules: false | ||||||
|  | |||||||
							
								
								
									
										2
									
								
								.github/workflows/upload-alerts.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.github/workflows/upload-alerts.yml
									
									
									
									
										vendored
									
									
								
							| @ -44,7 +44,7 @@ jobs: | |||||||
|           GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |           GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||||||
|           AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} |           AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} | ||||||
|           AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} |           AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} | ||||||
|         uses: pytorch/test-infra/.github/actions/upload-alerts@main |         uses: pytorch/test-infra/.github/actions/upload-alerts@release/2.1 | ||||||
|         with: |         with: | ||||||
|           alerts: '${{ steps.alert_creation_step.outputs.script-output }}' |           alerts: '${{ steps.alert_creation_step.outputs.script-output }}' | ||||||
|           organization: "pytorch" |           organization: "pytorch" | ||||||
|  | |||||||
							
								
								
									
										2
									
								
								.github/workflows/upload-test-stats.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.github/workflows/upload-test-stats.yml
									
									
									
									
										vendored
									
									
								
							| @ -37,7 +37,7 @@ jobs: | |||||||
|         run: echo "${TRIGGERING_WORKFLOW}" |         run: echo "${TRIGGERING_WORKFLOW}" | ||||||
|  |  | ||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: pytorch/pytorch/.github/actions/checkout-pytorch@main |         uses: pytorch/pytorch/.github/actions/checkout-pytorch@release/2.1 | ||||||
|  |  | ||||||
|       - uses: actions/setup-python@v4 |       - uses: actions/setup-python@v4 | ||||||
|         with: |         with: | ||||||
|  | |||||||
| @ -29,7 +29,7 @@ jobs: | |||||||
|     name: Upload dynamo performance stats for ${{ github.event.workflow_run.id }}, attempt ${{ github.event.workflow_run.run_attempt }} |     name: Upload dynamo performance stats for ${{ github.event.workflow_run.id }}, attempt ${{ github.event.workflow_run.run_attempt }} | ||||||
|     steps: |     steps: | ||||||
|       - name: Checkout PyTorch |       - name: Checkout PyTorch | ||||||
|         uses: pytorch/pytorch/.github/actions/checkout-pytorch@main |         uses: pytorch/pytorch/.github/actions/checkout-pytorch@release/2.1 | ||||||
|         with: |         with: | ||||||
|           submodules: false |           submodules: false | ||||||
|           fetch-depth: 1 |           fetch-depth: 1 | ||||||
|  | |||||||
| @ -73,8 +73,8 @@ ARG TARGETPLATFORM | |||||||
|  |  | ||||||
| # On arm64 we can only install wheel packages. | # On arm64 we can only install wheel packages. | ||||||
| RUN case ${TARGETPLATFORM} in \ | RUN case ${TARGETPLATFORM} in \ | ||||||
|          "linux/arm64")  pip install --extra-index-url https://download.pytorch.org/whl/cpu/ torch torchvision torchaudio torchtext ;; \ |          "linux/arm64")  pip install --extra-index-url https://download.pytorch.org/whl/cpu/ torch torchvision torchaudio ;; \ | ||||||
|          *)              /opt/conda/bin/conda install -c "${INSTALL_CHANNEL}" -c "${CUDA_CHANNEL}" -y "python=${PYTHON_VERSION}" pytorch torchvision torchaudio torchtext "pytorch-cuda=$(echo $CUDA_VERSION | cut -d'.' -f 1-2)"  ;; \ |          *)              /opt/conda/bin/conda install -c "${INSTALL_CHANNEL}" -c "${CUDA_CHANNEL}" -y "python=${PYTHON_VERSION}" pytorch torchvision torchaudio "pytorch-cuda=$(echo $CUDA_VERSION | cut -d'.' -f 1-2)"  ;; \ | ||||||
|     esac && \ |     esac && \ | ||||||
|     /opt/conda/bin/conda clean -ya |     /opt/conda/bin/conda clean -ya | ||||||
| RUN /opt/conda/bin/pip install torchelastic | RUN /opt/conda/bin/pip install torchelastic | ||||||
|  | |||||||
| @ -125,6 +125,7 @@ file(GLOB native_ao_sparse_h | |||||||
|             "native/ao_sparse/quantized/cpu/*.h") |             "native/ao_sparse/quantized/cpu/*.h") | ||||||
| file(GLOB native_quantized_h "native/quantized/*.h" "native/quantized/cpu/*.h" "native/quantized/cudnn/*.h") | file(GLOB native_quantized_h "native/quantized/*.h" "native/quantized/cpu/*.h" "native/quantized/cudnn/*.h") | ||||||
| file(GLOB native_cpu_h "native/cpu/*.h") | file(GLOB native_cpu_h "native/cpu/*.h") | ||||||
|  | file(GLOB native_utils_h "native/utils/*.h") | ||||||
|  |  | ||||||
| file(GLOB native_cuda_cu "native/cuda/*.cu") | file(GLOB native_cuda_cu "native/cuda/*.cu") | ||||||
| file(GLOB native_cuda_cpp "native/cuda/*.cpp") | file(GLOB native_cuda_cpp "native/cuda/*.cpp") | ||||||
| @ -540,7 +541,7 @@ install(FILES "${CMAKE_CURRENT_BINARY_DIR}/cmake-exports/ATenConfig.cmake" | |||||||
|  |  | ||||||
| set(INSTALL_HEADERS ${base_h} ${ATen_CORE_HEADERS}) | set(INSTALL_HEADERS ${base_h} ${ATen_CORE_HEADERS}) | ||||||
| if(NOT INTERN_BUILD_MOBILE) | if(NOT INTERN_BUILD_MOBILE) | ||||||
|   list(APPEND INSTALL_HEADERS ${native_h} ${native_cpu_h} ${native_ao_sparse_h} ${native_quantized_h} ${cuda_h} ${native_cuda_h} ${native_hip_h} ${cudnn_h} ${hip_h} ${mps_h} ${native_mps_h} ${miopen_h}) |   list(APPEND INSTALL_HEADERS ${native_h} ${native_cpu_h} ${native_ao_sparse_h} ${native_quantized_h} ${cuda_h} ${native_cuda_h} ${native_hip_h} ${cudnn_h} ${hip_h} ${mps_h} ${native_mps_h} ${native_utils_h} ${miopen_h}) | ||||||
|   # Metal |   # Metal | ||||||
|   if(USE_PYTORCH_METAL_EXPORT) |   if(USE_PYTORCH_METAL_EXPORT) | ||||||
|     # Add files needed from exporting metal models(optimized_for_mobile) |     # Add files needed from exporting metal models(optimized_for_mobile) | ||||||
|  | |||||||
| @ -371,6 +371,22 @@ inline void deprecated_AT_DISPATCH_ALL_TYPES_AND_HALF_AND_COMPLEX() {} | |||||||
|       AT_DISPATCH_CASE_FLOATING_AND_COMPLEX_TYPES_AND3(     \ |       AT_DISPATCH_CASE_FLOATING_AND_COMPLEX_TYPES_AND3(     \ | ||||||
|           SCALARTYPE1, SCALARTYPE2, SCALARTYPE3, __VA_ARGS__)) |           SCALARTYPE1, SCALARTYPE2, SCALARTYPE3, __VA_ARGS__)) | ||||||
|  |  | ||||||
|  | #define AT_DISPATCH_CASE_FLOATING_AND_COMPLEX_TYPES_AND4(    \ | ||||||
|  |     SCALARTYPE1, SCALARTYPE2, SCALARTYPE3, SCALARTYPE4, ...) \ | ||||||
|  |   AT_DISPATCH_CASE_FLOATING_AND_COMPLEX_TYPES(__VA_ARGS__)   \ | ||||||
|  |   AT_DISPATCH_CASE(SCALARTYPE1, __VA_ARGS__)                 \ | ||||||
|  |   AT_DISPATCH_CASE(SCALARTYPE2, __VA_ARGS__)                 \ | ||||||
|  |   AT_DISPATCH_CASE(SCALARTYPE3, __VA_ARGS__)                 \ | ||||||
|  |   AT_DISPATCH_CASE(SCALARTYPE4, __VA_ARGS__) | ||||||
|  |  | ||||||
|  | #define AT_DISPATCH_FLOATING_AND_COMPLEX_TYPES_AND4(                     \ | ||||||
|  |     SCALARTYPE1, SCALARTYPE2, SCALARTYPE3, SCALARTYPE4, TYPE, NAME, ...) \ | ||||||
|  |   AT_DISPATCH_SWITCH(                                                    \ | ||||||
|  |       TYPE,                                                              \ | ||||||
|  |       NAME,                                                              \ | ||||||
|  |       AT_DISPATCH_CASE_FLOATING_AND_COMPLEX_TYPES_AND4(                  \ | ||||||
|  |           SCALARTYPE1, SCALARTYPE2, SCALARTYPE3, SCALARTYPE4, __VA_ARGS__)) | ||||||
|  |  | ||||||
| #define AT_DISPATCH_CASE_INTEGRAL_TYPES(...)          \ | #define AT_DISPATCH_CASE_INTEGRAL_TYPES(...)          \ | ||||||
|   AT_DISPATCH_CASE(at::ScalarType::Byte, __VA_ARGS__) \ |   AT_DISPATCH_CASE(at::ScalarType::Byte, __VA_ARGS__) \ | ||||||
|   AT_DISPATCH_CASE(at::ScalarType::Char, __VA_ARGS__) \ |   AT_DISPATCH_CASE(at::ScalarType::Char, __VA_ARGS__) \ | ||||||
|  | |||||||
| @ -389,8 +389,9 @@ static inline bool mkldnn_conv_use_channels_last(const at::Tensor& input, const | |||||||
|       (input_memory_format  == at::MemoryFormat::ChannelsLast) || |       (input_memory_format  == at::MemoryFormat::ChannelsLast) || | ||||||
|       (weight_memory_format == at::MemoryFormat::ChannelsLast); |       (weight_memory_format == at::MemoryFormat::ChannelsLast); | ||||||
|  |  | ||||||
|   // TODO: add channels last 3d support |   bool can_use_mkldnn_channels_last_3d = | ||||||
|   bool can_use_mkldnn_channels_last_3d = false; |       (input_memory_format  == at::MemoryFormat::ChannelsLast3d) || | ||||||
|  |       (weight_memory_format == at::MemoryFormat::ChannelsLast3d); | ||||||
|  |  | ||||||
|   return can_use_mkldnn_channels_last_2d || can_use_mkldnn_channels_last_3d; |   return can_use_mkldnn_channels_last_2d || can_use_mkldnn_channels_last_3d; | ||||||
| } | } | ||||||
|  | |||||||
| @ -508,9 +508,6 @@ struct ConvParams { | |||||||
|     if (transposed && is_output_padding_big()) { |     if (transposed && is_output_padding_big()) { | ||||||
|       return false; |       return false; | ||||||
|     } |     } | ||||||
|     if (transposed && groups > 1 && at::symint::size<T>(input, 1) == groups) { |  | ||||||
|       return false; |  | ||||||
|     } |  | ||||||
|     if (input.device().is_cpu() && input.scalar_type() == kBFloat16 && mkldnn_bf16_device_check()) { |     if (input.device().is_cpu() && input.scalar_type() == kBFloat16 && mkldnn_bf16_device_check()) { | ||||||
|       return true; |       return true; | ||||||
|     } |     } | ||||||
|  | |||||||
| @ -253,7 +253,9 @@ static Tensor & copy_impl(Tensor & self, const Tensor & src, bool non_blocking) | |||||||
|       self.storage_offset() == src.storage_offset() && |       self.storage_offset() == src.storage_offset() && | ||||||
|       self.strides().equals(src.strides()) && |       self.strides().equals(src.strides()) && | ||||||
|       self.sizes().equals(src.sizes()) && |       self.sizes().equals(src.sizes()) && | ||||||
|       self.scalar_type() == src.scalar_type() |       self.scalar_type() == src.scalar_type() && | ||||||
|  |       self.is_conj() == src.is_conj() && | ||||||
|  |       self.is_neg() == src.is_neg() | ||||||
|     ); |     ); | ||||||
|   if (is_same_data) { |   if (is_same_data) { | ||||||
|     return self; |     return self; | ||||||
|  | |||||||
| @ -727,7 +727,7 @@ Tensor _mkldnn_convolution_transpose( | |||||||
|  |  | ||||||
|   if (bias.defined()) { |   if (bias.defined()) { | ||||||
|     const ideep::tensor b = itensor_from_tensor(bias); |     const ideep::tensor b = itensor_from_tensor(bias); | ||||||
|     ideep::convolution_transpose_forward::compute( |     ideep::convolution_transpose_forward::compute_v3( | ||||||
|         x, |         x, | ||||||
|         w, |         w, | ||||||
|         b, |         b, | ||||||
| @ -738,9 +738,10 @@ Tensor _mkldnn_convolution_transpose( | |||||||
|         padding_r(padding_expanded, output_padding_expanded), |         padding_r(padding_expanded, output_padding_expanded), | ||||||
|         dilation.vec(), |         dilation.vec(), | ||||||
|         groups, |         groups, | ||||||
|  |         use_channels_last, | ||||||
|         op_attr); |         op_attr); | ||||||
|   } else { |   } else { | ||||||
|     ideep::convolution_transpose_forward::compute( |     ideep::convolution_transpose_forward::compute_v3( | ||||||
|         x, |         x, | ||||||
|         w, |         w, | ||||||
|         output_sizes, |         output_sizes, | ||||||
| @ -750,6 +751,7 @@ Tensor _mkldnn_convolution_transpose( | |||||||
|         padding_r(padding_expanded, output_padding_expanded), |         padding_r(padding_expanded, output_padding_expanded), | ||||||
|         dilation.vec(), |         dilation.vec(), | ||||||
|         groups, |         groups, | ||||||
|  |         use_channels_last, | ||||||
|         op_attr); |         op_attr); | ||||||
|   } |   } | ||||||
|   if (input.is_mkldnn()) { |   if (input.is_mkldnn()) { | ||||||
| @ -988,7 +990,7 @@ Tensor mkldnn_convolution_transpose_backward_input( | |||||||
|     grad_input.resize_(input_size, memory_format); |     grad_input.resize_(input_size, memory_format); | ||||||
|     grad_x = itensor_from_tensor(grad_input); |     grad_x = itensor_from_tensor(grad_input); | ||||||
|   } |   } | ||||||
|   ideep::convolution_transpose_backward_data::compute( |   ideep::convolution_transpose_backward_data::compute_v3( | ||||||
|       grad_y, |       grad_y, | ||||||
|       w, |       w, | ||||||
|       input_size.vec(), |       input_size.vec(), | ||||||
| @ -997,7 +999,8 @@ Tensor mkldnn_convolution_transpose_backward_input( | |||||||
|       padding.vec(), |       padding.vec(), | ||||||
|       padding_r(padding, output_padding), |       padding_r(padding, output_padding), | ||||||
|       dilation.vec(), |       dilation.vec(), | ||||||
|       groups); |       groups, | ||||||
|  |       is_channels_last); | ||||||
|  |  | ||||||
|   if (grad_output.is_mkldnn()) { |   if (grad_output.is_mkldnn()) { | ||||||
|     return MKLDNNTensor(grad_x, grad_output.options()); |     return MKLDNNTensor(grad_x, grad_output.options()); | ||||||
| @ -1024,7 +1027,7 @@ std::tuple<Tensor,Tensor> mkldnn_convolution_transpose_backward_weights( | |||||||
|  |  | ||||||
|   ideep::tensor grad_w, grad_b; |   ideep::tensor grad_w, grad_b; | ||||||
|   if (bias_defined) { |   if (bias_defined) { | ||||||
|     ideep::convolution_transpose_backward_weights::compute( |     ideep::convolution_transpose_backward_weights::compute_v3( | ||||||
|         x, |         x, | ||||||
|         grad_y, |         grad_y, | ||||||
|         weight_size.vec(), |         weight_size.vec(), | ||||||
| @ -1034,9 +1037,10 @@ std::tuple<Tensor,Tensor> mkldnn_convolution_transpose_backward_weights( | |||||||
|         padding.vec(), |         padding.vec(), | ||||||
|         padding_r(padding, output_padding), |         padding_r(padding, output_padding), | ||||||
|         dilation.vec(), |         dilation.vec(), | ||||||
|         groups); |         groups, | ||||||
|  |         is_channels_last); | ||||||
|   } else { |   } else { | ||||||
|     ideep::convolution_transpose_backward_weights::compute( |     ideep::convolution_transpose_backward_weights::compute_v3( | ||||||
|         x, |         x, | ||||||
|         grad_y, |         grad_y, | ||||||
|         weight_size.vec(), |         weight_size.vec(), | ||||||
| @ -1045,7 +1049,8 @@ std::tuple<Tensor,Tensor> mkldnn_convolution_transpose_backward_weights( | |||||||
|         padding.vec(), |         padding.vec(), | ||||||
|         padding_r(padding, output_padding), |         padding_r(padding, output_padding), | ||||||
|         dilation.vec(), |         dilation.vec(), | ||||||
|         groups); |         groups, | ||||||
|  |         is_channels_last); | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   if (!is_channels_last) { |   if (!is_channels_last) { | ||||||
| @ -1061,18 +1066,21 @@ std::tuple<Tensor,Tensor> mkldnn_convolution_transpose_backward_weights( | |||||||
| } | } | ||||||
|  |  | ||||||
| std::tuple<Tensor, Tensor, Tensor> mkldnn_convolution_transpose_backward( | std::tuple<Tensor, Tensor, Tensor> mkldnn_convolution_transpose_backward( | ||||||
|     const Tensor& input, const Tensor& grad_output_t, const Tensor& weight, |     const Tensor& input_t, const Tensor& grad_output_t, const Tensor& weight_t, | ||||||
|     IntArrayRef padding, IntArrayRef output_padding, IntArrayRef stride, IntArrayRef dilation, int64_t groups, |     IntArrayRef padding, IntArrayRef output_padding, IntArrayRef stride, IntArrayRef dilation, int64_t groups, | ||||||
|     std::array<bool,3> output_mask) |     std::array<bool,3> output_mask) | ||||||
| { | { | ||||||
|   bool is_channels_last = mkldnn_conv_use_channels_last(input, weight); |   bool is_channels_last = mkldnn_conv_use_channels_last(input_t, weight_t); | ||||||
|   auto memory_format = mkldnn_convolution_memory_format(input.ndimension(), is_channels_last); |   auto memory_format = mkldnn_convolution_memory_format(input_t.ndimension(), is_channels_last); | ||||||
|   Tensor grad_output = grad_output_t.is_mkldnn() ? grad_output_t : grad_output_t.contiguous(memory_format); |   Tensor grad_output = grad_output_t.is_mkldnn() ? grad_output_t : grad_output_t.contiguous(memory_format); | ||||||
|  |   auto input = input_t.is_mkldnn() ? input_t : input_t.contiguous(memory_format); | ||||||
|  |   auto weight = weight_t.is_mkldnn() ? weight_t : weight_t.contiguous(memory_format); | ||||||
|   int64_t dim = input.ndimension() - 2; |   int64_t dim = input.ndimension() - 2; | ||||||
|   const auto padding_expanded = expand_param_if_needed(padding, "padding", dim); |   const auto padding_expanded = expand_param_if_needed(padding, "padding", dim); | ||||||
|   const auto stride_expanded = expand_param_if_needed(stride, "stride", dim); |   const auto stride_expanded = expand_param_if_needed(stride, "stride", dim); | ||||||
|   const auto dilation_expanded = expand_param_if_needed(dilation, "dilation", dim); |   const auto dilation_expanded = expand_param_if_needed(dilation, "dilation", dim); | ||||||
|   const auto output_padding_expanded = expand_param_if_needed(output_padding, "output_padding", dim); |   const auto output_padding_expanded = expand_param_if_needed(output_padding, "output_padding", dim); | ||||||
|  |  | ||||||
|   Tensor grad_input, grad_weight, grad_bias; |   Tensor grad_input, grad_weight, grad_bias; | ||||||
|   if (output_mask[0]) { |   if (output_mask[0]) { | ||||||
|     grad_input = mkldnn_convolution_transpose_backward_input( |     grad_input = mkldnn_convolution_transpose_backward_input( | ||||||
|  | |||||||
| @ -293,7 +293,8 @@ at::Tensor& mps_copy_(at::Tensor& dst, const at::Tensor& src, bool non_blocking) | |||||||
|     dst.resize_as_(src); |     dst.resize_as_(src); | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   TORCH_CHECK(dst.dim() >= src.dim()); |   TORCH_CHECK( | ||||||
|  |       dst.dim() >= src.dim(), "Destination ", dst.sym_sizes(), " doesn't match the broadcast shape ", src.sym_sizes()); | ||||||
|   if (dst.dim() > src.dim()) { |   if (dst.dim() > src.dim()) { | ||||||
|     needs_broadcasting = true; |     needs_broadcasting = true; | ||||||
|   } else { |   } else { | ||||||
|  | |||||||
| @ -16,15 +16,14 @@ namespace at::native { | |||||||
| Scalar _local_scalar_dense_mps(const Tensor& self) { | Scalar _local_scalar_dense_mps(const Tensor& self) { | ||||||
|   Scalar r; |   Scalar r; | ||||||
|  |  | ||||||
|  |   auto output = at::empty_like(self, TensorOptions(kCPU)); | ||||||
|  |   mps::mps_copy_(output, self, false); | ||||||
|   AT_DISPATCH_ALL_TYPES_AND_COMPLEX_AND3(at::ScalarType::Half, |   AT_DISPATCH_ALL_TYPES_AND_COMPLEX_AND3(at::ScalarType::Half, | ||||||
|                                          at::ScalarType::Bool, |                                          at::ScalarType::Bool, | ||||||
|                                          at::ScalarType::BFloat16, |                                          at::ScalarType::BFloat16, | ||||||
|                                          self.scalar_type(), |                                          self.scalar_type(), | ||||||
|                                          "_local_scalar_dense_mps", |                                          "_local_scalar_dense_mps", | ||||||
|                                          [&] { |                                          [&] { | ||||||
|                                            Tensor output = at::empty({1}, TensorOptions(at::CPU(self.scalar_type()))); |  | ||||||
|  |  | ||||||
|                                            mps::mps_copy_(output, self, false); |  | ||||||
|                                            scalar_t value = *output.data_ptr<scalar_t>(); |                                            scalar_t value = *output.data_ptr<scalar_t>(); | ||||||
|                                            r = Scalar(value); |                                            r = Scalar(value); | ||||||
|                                          }); |                                          }); | ||||||
|  | |||||||
| @ -53,9 +53,9 @@ set(CMAKE_RANLIB ranlib CACHE FILEPATH "" FORCE) | |||||||
| set(PKG_CONFIG_EXECUTABLE pkg-config CACHE FILEPATH "" FORCE) | set(PKG_CONFIG_EXECUTABLE pkg-config CACHE FILEPATH "" FORCE) | ||||||
|  |  | ||||||
| # Setup iOS platform unless specified manually with IOS_PLATFORM | # Setup iOS platform unless specified manually with IOS_PLATFORM | ||||||
| if(NOT DEFINED IOS_PLATFORM) | if(NOT IOS_PLATFORM) | ||||||
|     set(IOS_PLATFORM "OS") |     set(IOS_PLATFORM "OS") | ||||||
| endif(NOT DEFINED IOS_PLATFORM) | endif(NOT IOS_PLATFORM) | ||||||
| set(IOS_PLATFORM ${IOS_PLATFORM} CACHE STRING "Type of iOS Platform") | set(IOS_PLATFORM ${IOS_PLATFORM} CACHE STRING "Type of iOS Platform") | ||||||
|  |  | ||||||
| # Check the platform selection and setup for developer root | # Check the platform selection and setup for developer root | ||||||
| @ -118,9 +118,9 @@ set(CMAKE_FIND_LIBRARY_SUFFIXES ".dylib" ".so" ".a") | |||||||
| # (where install_name_tool was hardcoded) and where CMAKE_INSTALL_NAME_TOOL isn't in the cache | # (where install_name_tool was hardcoded) and where CMAKE_INSTALL_NAME_TOOL isn't in the cache | ||||||
| # and still cmake didn't fail in CMakeFindBinUtils.cmake (because it isn't rerun) | # and still cmake didn't fail in CMakeFindBinUtils.cmake (because it isn't rerun) | ||||||
| # hardcode CMAKE_INSTALL_NAME_TOOL here to install_name_tool, so it behaves as it did before, Alex | # hardcode CMAKE_INSTALL_NAME_TOOL here to install_name_tool, so it behaves as it did before, Alex | ||||||
| if(NOT DEFINED CMAKE_INSTALL_NAME_TOOL) | if(NOT CMAKE_INSTALL_NAME_TOOL) | ||||||
|     find_program(CMAKE_INSTALL_NAME_TOOL install_name_tool) |     find_program(CMAKE_INSTALL_NAME_TOOL install_name_tool) | ||||||
| endif(NOT DEFINED CMAKE_INSTALL_NAME_TOOL) | endif(NOT CMAKE_INSTALL_NAME_TOOL) | ||||||
|  |  | ||||||
| # Setup iOS deployment target | # Setup iOS deployment target | ||||||
| set(IOS_DEPLOYMENT_TARGET ${IOS_DEPLOYMENT_TARGET} CACHE STRING "Minimum iOS version") | set(IOS_DEPLOYMENT_TARGET ${IOS_DEPLOYMENT_TARGET} CACHE STRING "Minimum iOS version") | ||||||
| @ -130,17 +130,17 @@ set(IOS_DEPLOYMENT_TARGET ${IOS_DEPLOYMENT_TARGET} CACHE STRING "Minimum iOS ver | |||||||
| exec_program(/usr/bin/xcode-select ARGS -print-path OUTPUT_VARIABLE CMAKE_XCODE_DEVELOPER_DIR) | exec_program(/usr/bin/xcode-select ARGS -print-path OUTPUT_VARIABLE CMAKE_XCODE_DEVELOPER_DIR) | ||||||
| set(XCODE_POST_43_ROOT "${CMAKE_XCODE_DEVELOPER_DIR}/Platforms/${IOS_PLATFORM_LOCATION}/Developer") | set(XCODE_POST_43_ROOT "${CMAKE_XCODE_DEVELOPER_DIR}/Platforms/${IOS_PLATFORM_LOCATION}/Developer") | ||||||
| set(XCODE_PRE_43_ROOT "/Developer/Platforms/${IOS_PLATFORM_LOCATION}/Developer") | set(XCODE_PRE_43_ROOT "/Developer/Platforms/${IOS_PLATFORM_LOCATION}/Developer") | ||||||
| if(NOT DEFINED CMAKE_IOS_DEVELOPER_ROOT) | if(NOT CMAKE_IOS_DEVELOPER_ROOT) | ||||||
|     if(EXISTS ${XCODE_POST_43_ROOT}) |     if(EXISTS ${XCODE_POST_43_ROOT}) | ||||||
|         set(CMAKE_IOS_DEVELOPER_ROOT ${XCODE_POST_43_ROOT}) |         set(CMAKE_IOS_DEVELOPER_ROOT ${XCODE_POST_43_ROOT}) | ||||||
|     elseif(EXISTS ${XCODE_PRE_43_ROOT}) |     elseif(EXISTS ${XCODE_PRE_43_ROOT}) | ||||||
|         set(CMAKE_IOS_DEVELOPER_ROOT ${XCODE_PRE_43_ROOT}) |         set(CMAKE_IOS_DEVELOPER_ROOT ${XCODE_PRE_43_ROOT}) | ||||||
|     endif(EXISTS ${XCODE_POST_43_ROOT}) |     endif(EXISTS ${XCODE_POST_43_ROOT}) | ||||||
| endif(NOT DEFINED CMAKE_IOS_DEVELOPER_ROOT) | endif(NOT CMAKE_IOS_DEVELOPER_ROOT) | ||||||
| set(CMAKE_IOS_DEVELOPER_ROOT ${CMAKE_IOS_DEVELOPER_ROOT} CACHE PATH "Location of iOS Platform") | set(CMAKE_IOS_DEVELOPER_ROOT ${CMAKE_IOS_DEVELOPER_ROOT} CACHE PATH "Location of iOS Platform") | ||||||
|  |  | ||||||
| # Find and use the most recent iOS sdk unless specified manually with CMAKE_IOS_SDK_ROOT | # Find and use the most recent iOS sdk unless specified manually with CMAKE_IOS_SDK_ROOT | ||||||
| if(NOT DEFINED CMAKE_IOS_SDK_ROOT) | if(NOT CMAKE_IOS_SDK_ROOT) | ||||||
|     file(GLOB _CMAKE_IOS_SDKS "${CMAKE_IOS_DEVELOPER_ROOT}/SDKs/*") |     file(GLOB _CMAKE_IOS_SDKS "${CMAKE_IOS_DEVELOPER_ROOT}/SDKs/*") | ||||||
|     if(_CMAKE_IOS_SDKS) |     if(_CMAKE_IOS_SDKS) | ||||||
|         list(SORT _CMAKE_IOS_SDKS) |         list(SORT _CMAKE_IOS_SDKS) | ||||||
| @ -150,7 +150,7 @@ if(NOT DEFINED CMAKE_IOS_SDK_ROOT) | |||||||
|         message(FATAL_ERROR "No iOS SDK's found in default search path ${CMAKE_IOS_DEVELOPER_ROOT}. Manually set CMAKE_IOS_SDK_ROOT or install the iOS SDK.") |         message(FATAL_ERROR "No iOS SDK's found in default search path ${CMAKE_IOS_DEVELOPER_ROOT}. Manually set CMAKE_IOS_SDK_ROOT or install the iOS SDK.") | ||||||
|     endif(_CMAKE_IOS_SDKS) |     endif(_CMAKE_IOS_SDKS) | ||||||
|     message(STATUS "Toolchain using default iOS SDK: ${CMAKE_IOS_SDK_ROOT}") |     message(STATUS "Toolchain using default iOS SDK: ${CMAKE_IOS_SDK_ROOT}") | ||||||
| endif(NOT DEFINED CMAKE_IOS_SDK_ROOT) | endif(NOT CMAKE_IOS_SDK_ROOT) | ||||||
| set(CMAKE_IOS_SDK_ROOT ${CMAKE_IOS_SDK_ROOT} CACHE PATH "Location of the selected iOS SDK") | set(CMAKE_IOS_SDK_ROOT ${CMAKE_IOS_SDK_ROOT} CACHE PATH "Location of the selected iOS SDK") | ||||||
|  |  | ||||||
| # Set the sysroot default to the most recent SDK | # Set the sysroot default to the most recent SDK | ||||||
|  | |||||||
| @ -18,8 +18,8 @@ figures: | |||||||
| 	@$(PYCMD) source/scripts/build_quantization_configs.py | 	@$(PYCMD) source/scripts/build_quantization_configs.py | ||||||
|  |  | ||||||
| onnx: | onnx: | ||||||
| 	@$(PYCMD) source/scripts/onnx/build_onnx_supported_aten_op_csv_table.py | 	@$(PYCMD) source/scripts/onnx/build_onnx_torchscript_supported_aten_op_csv_table.py | ||||||
| 	@$(PYCMD) source/scripts/onnx/build_onnx_diagnostics_rules_md.py $(SOURCEDIR)/generated/onnx_diagnostics_rules | 	@$(PYCMD) source/scripts/onnx/build_onnx_dynamo_diagnostics_rules_md.py $(SOURCEDIR)/generated/onnx_dynamo_diagnostics_rules | ||||||
|  |  | ||||||
| opset: | opset: | ||||||
| 	@$(PYCMD) source/scripts/build_opsets.py | 	@$(PYCMD) source/scripts/build_opsets.py | ||||||
|  | |||||||
							
								
								
									
										
											BIN
										
									
								
								docs/source/_static/img/onnx/onnx_dynamo_mlp_model.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								docs/source/_static/img/onnx/onnx_dynamo_mlp_model.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 36 KiB | 
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 11 KiB | 
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 5.7 KiB | 
| @ -179,6 +179,7 @@ Tensor autograd functions | |||||||
|    torch.Tensor.detach |    torch.Tensor.detach | ||||||
|    torch.Tensor.detach_ |    torch.Tensor.detach_ | ||||||
|    torch.Tensor.register_hook |    torch.Tensor.register_hook | ||||||
|  |    torch.Tensor.register_post_accumulate_grad_hook | ||||||
|    torch.Tensor.retain_grad |    torch.Tensor.retain_grad | ||||||
|  |  | ||||||
| :hidden:`Function` | :hidden:`Function` | ||||||
|  | |||||||
| @ -1,10 +1,551 @@ | |||||||
|  | .. _torch.export: | ||||||
|  |  | ||||||
| torch.export | torch.export | ||||||
| ===================== | ===================== | ||||||
|  |  | ||||||
| .. TODO: Add torch.export() tutorial here. |  | ||||||
|  |  | ||||||
| .. warning:: | .. warning:: | ||||||
|     This feature is a prototype and may have compatibility breaking changes in the future. |     This feature is a prototype under active development and there WILL BE | ||||||
|  |     BREAKING CHANGES in the future. | ||||||
|  |  | ||||||
|  |  | ||||||
|  | Overview | ||||||
|  | -------- | ||||||
|  |  | ||||||
|  | :func:`torch.export.export` takes an arbitrary Python callable (a | ||||||
|  | :class:`torch.nn.Module`, a function or a method) and produces a traced graph | ||||||
|  | representing only the Tensor computation of the function in an Ahead-of-Time | ||||||
|  | (AOT) fashion, which can subsequently be executed with different outputs or | ||||||
|  | serialized. | ||||||
|  |  | ||||||
|  | :: | ||||||
|  |  | ||||||
|  |     import torch | ||||||
|  |     from torch.export import export | ||||||
|  |  | ||||||
|  |     def f(x: torch.Tensor, y: torch.Tensor) -> torch.Tensor: | ||||||
|  |         a = torch.sin(x) | ||||||
|  |         b = torch.cos(y) | ||||||
|  |         return a + b | ||||||
|  |  | ||||||
|  |     example_args = (torch.randn(10, 10), torch.randn(10, 10)) | ||||||
|  |  | ||||||
|  |     exported_program: torch.export.ExportedProgram = export( | ||||||
|  |         f, args=example_args | ||||||
|  |     ) | ||||||
|  |     print(exported_program) | ||||||
|  |  | ||||||
|  | .. code-block:: | ||||||
|  |  | ||||||
|  |     ExportedProgram: | ||||||
|  |         class GraphModule(torch.nn.Module): | ||||||
|  |             def forward(self, arg0_1: f32[10, 10], arg1_1: f32[10, 10]): | ||||||
|  |                 # code: a = torch.sin(x) | ||||||
|  |                 sin: f32[10, 10] = torch.ops.aten.sin.default(arg0_1); | ||||||
|  |  | ||||||
|  |                 # code: b = torch.cos(y) | ||||||
|  |                 cos: f32[10, 10] = torch.ops.aten.cos.default(arg1_1); | ||||||
|  |  | ||||||
|  |                 # code: return a + b | ||||||
|  |                 add: f32[10, 10] = torch.ops.aten.add.Tensor(sin, cos); | ||||||
|  |                 return (add,) | ||||||
|  |  | ||||||
|  |         Graph signature: ExportGraphSignature( | ||||||
|  |             parameters=[], | ||||||
|  |             buffers=[], | ||||||
|  |             user_inputs=['arg0_1', 'arg1_1'], | ||||||
|  |             user_outputs=['add'], | ||||||
|  |             inputs_to_parameters={}, | ||||||
|  |             inputs_to_buffers={}, | ||||||
|  |             buffers_to_mutate={}, | ||||||
|  |             backward_signature=None, | ||||||
|  |             assertion_dep_token=None, | ||||||
|  |         ) | ||||||
|  |         Range constraints: {} | ||||||
|  |         Equality constraints: [] | ||||||
|  |  | ||||||
|  | ``torch.export`` produces a clean intermediate representation (IR) with the | ||||||
|  | following invariants. More specifications about the IR can be found here (coming | ||||||
|  | soon!). | ||||||
|  |  | ||||||
|  | * **Soundness**: It is guaranteed to be a sound representation of the original | ||||||
|  |   program, and maintains the same calling conventions of the original program. | ||||||
|  |  | ||||||
|  | * **Normalized**: There are no Python semantics within the graph. Submodules | ||||||
|  |   from the original programs are inlined to form one fully flattened | ||||||
|  |   computational graph. | ||||||
|  |  | ||||||
|  | * **Defined Operator Set**: The graph produced contains only a small defined | ||||||
|  |   :ref:`Core ATen IR <torch.compiler_ir>` opset and registered custom | ||||||
|  |   operators. | ||||||
|  |  | ||||||
|  | * **Graph properties**: The graph is purely functional, meaning it does not | ||||||
|  |   contain operations with side effects such as mutations or aliasing. It does | ||||||
|  |   not mutate any intermediate values, parameters, or buffers. | ||||||
|  |  | ||||||
|  | * **Metadata**: The graph contains metadata captured during tracing, such as a | ||||||
|  |   stacktrace from user's code. | ||||||
|  |  | ||||||
|  | Under the hood, ``torch.export`` leverages the following latest technologies: | ||||||
|  |  | ||||||
|  | * **TorchDynamo (torch._dynamo)** is an internal API that uses a CPython feature | ||||||
|  |   called the Frame Evaluation API to safely trace PyTorch graphs. This | ||||||
|  |   provides a massively improved graph capturing experience, with much fewer | ||||||
|  |   rewrites needed in order to fully trace the PyTorch code. | ||||||
|  |  | ||||||
|  | * **AOT Autograd** provides a functionalized PyTorch graph and ensures the graph | ||||||
|  |   is decomposed/lowered to the small defined Core ATen operator set. | ||||||
|  |  | ||||||
|  | * **Torch FX (torch.fx)** is the underlying representation of the graph, | ||||||
|  |   allowing flexible Python-based transformations. | ||||||
|  |  | ||||||
|  |  | ||||||
|  | Existing frameworks | ||||||
|  | ^^^^^^^^^^^^^^^^^^^ | ||||||
|  |  | ||||||
|  | :func:`torch.compile` also utilizes the same PT2 stack as ``torch.export``, but | ||||||
|  | is slightly different: | ||||||
|  |  | ||||||
|  | * **JIT vs. AOT**: :func:`torch.compile` is a JIT compiler whereas | ||||||
|  |   which is not intended to be used to produce compiled artifacts outside of | ||||||
|  |   deployment. | ||||||
|  |  | ||||||
|  | * **Partial vs. Full Graph Capture**: When :func:`torch.compile` runs into an | ||||||
|  |   untraceable part of a model, it will "graph break" and fall back to running | ||||||
|  |   the program in the eager Python runtime. In comparison, ``torch.export`` aims | ||||||
|  |   to get a full graph representation of a PyTorch model, so it will error out | ||||||
|  |   when something untraceable is reached. Since ``torch.export`` produces a full | ||||||
|  |   graph disjoint from any Python features or runtime, this graph can then be | ||||||
|  |   saved, loaded, and run in different environments and languages. | ||||||
|  |  | ||||||
|  | * **Usability tradeoff**: Since :func:`torch.compile` is able to fallback to the | ||||||
|  |   Python runtime whenever it reaches something untraceable, it is a lot more | ||||||
|  |   flexible. ``torch.export`` will instead require users to provide more | ||||||
|  |   information or rewrite their code to make it traceable. | ||||||
|  |  | ||||||
|  | Compared to :func:`torch.fx.symbolic_trace`, ``torch.export`` traces using | ||||||
|  | TorchDynamo which operates at the Python bytecode level, giving it the ability | ||||||
|  | to trace arbitrary Python constructs not limited by what Python operator | ||||||
|  | overloading supports. Additionally, ``torch.export`` keeps fine-grained track of | ||||||
|  | tensor metadata, so that conditionals on things like tensor shapes do not | ||||||
|  | fail tracing. In general, ``torch.export`` is expected to work on more user | ||||||
|  | programs, and produce lower-level graphs (at the ``torch.ops.aten`` operator | ||||||
|  | level). Note that users can still use :func:`torch.fx.symbolic_trace` as a | ||||||
|  | preprocessing step before ``torch.export``. | ||||||
|  |  | ||||||
|  | Compared to :func:`torch.jit.script`, ``torch.export`` does not capture Python | ||||||
|  | control flow or data structures, but it supports more Python language features | ||||||
|  | than TorchScript (as it is easier to have comprehensive coverage over Python | ||||||
|  | bytecodes). The resulting graphs are simpler and only have straight line control | ||||||
|  | flow (except for explicit control flow operators). | ||||||
|  |  | ||||||
|  | Compared to :func:`torch.jit.trace`, ``torch.export`` is sound: it is able to | ||||||
|  | trace code that performs integer computation on sizes and records all of the | ||||||
|  | side-conditions necessary to show that a particular trace is valid for other | ||||||
|  | inputs. | ||||||
|  |  | ||||||
|  |  | ||||||
|  | Exporting a PyTorch Model | ||||||
|  | ------------------------- | ||||||
|  |  | ||||||
|  | An Example | ||||||
|  | ^^^^^^^^^^ | ||||||
|  |  | ||||||
|  | The main entrypoint is through :func:`torch.export.export`, which takes a | ||||||
|  | callable (:class:`torch.nn.Module`, function, or method) and sample inputs, and | ||||||
|  | captures the computation graph into an :class:`torch.export.ExportedProgram`. An | ||||||
|  | example: | ||||||
|  |  | ||||||
|  | :: | ||||||
|  |  | ||||||
|  |     import torch | ||||||
|  |     from torch.export import export | ||||||
|  |  | ||||||
|  |     # Simple module for demonstration | ||||||
|  |     class M(torch.nn.Module): | ||||||
|  |         def __init__(self) -> None: | ||||||
|  |             super().__init__() | ||||||
|  |             self.conv = torch.nn.Conv2d( | ||||||
|  |                 in_channels=3, out_channels=16, kernel_size=3, padding=1 | ||||||
|  |             ) | ||||||
|  |             self.relu = torch.nn.ReLU() | ||||||
|  |             self.maxpool = torch.nn.MaxPool2d(kernel_size=3) | ||||||
|  |  | ||||||
|  |         def forward(self, x: torch.Tensor, *, constant=None) -> torch.Tensor: | ||||||
|  |             a = self.conv(x) | ||||||
|  |             a.add_(constant) | ||||||
|  |             return self.maxpool(self.relu(a)) | ||||||
|  |  | ||||||
|  |     example_args = (torch.randn(1, 3, 256, 256),) | ||||||
|  |     example_kwargs = {"constant": torch.ones(1, 16, 256, 256)} | ||||||
|  |  | ||||||
|  |     exported_program: torch.export.ExportedProgram = export( | ||||||
|  |         M(), args=example_args, kwargs=example_kwargs | ||||||
|  |     ) | ||||||
|  |     print(exported_program) | ||||||
|  |  | ||||||
|  | .. code-block:: | ||||||
|  |  | ||||||
|  |     ExportedProgram: | ||||||
|  |         class GraphModule(torch.nn.Module): | ||||||
|  |             def forward(self, arg0_1: f32[16, 3, 3, 3], arg1_1: f32[16], arg2_1: f32[1, 3, 256, 256], arg3_1: f32[1, 16, 256, 256]): | ||||||
|  |  | ||||||
|  |                 # code: a = self.conv(x) | ||||||
|  |                 convolution: f32[1, 16, 256, 256] = torch.ops.aten.convolution.default( | ||||||
|  |                     arg2_1, arg0_1, arg1_1, [1, 1], [1, 1], [1, 1], False, [0, 0], 1 | ||||||
|  |                 ); | ||||||
|  |  | ||||||
|  |                 # code: a.add_(constant) | ||||||
|  |                 add: f32[1, 16, 256, 256] = torch.ops.aten.add.Tensor(convolution, arg3_1); | ||||||
|  |  | ||||||
|  |                 # code: return self.maxpool(self.relu(a)) | ||||||
|  |                 relu: f32[1, 16, 256, 256] = torch.ops.aten.relu.default(add); | ||||||
|  |                 max_pool2d_with_indices = torch.ops.aten.max_pool2d_with_indices.default( | ||||||
|  |                     relu, [3, 3], [3, 3] | ||||||
|  |                 ); | ||||||
|  |                 getitem: f32[1, 16, 85, 85] = max_pool2d_with_indices[0]; | ||||||
|  |                 return (getitem,) | ||||||
|  |  | ||||||
|  |         Graph signature: ExportGraphSignature( | ||||||
|  |             parameters=['L__self___conv.weight', 'L__self___conv.bias'], | ||||||
|  |             buffers=[], | ||||||
|  |             user_inputs=['arg2_1', 'arg3_1'], | ||||||
|  |             user_outputs=['getitem'], | ||||||
|  |             inputs_to_parameters={ | ||||||
|  |                 'arg0_1': 'L__self___conv.weight', | ||||||
|  |                 'arg1_1': 'L__self___conv.bias', | ||||||
|  |             }, | ||||||
|  |             inputs_to_buffers={}, | ||||||
|  |             buffers_to_mutate={}, | ||||||
|  |             backward_signature=None, | ||||||
|  |             assertion_dep_token=None, | ||||||
|  |         ) | ||||||
|  |         Range constraints: {} | ||||||
|  |         Equality constraints: [] | ||||||
|  |  | ||||||
|  | Inspecting the ``ExportedProgram``, we can note the following: | ||||||
|  |  | ||||||
|  | * The :class:`torch.fx.Graph` contains the computation graph of the original | ||||||
|  |   program, along with records of the original code for easy debugging. | ||||||
|  |  | ||||||
|  | * The graph contains only ``torch.ops.aten`` operators found in the | ||||||
|  |   :ref:`Core ATen IR <torch.compiler_ir>` opset and custom operators, and is | ||||||
|  |   fully functional, without any inplace operators such as ``torch.add_``. | ||||||
|  |  | ||||||
|  | * The parameters (weight and bias to conv) are lifted as inputs to the graph, | ||||||
|  |   resulting in no ``get_attr`` nodes in the graph, which previously existed in | ||||||
|  |   the result of :func:`torch.fx.symbolic_trace`. | ||||||
|  |  | ||||||
|  | * The :class:`torch.export.ExportGraphSignature` models the input and output | ||||||
|  |   signature, along with specifying which inputs are parameters. | ||||||
|  |  | ||||||
|  | * The resulting shape and dtype of tensors produced by each node in the graph is | ||||||
|  |   noted. For example, the ``convolution`` node will result in a tensor of dtype | ||||||
|  |   ``torch.float32`` and shape (1, 16, 256, 256). | ||||||
|  |  | ||||||
|  |  | ||||||
|  | Expressing Dynamism | ||||||
|  | ^^^^^^^^^^^^^^^^^^^ | ||||||
|  |  | ||||||
|  | By default ``torch.export`` will trace the program assuming all input shapes are | ||||||
|  | **static**, and specializing the exported program to those dimensions. However, | ||||||
|  | some dimensions, such as a batch dimension, can be dynamic and vary from run to | ||||||
|  | run. Such dimensions must be marked dynamic using the | ||||||
|  | :func:`torch.export.dynamic_dim` API, and passed into | ||||||
|  | :func:`torch.export.export` through the ``constraints`` argument. An example: | ||||||
|  |  | ||||||
|  | :: | ||||||
|  |  | ||||||
|  |     import torch | ||||||
|  |     from torch.export import export, dynamic_dim | ||||||
|  |  | ||||||
|  |     class M(torch.nn.Module): | ||||||
|  |         def __init__(self): | ||||||
|  |             super().__init__() | ||||||
|  |  | ||||||
|  |             self.branch1 = torch.nn.Sequential( | ||||||
|  |                 torch.nn.Linear(64, 32), torch.nn.ReLU() | ||||||
|  |             ) | ||||||
|  |             self.branch2 = torch.nn.Sequential( | ||||||
|  |                 torch.nn.Linear(128, 64), torch.nn.ReLU() | ||||||
|  |             ) | ||||||
|  |             self.buffer = torch.ones(32) | ||||||
|  |  | ||||||
|  |         def forward(self, x1, x2): | ||||||
|  |             out1 = self.branch1(x1) | ||||||
|  |             out2 = self.branch2(x2) | ||||||
|  |             return (out1 + self.buffer, out2) | ||||||
|  |  | ||||||
|  |     example_args = (torch.randn(32, 64), torch.randn(32, 128)) | ||||||
|  |     constraints = [ | ||||||
|  |         # First dimension of each input is a dynamic batch size | ||||||
|  |         dynamic_dim(example_args[0], 0), | ||||||
|  |         dynamic_dim(example_args[1], 0), | ||||||
|  |         # The dynamic batch size between the inputs are equal | ||||||
|  |         dynamic_dim(example_args[0], 0) == dynamic_dim(example_args[1], 0), | ||||||
|  |     ] | ||||||
|  |  | ||||||
|  |     exported_program: torch.export.ExportedProgram = export( | ||||||
|  |       M(), args=example_args, constraints=constraints | ||||||
|  |     ) | ||||||
|  |     print(exported_program) | ||||||
|  |  | ||||||
|  | .. code-block:: | ||||||
|  |  | ||||||
|  |     ExportedProgram: | ||||||
|  |         class GraphModule(torch.nn.Module): | ||||||
|  |             def forward(self, arg0_1: f32[32, 64], arg1_1: f32[32], arg2_1: f32[64, 128], arg3_1: f32[64], arg4_1: f32[32], arg5_1: f32[s0, 64], arg6_1: f32[s0, 128]): | ||||||
|  |  | ||||||
|  |                 # code: out1 = self.branch1(x1) | ||||||
|  |                 permute: f32[64, 32] = torch.ops.aten.permute.default(arg0_1, [1, 0]); | ||||||
|  |                 addmm: f32[s0, 32] = torch.ops.aten.addmm.default(arg1_1, arg5_1, permute); | ||||||
|  |                 relu: f32[s0, 32] = torch.ops.aten.relu.default(addmm); | ||||||
|  |  | ||||||
|  |                 # code: out2 = self.branch2(x2) | ||||||
|  |                 permute_1: f32[128, 64] = torch.ops.aten.permute.default(arg2_1, [1, 0]); | ||||||
|  |                 addmm_1: f32[s0, 64] = torch.ops.aten.addmm.default(arg3_1, arg6_1, permute_1); | ||||||
|  |                 relu_1: f32[s0, 64] = torch.ops.aten.relu.default(addmm_1);  addmm_1 = None | ||||||
|  |  | ||||||
|  |                 # code: return (out1 + self.buffer, out2) | ||||||
|  |                 add: f32[s0, 32] = torch.ops.aten.add.Tensor(relu, arg4_1); | ||||||
|  |                 return (add, relu_1) | ||||||
|  |  | ||||||
|  |         Graph signature: ExportGraphSignature( | ||||||
|  |             parameters=[ | ||||||
|  |                 'branch1.0.weight', | ||||||
|  |                 'branch1.0.bias', | ||||||
|  |                 'branch2.0.weight', | ||||||
|  |                 'branch2.0.bias', | ||||||
|  |             ], | ||||||
|  |             buffers=['L__self___buffer'], | ||||||
|  |             user_inputs=['arg5_1', 'arg6_1'], | ||||||
|  |             user_outputs=['add', 'relu_1'], | ||||||
|  |             inputs_to_parameters={ | ||||||
|  |                 'arg0_1': 'branch1.0.weight', | ||||||
|  |                 'arg1_1': 'branch1.0.bias', | ||||||
|  |                 'arg2_1': 'branch2.0.weight', | ||||||
|  |                 'arg3_1': 'branch2.0.bias', | ||||||
|  |             }, | ||||||
|  |             inputs_to_buffers={'arg4_1': 'L__self___buffer'}, | ||||||
|  |             buffers_to_mutate={}, | ||||||
|  |             backward_signature=None, | ||||||
|  |             assertion_dep_token=None, | ||||||
|  |         ) | ||||||
|  |         Range constraints: {s0: RangeConstraint(min_val=2, max_val=9223372036854775806)} | ||||||
|  |         Equality constraints: [(InputDim(input_name='arg5_1', dim=0), InputDim(input_name='arg6_1', dim=0))] | ||||||
|  |  | ||||||
|  | Some additional things to note: | ||||||
|  |  | ||||||
|  | * Through the :func:`torch.export.dynamic_dim` API, we specified the first | ||||||
|  |   dimension of each input to be dynamic. Looking at the inputs ``arg5_1`` and | ||||||
|  |   ``arg6_1``, they have a symbolic shape of (s0, 64) and (s0, 128), instead of | ||||||
|  |   the (32, 64) and (32, 128) shaped tensors that we passed in as example inputs. | ||||||
|  |   ``s0`` is a symbol representing that this dimension can be a range | ||||||
|  |   of values. | ||||||
|  |  | ||||||
|  | * ``exported_program.range_constraints`` describes the ranges of each symbol | ||||||
|  |   appearing in the graph. In this case, we see that ``s0`` has the range | ||||||
|  |   [2, inf]. For technical reasons that are difficult to explain here, they are | ||||||
|  |   assumed to be not 0 or 1. This is not a bug, and does not necessarily mean | ||||||
|  |   that the exported program will not work for dimensions 0 or 1. See | ||||||
|  |   `The 0/1 Specialization Problem <https://docs.google.com/document/d/16VPOa3d-Liikf48teAOmxLc92rgvJdfosIy-yoT38Io/edit?fbclid=IwAR3HNwmmexcitV0pbZm_x1a4ykdXZ9th_eJWK-3hBtVgKnrkmemz6Pm5jRQ#heading=h.ez923tomjvyk>`_ | ||||||
|  |   for an in-depth discussion of this topic. | ||||||
|  |  | ||||||
|  | * ``exported_program.equality_constraints`` describes which dimensions are | ||||||
|  |   required to be equal. Since we specified in the constraints that the first | ||||||
|  |   dimension of each argument is equivalent, | ||||||
|  |   (``dynamic_dim(example_args[0], 0) == dynamic_dim(example_args[1], 0)``), | ||||||
|  |   we see in the equality constraints the tuple specifying that ``arg5_1`` | ||||||
|  |   dimension 0 and ``arg6_1`` dimension 0 are equal. | ||||||
|  |  | ||||||
|  |  | ||||||
|  | Serialization | ||||||
|  | ^^^^^^^^^^^^^ | ||||||
|  |  | ||||||
|  | To save the ``ExportedProgram``, users can use the :func:`torch.export.save` and | ||||||
|  | :func:`torch.export.load` APIs. A convention is to save the ``ExportedProgram`` | ||||||
|  | using a ``.pt2`` file extension. | ||||||
|  |  | ||||||
|  | An example: | ||||||
|  |  | ||||||
|  | :: | ||||||
|  |  | ||||||
|  |     import torch | ||||||
|  |     import io | ||||||
|  |  | ||||||
|  |     class MyModule(torch.nn.Module): | ||||||
|  |         def forward(self, x): | ||||||
|  |             return x + 10 | ||||||
|  |  | ||||||
|  |     exported_program = torch.export.export(MyModule(), torch.randn(5)) | ||||||
|  |  | ||||||
|  |     torch.export.save(exported_program, 'exported_program.pt2') | ||||||
|  |     saved_exported_program = torch.export.load('exported_program.pt2') | ||||||
|  |  | ||||||
|  |  | ||||||
|  | Specialization | ||||||
|  | ^^^^^^^^^^^^^^ | ||||||
|  |  | ||||||
|  | Input shapes | ||||||
|  | ~~~~~~~~~~~~ | ||||||
|  |  | ||||||
|  | As mentioned before, by default, ``torch.export`` will trace the program | ||||||
|  | specializing on the input tensors' shapes, unless a dimension is specified as | ||||||
|  | dynamic via the :func:`torch.export.dynamic_dim` API. This means that if there | ||||||
|  | exists shape-dependent control flow, ``torch.export`` will specialize on the | ||||||
|  | branch that is being taken with the given sample inputs. For example: | ||||||
|  |  | ||||||
|  | :: | ||||||
|  |  | ||||||
|  |     import torch | ||||||
|  |     from torch.export import export | ||||||
|  |  | ||||||
|  |     def fn(x): | ||||||
|  |         if x.shape[0] > 5: | ||||||
|  |             return x + 1 | ||||||
|  |         else: | ||||||
|  |             return x - 1 | ||||||
|  |  | ||||||
|  |     example_inputs = (torch.rand(10, 2),) | ||||||
|  |     exported_program = export(fn, example_inputs) | ||||||
|  |     print(exported_program) | ||||||
|  |  | ||||||
|  | .. code-block:: | ||||||
|  |  | ||||||
|  |     ExportedProgram: | ||||||
|  |         class GraphModule(torch.nn.Module): | ||||||
|  |             def forward(self, arg0_1: f32[10, 2]): | ||||||
|  |                 add: f32[10, 2] = torch.ops.aten.add.Tensor(arg0_1, 1); | ||||||
|  |                 return (add,) | ||||||
|  |  | ||||||
|  | The conditional of (``x.shape[0] > 5``) does not appear in the | ||||||
|  | ``ExportedProgram`` because the example inputs have the static | ||||||
|  | shape of (10, 2). Since ``torch.export`` specializes on the inputs' static | ||||||
|  | shapes, the else branch (``x - 1``) will never be reached. To preserve the dynamic | ||||||
|  | branching behavior based on the shape of a tensor in the traced graph, | ||||||
|  | :func:`torch.export.dynamic_dim` will need to be used to specify the dimension | ||||||
|  | of the input tensor (``x.shape[0]``) to be dynamic, and the source code will | ||||||
|  | need to be :ref:`rewritten <Data/Shape-Dependent Control Flow>`. | ||||||
|  |  | ||||||
|  | Non-tensor inputs | ||||||
|  | ~~~~~~~~~~~~~~~~~ | ||||||
|  |  | ||||||
|  | ``torch.export`` also specializes the traced graph based on the values of inputs | ||||||
|  | that are not ``torch.Tensor``, such as ``int``, ``float``, ``bool``, and ``str``. | ||||||
|  | However, we will likely change this in the near future to not specialize on | ||||||
|  | inputs of primitive types. | ||||||
|  |  | ||||||
|  | For example: | ||||||
|  |  | ||||||
|  | :: | ||||||
|  |  | ||||||
|  |     import torch | ||||||
|  |     from torch.export import export | ||||||
|  |  | ||||||
|  |     def fn(x: torch.Tensor, const: int, times: int): | ||||||
|  |         for i in range(times): | ||||||
|  |             x = x + const | ||||||
|  |         return x | ||||||
|  |  | ||||||
|  |     example_inputs = (torch.rand(2, 2), 1, 3) | ||||||
|  |     exported_program = export(fn, example_inputs) | ||||||
|  |     print(exported_program) | ||||||
|  |  | ||||||
|  | .. code-block:: | ||||||
|  |  | ||||||
|  |     ExportedProgram: | ||||||
|  |         class GraphModule(torch.nn.Module): | ||||||
|  |             def forward(self, arg0_1: f32[2, 2], arg1_1, arg2_1): | ||||||
|  |                 add: f32[2, 2] = torch.ops.aten.add.Tensor(arg0_1, 1); | ||||||
|  |                 add_1: f32[2, 2] = torch.ops.aten.add.Tensor(add, 1); | ||||||
|  |                 add_2: f32[2, 2] = torch.ops.aten.add.Tensor(add_1, 1); | ||||||
|  |                 return (add_2,) | ||||||
|  |  | ||||||
|  | Because integers are specialized, the ``torch.ops.aten.add.Tensor`` operations | ||||||
|  | are all computed with the inlined constant ``1``, rather than ``arg1_1``. | ||||||
|  | Additionally, the ``times`` iterator used in the ``for`` loop is also "inlined" | ||||||
|  | in the graph through the 3 repeated ``torch.ops.aten.add.Tensor`` calls, and the | ||||||
|  | input ``arg2_1`` is never used. | ||||||
|  |  | ||||||
|  |  | ||||||
|  | Limitations of torch.export | ||||||
|  | --------------------------- | ||||||
|  |  | ||||||
|  | Graph Breaks | ||||||
|  | ^^^^^^^^^^^^ | ||||||
|  |  | ||||||
|  | As ``torch.export`` is a one-shot process for capturing a computation graph from | ||||||
|  | a PyTorch program, it might ultimately run into untraceable parts of programs as | ||||||
|  | it is nearly impossible to support tracing all PyTorch and Python features. In | ||||||
|  | the case of ``torch.compile``, an unsupported operation will cause a "graph | ||||||
|  | break" and the unsupported operation will be run with default Python evaluation. | ||||||
|  | In contrast, ``torch.export`` will require users to provide additional | ||||||
|  | information or rewrite parts of their code to make it traceable. As the | ||||||
|  | tracing is based on TorchDynamo, which evaluates at the Python | ||||||
|  | bytecode level, there will be significantly fewer rewrites required compared to | ||||||
|  | previous tracing frameworks. | ||||||
|  |  | ||||||
|  | When a graph break is encountered, :ref:`ExportDB <torch.export_db>` is a great | ||||||
|  | resource for learning about the kinds of programs that are supported and | ||||||
|  | unsupported, along with ways to rewrite programs to make them traceable. | ||||||
|  |  | ||||||
|  | .. _Data/Shape-Dependent Control Flow: | ||||||
|  |  | ||||||
|  | Data/Shape-Dependent Control Flow | ||||||
|  | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ||||||
|  |  | ||||||
|  | Graph breaks can also be encountered on data-dependent control flow (``if | ||||||
|  | x.shape[0] > 2``) when shapes are not being specialized, as a tracing compiler cannot | ||||||
|  | possibly deal with without generating code for a combinatorially exploding | ||||||
|  | number of paths. In such cases, users will need to rewrite their code using | ||||||
|  | special control flow operators (coming soon!). | ||||||
|  |  | ||||||
|  | Data-Dependent Accesses | ||||||
|  | ^^^^^^^^^^^^^^^^^^^^^^^ | ||||||
|  |  | ||||||
|  | Data dependent behavior such as using the value inside of a tensor to construct | ||||||
|  | another tensor, or using the value of a tensor to slice into another tensor, is | ||||||
|  | also something the tracer cannot fully determine. Users will need to rewrite | ||||||
|  | their code using the inline constraint APIs | ||||||
|  | :func:`torch.export.constrain_as_size` and | ||||||
|  | :func:`torch.export.constrain_as_value`. | ||||||
|  |  | ||||||
|  | Missing Meta Kernels for Operators | ||||||
|  | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ||||||
|  |  | ||||||
|  | When tracing, a META implementation (or "meta kernel") is required for all | ||||||
|  | operators. This is used to reason about the input/output shapes for this | ||||||
|  | operator. | ||||||
|  |  | ||||||
|  | Note that the official API for registering custom meta kernels for custom ops is | ||||||
|  | currently undergoing development. While the final API is being refined, you can | ||||||
|  | refer to the documentation `here <https://docs.google.com/document/d/1GgvOe7C8_NVOMLOCwDaYV1mXXyHMXY7ExoewHqooxrs/edit#heading=h.64r4npvq0w0>`_. | ||||||
|  |  | ||||||
|  | In the unfortunate case where your model uses an ATen operator that is does not | ||||||
|  | have a meta kernel implementation yet, please file an issue. | ||||||
|  |  | ||||||
|  |  | ||||||
|  | Read More | ||||||
|  | --------- | ||||||
|  |  | ||||||
|  | .. toctree:: | ||||||
|  |    :caption: Additional Links for Export Users | ||||||
|  |    :maxdepth: 1 | ||||||
|  |  | ||||||
|  |    torch.compiler_transformations | ||||||
|  |    torch.compiler_ir | ||||||
|  |    generated/exportdb/index | ||||||
|  |  | ||||||
|  | .. toctree:: | ||||||
|  |    :caption: Deep Dive for PyTorch Developers | ||||||
|  |    :maxdepth: 1 | ||||||
|  |  | ||||||
|  |    torch.compiler_deepdive | ||||||
|  |    torch.compiler_dynamic_shapes | ||||||
|  |    torch.compiler_fake_tensor | ||||||
|  |  | ||||||
|  |  | ||||||
|  | API Reference | ||||||
|  | ------------- | ||||||
|  |  | ||||||
| .. automodule:: torch.export | .. automodule:: torch.export | ||||||
| .. autofunction:: export | .. autofunction:: export | ||||||
| @ -24,10 +565,3 @@ torch.export | |||||||
| .. autoclass:: ArgumentSpec | .. autoclass:: ArgumentSpec | ||||||
| .. autoclass:: ModuleCallSignature | .. autoclass:: ModuleCallSignature | ||||||
| .. autoclass:: ModuleCallEntry | .. autoclass:: ModuleCallEntry | ||||||
|  |  | ||||||
|  |  | ||||||
| .. toctree:: |  | ||||||
|    :glob: |  | ||||||
|    :maxdepth: 1 |  | ||||||
|  |  | ||||||
|    generated/exportdb/index |  | ||||||
|  | |||||||
| @ -94,7 +94,6 @@ Features described in this documentation are classified by release status: | |||||||
|    profiler |    profiler | ||||||
|    nn.init |    nn.init | ||||||
|    onnx |    onnx | ||||||
|    onnx_diagnostics |  | ||||||
|    optim |    optim | ||||||
|    complex_numbers |    complex_numbers | ||||||
|    ddp_comm_hooks |    ddp_comm_hooks | ||||||
|  | |||||||
| @ -185,6 +185,7 @@ If you don't see an operation listed here, but it would help your use case, plea | |||||||
|    :meth:`Tensor.reciprocal_`,None |    :meth:`Tensor.reciprocal_`,None | ||||||
|    :meth:`Tensor.refine_names`,See documentation |    :meth:`Tensor.refine_names`,See documentation | ||||||
|    :meth:`Tensor.register_hook`,None |    :meth:`Tensor.register_hook`,None | ||||||
|  |    :meth:`Tensor.register_post_accumulate_grad_hook`,None | ||||||
|    :meth:`Tensor.rename`,See documentation |    :meth:`Tensor.rename`,See documentation | ||||||
|    :meth:`Tensor.rename_`,See documentation |    :meth:`Tensor.rename_`,See documentation | ||||||
|    :attr:`Tensor.requires_grad`,None |    :attr:`Tensor.requires_grad`,None | ||||||
|  | |||||||
| @ -1,745 +1,64 @@ | |||||||
| torch.onnx | torch.onnx | ||||||
| ========== | ========== | ||||||
|  |  | ||||||
| .. contents:: :local: | Overview | ||||||
|  | -------- | ||||||
| .. automodule:: torch.onnx |  | ||||||
|  |  | ||||||
| `Open Neural Network eXchange (ONNX) <https://onnx.ai/>`_ is an open standard | `Open Neural Network eXchange (ONNX) <https://onnx.ai/>`_ is an open standard | ||||||
| format for representing machine learning models. The torch.onnx module can export | format for representing machine learning models. The ``torch.onnx`` module captures the computation graph from a | ||||||
| PyTorch models to ONNX. The model can then be consumed by any of the many | native PyTorch :class:`torch.nn.Module` model and converts it into an | ||||||
| `runtimes that support ONNX <https://onnx.ai/supported-tools.html#deployModel>`_. | `ONNX graph <https://github.com/onnx/onnx/blob/main/docs/IR.md>`_. | ||||||
|  |  | ||||||
| Example: AlexNet from PyTorch to ONNX | The exported model can be consumed by any of the many | ||||||
| ------------------------------------- | `runtimes that support ONNX <https://onnx.ai/supported-tools.html#deployModel>`_, including | ||||||
|  | Microsoft's `ONNX Runtime <https://www.onnxruntime.ai>`_. | ||||||
|  |  | ||||||
| Here is a simple script which exports a pretrained AlexNet to an ONNX file named ``alexnet.onnx``. | **There are two flavors of ONNX exporter API that you can use, as listed below:** | ||||||
| The call to ``torch.onnx.export`` runs the model once to trace its execution and then exports the |  | ||||||
| traced model to the specified file:: |  | ||||||
|  |  | ||||||
|     import torch | TorchDynamo-based ONNX Exporter | ||||||
|     import torchvision | ------------------------------- | ||||||
|  |  | ||||||
|     dummy_input = torch.randn(10, 3, 224, 224, device="cuda") | *The TorchDynamo-based ONNX exporter is the newest (and Beta) exporter for PyTorch 2.0 and newer* | ||||||
|     model = torchvision.models.alexnet(pretrained=True).cuda() |  | ||||||
|  |  | ||||||
|     # Providing input and output names sets the display names for values | TorchDynamo engine is leveraged to hook into Python's frame evaluation API and dynamically rewrite its | ||||||
|     # within the model's graph. Setting these does not change the semantics | bytecode into an FX Graph. The resulting FX Graph is then polished before it is finally translated into an | ||||||
|     # of the graph; it is only for readability. | ONNX graph. | ||||||
|     # |  | ||||||
|     # The inputs to the network consist of the flat list of inputs (i.e. |  | ||||||
|     # the values you would pass to the forward() method) followed by the |  | ||||||
|     # flat list of parameters. You can partially specify names, i.e. provide |  | ||||||
|     # a list here shorter than the number of inputs to the model, and we will |  | ||||||
|     # only set that subset of names, starting from the beginning. |  | ||||||
|     input_names = [ "actual_input_1" ] + [ "learned_%d" % i for i in range(16) ] |  | ||||||
|     output_names = [ "output1" ] |  | ||||||
|  |  | ||||||
|     torch.onnx.export(model, dummy_input, "alexnet.onnx", verbose=True, input_names=input_names, output_names=output_names) | The main advantage of this approach is that the `FX graph <https://pytorch.org/docs/stable/fx.html>`_ is captured using | ||||||
|  | bytecode analysis that preserves the dynamic nature of the model instead of using traditional static tracing techniques. | ||||||
|  |  | ||||||
| The resulting ``alexnet.onnx`` file contains a binary `protocol buffer <https://developers.google.com/protocol-buffers/>`_ | :doc:`Learn more about the TorchDynamo-based ONNX Exporter <onnx_dynamo>` | ||||||
| which contains both the network structure and parameters of the model you exported |  | ||||||
| (in this case, AlexNet).  The argument ``verbose=True`` causes the |  | ||||||
| exporter to print out a human-readable representation of the model:: |  | ||||||
|  |  | ||||||
|     # These are the inputs and parameters to the network, which have taken on | TorchScript-based ONNX Exporter | ||||||
|     # the names we specified earlier. | ------------------------------- | ||||||
|     graph(%actual_input_1 : Float(10, 3, 224, 224) |  | ||||||
|           %learned_0 : Float(64, 3, 11, 11) |  | ||||||
|           %learned_1 : Float(64) |  | ||||||
|           %learned_2 : Float(192, 64, 5, 5) |  | ||||||
|           %learned_3 : Float(192) |  | ||||||
|           # ---- omitted for brevity ---- |  | ||||||
|           %learned_14 : Float(1000, 4096) |  | ||||||
|           %learned_15 : Float(1000)) { |  | ||||||
|       # Every statement consists of some output tensors (and their types), |  | ||||||
|       # the operator to be run (with its attributes, e.g., kernels, strides, |  | ||||||
|       # etc.), its input tensors (%actual_input_1, %learned_0, %learned_1) |  | ||||||
|       %17 : Float(10, 64, 55, 55) = onnx::Conv[dilations=[1, 1], group=1, kernel_shape=[11, 11], pads=[2, 2, 2, 2], strides=[4, 4]](%actual_input_1, %learned_0, %learned_1), scope: AlexNet/Sequential[features]/Conv2d[0] |  | ||||||
|       %18 : Float(10, 64, 55, 55) = onnx::Relu(%17), scope: AlexNet/Sequential[features]/ReLU[1] |  | ||||||
|       %19 : Float(10, 64, 27, 27) = onnx::MaxPool[kernel_shape=[3, 3], pads=[0, 0, 0, 0], strides=[2, 2]](%18), scope: AlexNet/Sequential[features]/MaxPool2d[2] |  | ||||||
|       # ---- omitted for brevity ---- |  | ||||||
|       %29 : Float(10, 256, 6, 6) = onnx::MaxPool[kernel_shape=[3, 3], pads=[0, 0, 0, 0], strides=[2, 2]](%28), scope: AlexNet/Sequential[features]/MaxPool2d[12] |  | ||||||
|       # Dynamic means that the shape is not known. This may be because of a |  | ||||||
|       # limitation of our implementation (which we would like to fix in a |  | ||||||
|       # future release) or shapes which are truly dynamic. |  | ||||||
|       %30 : Dynamic = onnx::Shape(%29), scope: AlexNet |  | ||||||
|       %31 : Dynamic = onnx::Slice[axes=[0], ends=[1], starts=[0]](%30), scope: AlexNet |  | ||||||
|       %32 : Long() = onnx::Squeeze[axes=[0]](%31), scope: AlexNet |  | ||||||
|       %33 : Long() = onnx::Constant[value={9216}](), scope: AlexNet |  | ||||||
|       # ---- omitted for brevity ---- |  | ||||||
|       %output1 : Float(10, 1000) = onnx::Gemm[alpha=1, beta=1, broadcast=1, transB=1](%45, %learned_14, %learned_15), scope: AlexNet/Sequential[classifier]/Linear[6] |  | ||||||
|       return (%output1); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
| You can also verify the output using the `ONNX <https://github.com/onnx/onnx/>`_ library, | *The TorchScript-based ONNX exporter is available since PyTorch 1.2.0* | ||||||
| which you can install using ``pip``:: |  | ||||||
|  |  | ||||||
|     pip install onnx | `TorchScript <https://pytorch.org/docs/stable/jit.html>`_ is leveraged to trace (through :func:`torch.jit.trace`) | ||||||
|  | the model and capture a static computation graph. | ||||||
|  |  | ||||||
| Then, you can run:: | As a consequence, the resulting graph has a couple limitations: | ||||||
|  |  | ||||||
|     import onnx | * It does not record any control-flow, like if-statements or loops; | ||||||
|  | * Does not handle nuances between ``training`` and ``eval`` mode; | ||||||
|  | * Does not truly handle dynamic inputs | ||||||
|  |  | ||||||
|     # Load the ONNX model | As an attempt to support the static tracing limitations, the exporter also supports TorchScript scripting | ||||||
|     model = onnx.load("alexnet.onnx") | (through :func:`torch.jit.script`), which adds support for data-dependent control-flow, for example. However, TorchScript | ||||||
|  | itself is a subset of the Python language, so not all features in Python are supported, such as in-place operations. | ||||||
|  |  | ||||||
|     # Check that the model is well formed | :doc:`Learn more about the TorchScript-based ONNX Exporter <onnx_torchscript>` | ||||||
|     onnx.checker.check_model(model) |  | ||||||
|  |  | ||||||
|     # Print a human readable representation of the graph | Contributing / Developing | ||||||
|     print(onnx.helper.printable_graph(model.graph)) |  | ||||||
|  |  | ||||||
| You can also run the exported model with one of the many |  | ||||||
| `runtimes that support ONNX <https://onnx.ai/supported-tools.html#deployModel>`_. |  | ||||||
| For example after installing `ONNX Runtime <https://www.onnxruntime.ai>`_, you can |  | ||||||
| load and run the model:: |  | ||||||
|  |  | ||||||
|     import onnxruntime as ort |  | ||||||
|     import numpy as np |  | ||||||
|  |  | ||||||
|     ort_session = ort.InferenceSession("alexnet.onnx") |  | ||||||
|  |  | ||||||
|     outputs = ort_session.run( |  | ||||||
|         None, |  | ||||||
|         {"actual_input_1": np.random.randn(10, 3, 224, 224).astype(np.float32)}, |  | ||||||
|     ) |  | ||||||
|     print(outputs[0]) |  | ||||||
|  |  | ||||||
| Here is a more involved `tutorial on exporting a model and running it with ONNX Runtime <https://pytorch.org/tutorials/advanced/super_resolution_with_onnxruntime.html>`_. |  | ||||||
|  |  | ||||||
| .. _tracing-vs-scripting: |  | ||||||
|  |  | ||||||
| Tracing vs Scripting |  | ||||||
| -------------------- |  | ||||||
|  |  | ||||||
| Internally, :func:`torch.onnx.export()` requires a :class:`torch.jit.ScriptModule` rather than |  | ||||||
| a :class:`torch.nn.Module`. If the passed-in model is not already a ``ScriptModule``, |  | ||||||
| ``export()`` will use *tracing* to convert it to one: |  | ||||||
|  |  | ||||||
| .. TODO(justinchuby): Add a word on recommending tracing over scripting for most use cases. |  | ||||||
|  |  | ||||||
| * **Tracing**: If ``torch.onnx.export()`` is called with a Module that is not already a |  | ||||||
|   ``ScriptModule``, it first does the equivalent of :func:`torch.jit.trace`, which executes the model |  | ||||||
|   once with the given ``args`` and records all operations that happen during that execution. This |  | ||||||
|   means that if your model is dynamic, e.g., changes behavior depending on input data, the exported |  | ||||||
|   model will *not* capture this dynamic behavior. |  | ||||||
|   We recommend examining the exported model and making sure the operators look |  | ||||||
|   reasonable. Tracing will unroll loops and if statements, exporting a static graph that is exactly |  | ||||||
|   the same as the traced run. If you want to export your model with dynamic control flow, you will |  | ||||||
|   need to use *scripting*. |  | ||||||
|  |  | ||||||
| * **Scripting**: Compiling a model via scripting preserves dynamic control flow and is valid for inputs |  | ||||||
|   of different sizes. To use scripting: |  | ||||||
|  |  | ||||||
|   * Use :func:`torch.jit.script` to produce a ``ScriptModule``. |  | ||||||
|   * Call ``torch.onnx.export()`` with the ``ScriptModule`` as the model. The ``args`` are still required, |  | ||||||
|     but they will be used internally only to produce example outputs, so that the types and shapes of the |  | ||||||
|     outputs can be captured. No tracing will be performed. |  | ||||||
|  |  | ||||||
| See `Introduction to TorchScript <https://pytorch.org/tutorials/beginner/Intro_to_TorchScript_tutorial.html>`_ |  | ||||||
| and `TorchScript <jit.html>`_ for more details, including how to compose tracing and scripting to suit the |  | ||||||
| particular requirements of different models. |  | ||||||
|  |  | ||||||
|  |  | ||||||
| Avoiding Pitfalls |  | ||||||
| ----------------- |  | ||||||
|  |  | ||||||
| Avoid NumPy and built-in Python types |  | ||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ |  | ||||||
|  |  | ||||||
| PyTorch models can be written using NumPy or Python types and functions, but |  | ||||||
| during :ref:`tracing<tracing-vs-scripting>`, any variables of NumPy or Python |  | ||||||
| types (rather than torch.Tensor) are converted to constants, which will produce |  | ||||||
| the wrong result if those values should change depending on the inputs. |  | ||||||
|  |  | ||||||
| For example, rather than using numpy functions on numpy.ndarrays: :: |  | ||||||
|  |  | ||||||
|     # Bad! Will be replaced with constants during tracing. |  | ||||||
|     x, y = np.random.rand(1, 2), np.random.rand(1, 2) |  | ||||||
|     np.concatenate((x, y), axis=1) |  | ||||||
|  |  | ||||||
| Use torch operators on torch.Tensors: :: |  | ||||||
|  |  | ||||||
|     # Good! Tensor operations will be captured during tracing. |  | ||||||
|     x, y = torch.randn(1, 2), torch.randn(1, 2) |  | ||||||
|     torch.cat((x, y), dim=1) |  | ||||||
|  |  | ||||||
|  |  | ||||||
| And rather than use :func:`torch.Tensor.item` (which converts a Tensor to a Python |  | ||||||
| built-in number): :: |  | ||||||
|  |  | ||||||
|     # Bad! y.item() will be replaced with a constant during tracing. |  | ||||||
|     def forward(self, x, y): |  | ||||||
|         return x.reshape(y.item(), -1) |  | ||||||
|  |  | ||||||
| Use torch's support for implicit casting of single-element tensors: :: |  | ||||||
|  |  | ||||||
|     # Good! y will be preserved as a variable during tracing. |  | ||||||
|     def forward(self, x, y): |  | ||||||
|         return x.reshape(y, -1) |  | ||||||
|  |  | ||||||
| Avoid Tensor.data |  | ||||||
| ^^^^^^^^^^^^^^^^^ |  | ||||||
|  |  | ||||||
| Using the Tensor.data field can produce an incorrect trace and therefore an incorrect ONNX graph. |  | ||||||
| Use :func:`torch.Tensor.detach` instead. (Work is ongoing to |  | ||||||
| `remove Tensor.data entirely <https://github.com/pytorch/pytorch/issues/30987>`_). |  | ||||||
|  |  | ||||||
| Avoid in-place operations when using tensor.shape in tracing mode |  | ||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ |  | ||||||
|  |  | ||||||
| In tracing mode, shapes obtained from ``tensor.shape`` are traced as tensors, |  | ||||||
| and share the same memory. This might cause a mismatch the final output values. |  | ||||||
| As a workaround, avoid the use of inplace operations in these scenarios. |  | ||||||
| For example, in the model:: |  | ||||||
|  |  | ||||||
|     class Model(torch.nn.Module): |  | ||||||
|       def forward(self, states): |  | ||||||
|           batch_size, seq_length = states.shape[:2] |  | ||||||
|           real_seq_length = seq_length |  | ||||||
|           real_seq_length += 2 |  | ||||||
|           return real_seq_length + seq_length |  | ||||||
|  |  | ||||||
| ``real_seq_length`` and ``seq_length`` share the same memory in tracing mode. |  | ||||||
| This could be avoided by rewriting the inplace operation:: |  | ||||||
|  |  | ||||||
|     real_seq_length = real_seq_length + 2 |  | ||||||
|  |  | ||||||
| Limitations |  | ||||||
| ----------- |  | ||||||
|  |  | ||||||
| Types |  | ||||||
| ^^^^^ |  | ||||||
|  |  | ||||||
| * Only :class:`torch.Tensors`, numeric types that can be trivially converted to torch.Tensors (e.g. float, int), |  | ||||||
|   and tuples and lists of those types are supported as model inputs or outputs. Dict and str inputs and |  | ||||||
|   outputs are accepted in :ref:`tracing<tracing-vs-scripting>` mode, but: |  | ||||||
|  |  | ||||||
|   * Any computation that depends on the value of a dict or a str input **will be replaced with the |  | ||||||
|     constant value** seen during the one traced execution. |  | ||||||
|   * Any output that is a dict will be silently replaced with a **flattened sequence of its values |  | ||||||
|     (keys will be removed)**. E.g. ``{"foo": 1, "bar": 2}`` becomes ``(1, 2)``. |  | ||||||
|   * Any output that is a str will be silently removed. |  | ||||||
|  |  | ||||||
| * Certain operations involving tuples and lists are not supported in |  | ||||||
|   :ref:`scripting<tracing-vs-scripting>` mode due to limited support in ONNX for nested sequences. |  | ||||||
|   In particular appending a tuple to a list is not supported. In tracing mode, the nested sequences |  | ||||||
|   will be flattened automatically during the tracing. |  | ||||||
|  |  | ||||||
| Differences in Operator Implementations |  | ||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ |  | ||||||
|  |  | ||||||
| Due to differences in implementations of operators, running the exported model on different runtimes |  | ||||||
| may produce different results from each other or from PyTorch. Normally these differences are |  | ||||||
| numerically small, so this should only be a concern if your application is sensitive to these |  | ||||||
| small differences. |  | ||||||
|  |  | ||||||
| .. _tensor-indexing: |  | ||||||
|  |  | ||||||
| Unsupported Tensor Indexing Patterns |  | ||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ |  | ||||||
|  |  | ||||||
| Tensor indexing patterns that cannot be exported are listed below. |  | ||||||
| If you are experiencing issues exporting a model that does not include any of |  | ||||||
| the unsupported patterns below, please double check that you are exporting with |  | ||||||
| the latest ``opset_version``. |  | ||||||
|  |  | ||||||
| Reads / Gets |  | ||||||
| ~~~~~~~~~~~~ |  | ||||||
|  |  | ||||||
| When indexing into a tensor for reading, the following patterns are not supported: :: |  | ||||||
|  |  | ||||||
|   # Tensor indices that includes negative values. |  | ||||||
|   data[torch.tensor([[1, 2], [2, -3]]), torch.tensor([-2, 3])] |  | ||||||
|   # Workarounds: use positive index values. |  | ||||||
|  |  | ||||||
| Writes / Sets |  | ||||||
| ~~~~~~~~~~~~~ |  | ||||||
|  |  | ||||||
| When indexing into a Tensor for writing, the following patterns are not supported: :: |  | ||||||
|  |  | ||||||
|   # Multiple tensor indices if any has rank >= 2 |  | ||||||
|   data[torch.tensor([[1, 2], [2, 3]]), torch.tensor([2, 3])] = new_data |  | ||||||
|   # Workarounds: use single tensor index with rank >= 2, |  | ||||||
|   #              or multiple consecutive tensor indices with rank == 1. |  | ||||||
|  |  | ||||||
|   # Multiple tensor indices that are not consecutive |  | ||||||
|   data[torch.tensor([2, 3]), :, torch.tensor([1, 2])] = new_data |  | ||||||
|   # Workarounds: transpose `data` such that tensor indices are consecutive. |  | ||||||
|  |  | ||||||
|   # Tensor indices that includes negative values. |  | ||||||
|   data[torch.tensor([1, -2]), torch.tensor([-2, 3])] = new_data |  | ||||||
|   # Workarounds: use positive index values. |  | ||||||
|  |  | ||||||
|   # Implicit broadcasting required for new_data. |  | ||||||
|   data[torch.tensor([[0, 2], [1, 1]]), 1:3] = new_data |  | ||||||
|   # Workarounds: expand new_data explicitly. |  | ||||||
|   # Example: |  | ||||||
|   #   data shape: [3, 4, 5] |  | ||||||
|   #   new_data shape: [5] |  | ||||||
|   #   expected new_data shape after broadcasting: [2, 2, 2, 5] |  | ||||||
|  |  | ||||||
| Adding support for operators |  | ||||||
| ---------------------------- |  | ||||||
|  |  | ||||||
| When exporting a model that includes unsupported operators, you'll see an error message like: |  | ||||||
|  |  | ||||||
| .. code-block:: text |  | ||||||
|  |  | ||||||
|     RuntimeError: ONNX export failed: Couldn't export operator foo |  | ||||||
|  |  | ||||||
| When that happens, there are a few things you can do: |  | ||||||
|  |  | ||||||
| #. Change the model to not use that operator. |  | ||||||
| #. Create a symbolic function to convert the operator and register it as a custom symbolic function. |  | ||||||
| #. Contribute to PyTorch to add the same symbolic function to :mod:`torch.onnx` itself. |  | ||||||
|  |  | ||||||
| If you decided to implement a symbolic function (we hope you will contribute it back to PyTorch!), here is how you can get started: |  | ||||||
|  |  | ||||||
| ONNX exporter internals |  | ||||||
| ^^^^^^^^^^^^^^^^^^^^^^^ |  | ||||||
|  |  | ||||||
| A "symbolic function" is a function that decomposes a PyTorch operator into a |  | ||||||
| composition of a series of ONNX operators. |  | ||||||
|  |  | ||||||
| During export, each node (which contains a PyTorch operator) in the TorchScript |  | ||||||
| graph is visited by the exporter in topological order. |  | ||||||
| Upon visiting a node, the exporter looks for a registered symbolic functions for |  | ||||||
| that operator. Symbolic functions are implemented in Python. A symbolic function for |  | ||||||
| an op named ``foo`` would look something like:: |  | ||||||
|  |  | ||||||
|  |  | ||||||
|     def foo( |  | ||||||
|       g, |  | ||||||
|       input_0: torch._C.Value, |  | ||||||
|       input_1: torch._C.Value) -> Union[None, torch._C.Value, List[torch._C.Value]]: |  | ||||||
|       """ |  | ||||||
|       Adds the ONNX operations representing this PyTorch function by updating the |  | ||||||
|       graph g with `g.op()` calls. |  | ||||||
|  |  | ||||||
|       Args: |  | ||||||
|         g (Graph): graph to write the ONNX representation into. |  | ||||||
|         input_0 (Value): value representing the variables which contain |  | ||||||
|             the first input for this operator. |  | ||||||
|         input_1 (Value): value representing the variables which contain |  | ||||||
|             the second input for this operator. |  | ||||||
|  |  | ||||||
|       Returns: |  | ||||||
|         A Value or List of Values specifying the ONNX nodes that compute something |  | ||||||
|         equivalent to the original PyTorch operator with the given inputs. |  | ||||||
|  |  | ||||||
|         None if it cannot be converted to ONNX. |  | ||||||
|       """ |  | ||||||
|       ... |  | ||||||
|  |  | ||||||
| The ``torch._C`` types are Python wrappers around the types defined in C++ in |  | ||||||
| `ir.h <https://github.com/pytorch/pytorch/blob/main/torch/csrc/jit/ir/ir.h>`_. |  | ||||||
|  |  | ||||||
| The process for adding a symbolic function depends on the type of operator. |  | ||||||
|  |  | ||||||
| .. _adding-support-aten: |  | ||||||
|  |  | ||||||
| ATen operators |  | ||||||
| ^^^^^^^^^^^^^^ |  | ||||||
|  |  | ||||||
| `ATen <https://pytorch.org/cppdocs/#aten>`_ is PyTorch's built-in tensor library. |  | ||||||
| If the operator is an ATen operator (shows up in the TorchScript graph with the prefix |  | ||||||
| ``aten::``), make sure it is not supported already. |  | ||||||
|  |  | ||||||
| List of supported operators |  | ||||||
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~ |  | ||||||
|  |  | ||||||
| Visit the auto generated :doc:`list of supported TorchScript operators <../onnx_supported_aten_ops>` |  | ||||||
| for details on which operator are supported in each ``opset_version``. |  | ||||||
|  |  | ||||||
| Adding support for an aten or quantized operator |  | ||||||
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |  | ||||||
|  |  | ||||||
| If the operator is not in the list above: |  | ||||||
|  |  | ||||||
| * Define the symbolic function in ``torch/onnx/symbolic_opset<version>.py``, for example |  | ||||||
|   `torch/onnx/symbolic_opset9.py <https://github.com/pytorch/pytorch/blob/main/torch/onnx/symbolic_opset9.py>`_. |  | ||||||
|   Make sure the function has the same name as the ATen function, which may be declared in |  | ||||||
|   ``torch/_C/_VariableFunctions.pyi`` or ``torch/nn/functional.pyi`` (these files are generated at |  | ||||||
|   build time, so will not appear in your checkout until you build PyTorch). |  | ||||||
| * By default, the first arg is the ONNX graph. |  | ||||||
|   Other arg names must EXACTLY match the names in the ``.pyi`` file, |  | ||||||
|   because dispatch is done with keyword arguments. |  | ||||||
| * In the symbolic function, if the operator is in the |  | ||||||
|   `ONNX standard operator set <https://github.com/onnx/onnx/blob/master/docs/Operators.md>`_, |  | ||||||
|   we only need to create a node to represent the ONNX operator in the graph. |  | ||||||
|   If not, we can compose several standard operators that have the |  | ||||||
|   equivalent semantics to the ATen operator. |  | ||||||
|  |  | ||||||
| Here is an example of handling missing symbolic function for the ``ELU`` operator. |  | ||||||
|  |  | ||||||
| If we run the following code:: |  | ||||||
|  |  | ||||||
|     print( |  | ||||||
|         torch.jit.trace( |  | ||||||
|             torch.nn.ELU(), # module |  | ||||||
|             torch.ones(1)   # example input |  | ||||||
|         ).graph |  | ||||||
|     ) |  | ||||||
|  |  | ||||||
| We see something like:: |  | ||||||
|  |  | ||||||
|   graph(%self : __torch__.torch.nn.modules.activation.___torch_mangle_0.ELU, |  | ||||||
|         %input : Float(1, strides=[1], requires_grad=0, device=cpu)): |  | ||||||
|     %4 : float = prim::Constant[value=1.]() |  | ||||||
|     %5 : int = prim::Constant[value=1]() |  | ||||||
|     %6 : int = prim::Constant[value=1]() |  | ||||||
|     %7 : Float(1, strides=[1], requires_grad=0, device=cpu) = aten::elu(%input, %4, %5, %6) |  | ||||||
|     return (%7) |  | ||||||
|  |  | ||||||
| Since we see ``aten::elu`` in the graph, we know this is an ATen operator. |  | ||||||
|  |  | ||||||
| We check the `ONNX operator list <https://github.com/onnx/onnx/blob/master/docs/Operators.md>`_, |  | ||||||
| and confirm that ``Elu`` is standardized in ONNX. |  | ||||||
|  |  | ||||||
| We find a signature for ``elu`` in ``torch/nn/functional.pyi``:: |  | ||||||
|  |  | ||||||
|     def elu(input: Tensor, alpha: float = ..., inplace: bool = ...) -> Tensor: ... |  | ||||||
|  |  | ||||||
| We add the following lines to ``symbolic_opset9.py``:: |  | ||||||
|  |  | ||||||
|     def elu(g, input: torch.Value, alpha: torch.Value, inplace: bool = False): |  | ||||||
|         return g.op("Elu", input, alpha_f=alpha) |  | ||||||
|  |  | ||||||
| Now PyTorch is able to export models containing the ``aten::elu`` operator! |  | ||||||
|  |  | ||||||
| See the ``torch/onnx/symbolic_opset*.py`` files for more examples. |  | ||||||
|  |  | ||||||
|  |  | ||||||
| torch.autograd.Functions |  | ||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^ |  | ||||||
|  |  | ||||||
| If the operator is a sub-class of :class:`torch.autograd.Function`, there are three ways |  | ||||||
| to export it. |  | ||||||
|  |  | ||||||
| Static Symbolic Method |  | ||||||
| ~~~~~~~~~~~~~~~~~~~~~~ |  | ||||||
|  |  | ||||||
| You can add a static method named ``symbolic`` to your function class. It should return |  | ||||||
| ONNX operators that represent the function's behavior in ONNX. For example:: |  | ||||||
|  |  | ||||||
|     class MyRelu(torch.autograd.Function): |  | ||||||
|         @staticmethod |  | ||||||
|         def forward(ctx, input: torch.Tensor) -> torch.Tensor: |  | ||||||
|             ctx.save_for_backward(input) |  | ||||||
|             return input.clamp(min=0) |  | ||||||
|  |  | ||||||
|         @staticmethod |  | ||||||
|         def symbolic(g: torch.Graph, input: torch.Value) -> torch.Value: |  | ||||||
|             return g.op("Clip", input, g.op("Constant", value_t=torch.tensor(0, dtype=torch.float))) |  | ||||||
|  |  | ||||||
| .. FIXME(justinchuby): PythonOps are too complicated and the example below |  | ||||||
| ..  uses private methods we do not expose. We are looking to |  | ||||||
| ..  improve the experience. Since SymbolicContext is deprecated, we think |  | ||||||
| ..  defining a symbolic staticmethod is a better way to go for now. |  | ||||||
|  |  | ||||||
| .. PythonOp Symbolic |  | ||||||
| .. ~~~~~~~~~~~~~~~~~ |  | ||||||
|  |  | ||||||
| .. Alternatively, you can register a custom symbolic function. |  | ||||||
| .. This gives the symbolic function access to more info through the |  | ||||||
| .. ``torch.onnx.SymbolicContext`` object, which gets passed in as the first |  | ||||||
| .. argument (before the ``Graph`` object). |  | ||||||
|  |  | ||||||
| .. All autograd ``Function``\ s appear in the TorchScript graph as ``prim::PythonOp`` nodes. |  | ||||||
| .. In order to differentiate between different ``Function`` subclasses, the |  | ||||||
| .. symbolic function should use the ``name`` kwarg which gets set to the name of the class. |  | ||||||
|  |  | ||||||
| .. Custom symbolic functions should add type and shape information by calling ``setType(...)`` |  | ||||||
| .. on Value objects before returning them (implemented in C++ by |  | ||||||
| .. . ``torch::jit::Value::setType``). This is not required, but it can help the exporter's |  | ||||||
| .. shape and type inference for down-stream nodes. For a non-trivial example of ``setType``, see |  | ||||||
| .. ``test_aten_embedding_2`` in |  | ||||||
| .. `test_operators.py <https://github.com/pytorch/pytorch/blob/main/test/onnx/test_operators.py>`_. |  | ||||||
|  |  | ||||||
| .. The example below shows how you can access ``requires_grad`` via the ``Node`` object: |  | ||||||
|  |  | ||||||
| ..     class MyClip(torch.autograd.Function): |  | ||||||
| ..         @staticmethod |  | ||||||
| ..         def forward(ctx, input, min): |  | ||||||
| ..             ctx.save_for_backward(input) |  | ||||||
| ..             return input.clamp(min=min) |  | ||||||
|  |  | ||||||
| ..     class MyRelu(torch.autograd.Function): |  | ||||||
| ..         @staticmethod |  | ||||||
| ..         def forward(ctx, input): |  | ||||||
| ..             ctx.save_for_backward(input) |  | ||||||
| ..             return input.clamp(min=0) |  | ||||||
|  |  | ||||||
| ..     def symbolic_python_op(g: "GraphContext", *args, **kwargs): |  | ||||||
| ..         n = ctx.cur_node |  | ||||||
| ..         print("original node: ", n) |  | ||||||
| ..         for i, out in enumerate(n.outputs()): |  | ||||||
| ..             print("original output {}: {}, requires grad: {}".format(i, out, out.requiresGrad())) |  | ||||||
| ..         import torch.onnx.symbolic_helper as sym_helper |  | ||||||
| ..         for i, arg in enumerate(args): |  | ||||||
| ..             requires_grad = arg.requiresGrad() if sym_helper._is_value(arg) else False |  | ||||||
| ..             print("arg {}: {}, requires grad: {}".format(i, arg, requires_grad)) |  | ||||||
|  |  | ||||||
| ..         name = kwargs["name"] |  | ||||||
| ..         ret = None |  | ||||||
| ..         if name == "MyClip": |  | ||||||
| ..             ret = g.op("Clip", args[0], args[1]) |  | ||||||
| ..         elif name == "MyRelu": |  | ||||||
| ..             ret = g.op("Relu", args[0]) |  | ||||||
| ..         else: |  | ||||||
| ..             # Logs a warning and returns None |  | ||||||
| ..             return _unimplemented("prim::PythonOp", "unknown node kind: " + name) |  | ||||||
| ..         # Copy type and shape from original node. |  | ||||||
| ..         ret.setType(n.type()) |  | ||||||
| ..         return ret |  | ||||||
|  |  | ||||||
| ..     from torch.onnx import register_custom_op_symbolic |  | ||||||
| .. .     register_custom_op_symbolic("prim::PythonOp", symbolic_python_op, 1) |  | ||||||
|  |  | ||||||
| Inline Autograd Function |  | ||||||
| ~~~~~~~~~~~~~~~~~~~~~~~~ |  | ||||||
|  |  | ||||||
| In cases where a static symbolic method is not provided for its subsequent :class:`torch.autograd.Function` or |  | ||||||
| where a function to register ``prim::PythonOp`` as custom symbolic functions is not provided, |  | ||||||
| :func:`torch.onnx.export` tries to inline the graph that corresponds to that :class:`torch.autograd.Function` such that |  | ||||||
| this function is broken down into individual operators that were used within the function. |  | ||||||
| The export should be successful as long as these individual operators are supported. For example:: |  | ||||||
|  |  | ||||||
|     class MyLogExp(torch.autograd.Function): |  | ||||||
|         @staticmethod |  | ||||||
|         def forward(ctx, input: torch.Tensor) -> torch.Tensor: |  | ||||||
|             ctx.save_for_backward(input) |  | ||||||
|             h = input.exp() |  | ||||||
|             return h.log().log() |  | ||||||
|  |  | ||||||
| There is no static symbolic method present for this model, yet it is exported as follows:: |  | ||||||
|  |  | ||||||
|     graph(%input : Float(1, strides=[1], requires_grad=0, device=cpu)): |  | ||||||
|         %1 : float = onnx::Exp[](%input) |  | ||||||
|         %2 : float = onnx::Log[](%1) |  | ||||||
|         %3 : float = onnx::Log[](%2) |  | ||||||
|         return (%3) |  | ||||||
|  |  | ||||||
| If you need to avoid inlining of :class:`torch.autograd.Function`, you should export models with |  | ||||||
| ``operator_export_type`` set to ``ONNX_FALLTHROUGH`` or ``ONNX_ATEN_FALLBACK``. |  | ||||||
|  |  | ||||||
| Custom operators |  | ||||||
| ^^^^^^^^^^^^^^^^ |  | ||||||
|  |  | ||||||
| You can export your model with custom operators that includes a combination of many standard ONNX ops, |  | ||||||
| or are driven by self-defined C++ backend. |  | ||||||
|  |  | ||||||
| ONNX-script functions |  | ||||||
| ~~~~~~~~~~~~~~~~~~~~~ |  | ||||||
|  |  | ||||||
| If an operator is not a standard ONNX op, but can be composed of multiple existing ONNX ops, you can utilize |  | ||||||
| `ONNX-script <https://github.com/microsoft/onnx-script>`_ to create an external ONNX function to support the operator. |  | ||||||
| You can export it by following this example:: |  | ||||||
|  |  | ||||||
|     import onnxscript |  | ||||||
|     # There are three opset version needed to be aligned |  | ||||||
|     # This is (1) the opset version in ONNX function |  | ||||||
|     from onnxscript.onnx_opset import opset15 as op |  | ||||||
|     opset_version = 15 |  | ||||||
|  |  | ||||||
|     x = torch.randn(1, 2, 3, 4, requires_grad=True) |  | ||||||
|     model = torch.nn.SELU() |  | ||||||
|  |  | ||||||
|     custom_opset = onnxscript.values.Opset(domain="onnx-script", version=1) |  | ||||||
|  |  | ||||||
|     @onnxscript.script(custom_opset) |  | ||||||
|     def Selu(X): |  | ||||||
|         alpha = 1.67326  # auto wrapped as Constants |  | ||||||
|         gamma = 1.0507 |  | ||||||
|         alphaX = op.CastLike(alpha, X) |  | ||||||
|         gammaX = op.CastLike(gamma, X) |  | ||||||
|         neg = gammaX * (alphaX * op.Exp(X) - alphaX) |  | ||||||
|         pos = gammaX * X |  | ||||||
|         zero = op.CastLike(0, X) |  | ||||||
|         return op.Where(X <= zero, neg, pos) |  | ||||||
|  |  | ||||||
|     # setType API provides shape/type to ONNX shape/type inference |  | ||||||
|     def custom_selu(g: jit_utils.GraphContext, X): |  | ||||||
|         return g.onnxscript_op(Selu, X).setType(X.type()) |  | ||||||
|  |  | ||||||
|     # Register custom symbolic function |  | ||||||
|     # There are three opset version needed to be aligned |  | ||||||
|     # This is (2) the opset version in registry |  | ||||||
|     torch.onnx.register_custom_op_symbolic( |  | ||||||
|         symbolic_name="aten::selu", |  | ||||||
|         symbolic_fn=custom_selu, |  | ||||||
|         opset_version=opset_version, |  | ||||||
|     ) |  | ||||||
|  |  | ||||||
|     # There are three opset version needed to be aligned |  | ||||||
|     # This is (2) the opset version in exporter |  | ||||||
|     torch.onnx.export( |  | ||||||
|         model, |  | ||||||
|         x, |  | ||||||
|         "model.onnx", |  | ||||||
|         opset_version=opset_version, |  | ||||||
|         # only needed if you want to specify an opset version > 1. |  | ||||||
|         custom_opsets={"onnx-script": 2} |  | ||||||
|     ) |  | ||||||
|  |  | ||||||
| The example above exports it as a custom operator in the "onnx-script" opset. |  | ||||||
| When exporting a custom operator, you can specify the custom domain version using the |  | ||||||
| ``custom_opsets`` dictionary at export. If not specified, the custom opset version defaults to 1. |  | ||||||
|  |  | ||||||
| NOTE: Be careful to align the opset version mentioned in the above example, and make sure they are consumed in exporter step. |  | ||||||
| The example usage of how to write a onnx-script function is a beta version in terms of the active development on onnx-script. |  | ||||||
| Please follow the latest `ONNX-script <https://github.com/microsoft/onnx-script>`_ |  | ||||||
|  |  | ||||||
| C++ Operators |  | ||||||
| ~~~~~~~~~~~~~ |  | ||||||
|  |  | ||||||
| If a model uses a custom operator implemented in C++ as described in |  | ||||||
| `Extending TorchScript with Custom C++ Operators <https://pytorch.org/tutorials/advanced/torch_script_custom_ops.html>`_, |  | ||||||
| you can export it by following this example:: |  | ||||||
|  |  | ||||||
|     from torch.onnx import symbolic_helper |  | ||||||
|  |  | ||||||
|  |  | ||||||
|     # Define custom symbolic function |  | ||||||
|     @symbolic_helper.parse_args("v", "v", "f", "i") |  | ||||||
|     def symbolic_foo_forward(g, input1, input2, attr1, attr2): |  | ||||||
|         return g.op("custom_domain::Foo", input1, input2, attr1_f=attr1, attr2_i=attr2) |  | ||||||
|  |  | ||||||
|  |  | ||||||
|     # Register custom symbolic function |  | ||||||
|     torch.onnx.register_custom_op_symbolic("custom_ops::foo_forward", symbolic_foo_forward, 9) |  | ||||||
|  |  | ||||||
|  |  | ||||||
|     class FooModel(torch.nn.Module): |  | ||||||
|         def __init__(self, attr1, attr2): |  | ||||||
|             super().__init__() |  | ||||||
|             self.attr1 = attr1 |  | ||||||
|             self.attr2 = attr2 |  | ||||||
|  |  | ||||||
|         def forward(self, input1, input2): |  | ||||||
|             # Calling custom op |  | ||||||
|             return torch.ops.custom_ops.foo_forward(input1, input2, self.attr1, self.attr2) |  | ||||||
|  |  | ||||||
|  |  | ||||||
|     model = FooModel(attr1, attr2) |  | ||||||
|     torch.onnx.export( |  | ||||||
|         model, |  | ||||||
|         (example_input1, example_input1), |  | ||||||
|         "model.onnx", |  | ||||||
|         # only needed if you want to specify an opset version > 1. |  | ||||||
|         custom_opsets={"custom_domain": 2} |  | ||||||
|     ) |  | ||||||
|  |  | ||||||
| The example above exports it as a custom operator in the "custom_domain" opset. |  | ||||||
| When exporting a custom operator, you can specify the custom domain version using the |  | ||||||
| ``custom_opsets`` dictionary at export. If not specified, the custom opset version defaults to 1. |  | ||||||
|  |  | ||||||
| The runtime that consumes the model needs to support the custom op. See |  | ||||||
| `Caffe2 custom ops <https://caffe2.ai/docs/custom-operators.html>`_, |  | ||||||
| `ONNX Runtime custom ops <https://onnxruntime.ai/docs/reference/operators/add-custom-op.html>`_, |  | ||||||
| or your runtime of choice's documentation. |  | ||||||
|  |  | ||||||
|  |  | ||||||
| Discovering all unconvertible ATen ops at once |  | ||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ |  | ||||||
|  |  | ||||||
| When export fails due to an unconvertible ATen op, there may in fact be more |  | ||||||
| than one such op but the error message only mentions the first. To discover |  | ||||||
| all of the unconvertible ops in one go you can:: |  | ||||||
|  |  | ||||||
|     # prepare model, args, opset_version |  | ||||||
|     ... |  | ||||||
|  |  | ||||||
|     torch_script_graph, unconvertible_ops = torch.onnx.utils.unconvertible_ops( |  | ||||||
|         model, args, opset_version=opset_version |  | ||||||
|     ) |  | ||||||
|  |  | ||||||
|     print(set(unconvertible_ops)) |  | ||||||
|  |  | ||||||
| The set is approximated because some ops may be removed during the conversion |  | ||||||
| process and don't need to be converted. Some other ops may have partial support |  | ||||||
| that will fail conversion with particular inputs, but this should give you a |  | ||||||
| general idea of what ops are not supported. Please feel free to open GitHub Issues |  | ||||||
| for op support requests. |  | ||||||
|  |  | ||||||
| Frequently Asked Questions |  | ||||||
| -------------------------- |  | ||||||
| Q: I have exported my LSTM model, but its input size seems to be fixed? |  | ||||||
|  |  | ||||||
|   The tracer records the shapes of the example inputs. If the model should accept |  | ||||||
|   inputs of dynamic shapes, set ``dynamic_axes`` when calling :func:`torch.onnx.export`. |  | ||||||
|  |  | ||||||
| Q: How to export models containing loops? |  | ||||||
|  |  | ||||||
|   See `Tracing vs Scripting`_. |  | ||||||
|  |  | ||||||
| Q: How to export models with primitive type inputs (e.g. int, float)? |  | ||||||
|  |  | ||||||
|   Support for primitive numeric type inputs was added in PyTorch 1.9. |  | ||||||
|   However, the exporter does not support models with str inputs. |  | ||||||
|  |  | ||||||
| Q: Does ONNX support implicit scalar datatype casting? |  | ||||||
|  |  | ||||||
|   The ONNX standard does not, but the exporter will try to handle that part. |  | ||||||
|   Scalars are exported as constant tensors. |  | ||||||
|   The exporter will figure out the right data type for scalars. In rare cases when it is unable |  | ||||||
|   to do so, you will need to manually specify the datatype with e.g. `dtype=torch.float32`. |  | ||||||
|   If you see any errors, please [create a GitHub issue](https://github.com/pytorch/pytorch/issues). |  | ||||||
|  |  | ||||||
| Q: Are lists of Tensors exportable to ONNX? |  | ||||||
|  |  | ||||||
|   Yes, for ``opset_version`` >= 11, since ONNX introduced the Sequence type in opset 11. |  | ||||||
|  |  | ||||||
|  |  | ||||||
| Contributing / developing |  | ||||||
| ------------------------- | ------------------------- | ||||||
| `Developer docs <https://github.com/pytorch/pytorch/wiki/PyTorch-ONNX-exporter>`_. |  | ||||||
|  |  | ||||||
| Functions | The ONNX exporter is a community project and we welcome contributions. We follow the | ||||||
| --------- | `PyTorch guidelines for contributions <https://github.com/pytorch/pytorch/blob/main/CONTRIBUTING.md>`_, but you might | ||||||
| .. autofunction:: export | also be interested in reading our `development wiki <https://github.com/pytorch/pytorch/wiki/PyTorch-ONNX-exporter>`_. | ||||||
| .. autofunction:: export_to_pretty_string |  | ||||||
| .. autofunction:: register_custom_op_symbolic |  | ||||||
| .. autofunction:: unregister_custom_op_symbolic |  | ||||||
| .. autofunction:: select_model_mode_for_export |  | ||||||
| .. autofunction:: is_in_onnx_export |  | ||||||
| .. autofunction:: enable_log |  | ||||||
| .. autofunction:: disable_log |  | ||||||
| .. autofunction:: torch.onnx.verification.find_mismatch |  | ||||||
|  |  | ||||||
| Classes | .. toctree:: | ||||||
| ------- |     :hidden: | ||||||
|  |  | ||||||
| .. autosummary:: |     onnx_dynamo | ||||||
|     :toctree: generated |     onnx_dynamo_onnxruntime_backend | ||||||
|     :nosignatures: |     onnx_torchscript | ||||||
|     :template: classtemplate.rst |  | ||||||
|  |  | ||||||
|     JitScalarType |  | ||||||
|     torch.onnx.verification.GraphInfo |  | ||||||
|     torch.onnx.verification.VerificationOptions |  | ||||||
|  |  | ||||||
| Preview: torch.onnx TorchDynamo Exporter |  | ||||||
| ---------------------------------------- |  | ||||||
|  |  | ||||||
| .. warning:: |  | ||||||
|   The ONNX exporter for TorchDynamo is under active development and is |  | ||||||
|   subject to rapid change. |  | ||||||
|  |  | ||||||
| .. autofunction:: torch.onnx.dynamo_export |  | ||||||
| .. autofunction:: torch.onnx.enable_fake_mode |  | ||||||
| .. autofunction:: torch.onnx.is_onnxrt_backend_supported |  | ||||||
|  |  | ||||||
| .. autosummary:: |  | ||||||
|     :toctree: generated |  | ||||||
|     :nosignatures: |  | ||||||
|     :template: classtemplate.rst |  | ||||||
|  |  | ||||||
|     torch.onnx.DiagnosticOptions |  | ||||||
|     torch.onnx.ExportOptions |  | ||||||
|     torch.onnx.ExportOutput |  | ||||||
|     torch.onnx.ExportOutputSerializer |  | ||||||
|     torch.onnx.OnnxExporterError |  | ||||||
|     torch.onnx.OnnxRegistry |  | ||||||
|  | |||||||
| @ -1,26 +0,0 @@ | |||||||
| torch.onnx diagnostics |  | ||||||
| ====================== |  | ||||||
|  |  | ||||||
| .. contents:: :local: |  | ||||||
| .. automodule:: torch.onnx._internal.diagnostics |  | ||||||
| .. currentmodule:: torch.onnx._internal.diagnostics |  | ||||||
|  |  | ||||||
| Overview |  | ||||||
| -------- |  | ||||||
|  |  | ||||||
| NOTE: This feature is underdevelopment and is subject to change. |  | ||||||
|  |  | ||||||
| The goal is to improve the diagnostics to help users debug and improve their model export to ONNX. |  | ||||||
|  |  | ||||||
| - The diagnostics are emitted in machine parsable `Static Analysis Results Interchange Format (SARIF) <https://docs.oasis-open.org/sarif/sarif/v2.1.0/sarif-v2.1.0.html>`__. |  | ||||||
| - A new clearer, structured way to add new and keep track of diagnostic rules. |  | ||||||
| - Serve as foundation for more future improvements consuming the diagnostics. |  | ||||||
|  |  | ||||||
|  |  | ||||||
| Diagnostic Rules |  | ||||||
| ---------------- |  | ||||||
|  |  | ||||||
| .. toctree:: |  | ||||||
|     :glob: |  | ||||||
|  |  | ||||||
|     generated/onnx_diagnostics_rules/* |  | ||||||
							
								
								
									
										156
									
								
								docs/source/onnx_dynamo.rst
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										156
									
								
								docs/source/onnx_dynamo.rst
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,156 @@ | |||||||
|  | TorchDynamo-based ONNX Exporter | ||||||
|  | =============================== | ||||||
|  |  | ||||||
|  | .. automodule:: torch.onnx | ||||||
|  |   :noindex: | ||||||
|  |  | ||||||
|  | .. contents:: :local: | ||||||
|  |     :depth: 3 | ||||||
|  |  | ||||||
|  | .. warning:: | ||||||
|  |   The ONNX exporter for TorchDynamo is a rapidly evolving beta technology. | ||||||
|  |  | ||||||
|  | Overview | ||||||
|  | -------- | ||||||
|  |  | ||||||
|  | The ONNX exporter leverages TorchDynamo engine to hook into Python's frame evaluation API | ||||||
|  | and dynamically rewrite its bytecode into an FX Graph. | ||||||
|  | The resulting FX Graph is then polished before it is finally translated into an ONNX graph. | ||||||
|  |  | ||||||
|  | The main advantage of this approach is that the `FX graph <https://pytorch.org/docs/stable/fx.html>`_ is captured using | ||||||
|  | bytecode analysis that preserves the dynamic nature of the model instead of using traditional static tracing techniques. | ||||||
|  |  | ||||||
|  | The exporter is designed to be modular and extensible. It is composed of the following components: | ||||||
|  |  | ||||||
|  |   - **ONNX Exporter**: :class:`Exporter` main class that orchestrates the export process. | ||||||
|  |   - **ONNX Export Options**: :class:`ExportOptions` has a set of options that control the export process. | ||||||
|  |   - **ONNX Registry**: :class:`OnnxRegistry` is the registry of ONNX operators and functions. | ||||||
|  |   - **FX Graph Extractor**: :class:`FXGraphExtractor` extracts the FX graph from the PyTorch model. | ||||||
|  |   - **Fake Mode**: :class:`ONNXFakeContext` is a context manager that enables fake mode for large scale models. | ||||||
|  |   - **ONNX Export Output**: :class:`ExportOutput` is the output of the exporter that contains the exported ONNX graph and diagnostics. | ||||||
|  |   - **ONNX Export Output Serializer**: :class:`ExportOutputSerializer` serializes the exported model to a file. | ||||||
|  |   - **ONNX Diagnostic Options**: :class:`DiagnosticOptions` has a set of options that control the diagnostics emitted by the exporter. | ||||||
|  |  | ||||||
|  | Dependencies | ||||||
|  | ------------ | ||||||
|  |  | ||||||
|  | The ONNX exporter depends on extra Python packages: | ||||||
|  |  | ||||||
|  |   - `ONNX <https://onnx.ai>`_ | ||||||
|  |   - `ONNX Script <https://onnxscript.ai>`_ | ||||||
|  |  | ||||||
|  | They can be installed through `pip <https://pypi.org/project/pip/>`_: | ||||||
|  |  | ||||||
|  | .. code-block:: bash | ||||||
|  |  | ||||||
|  |   pip install --upgrade onnx onnxscript | ||||||
|  |  | ||||||
|  | A simple example | ||||||
|  | ---------------- | ||||||
|  |  | ||||||
|  | See below a demonstration of exporter API in action with a simple Multilayer Perceptron (MLP) as example: | ||||||
|  |  | ||||||
|  | .. code-block:: python | ||||||
|  |  | ||||||
|  |   import torch | ||||||
|  |  | ||||||
|  |   class MLPModel(nn.Module): | ||||||
|  |     def __init__(self): | ||||||
|  |         super().__init__() | ||||||
|  |         self.fc0 = nn.Linear(8, 8, bias=True) | ||||||
|  |         self.fc1 = nn.Linear(8, 4, bias=True) | ||||||
|  |         self.fc2 = nn.Linear(4, 2, bias=True) | ||||||
|  |         self.fc3 = nn.Linear(2, 2, bias=True) | ||||||
|  |  | ||||||
|  |     def forward(self, tensor_x: torch.Tensor): | ||||||
|  |         tensor_x = self.fc0(tensor_x) | ||||||
|  |         tensor_x = torch.sigmoid(tensor_x) | ||||||
|  |         tensor_x = self.fc1(tensor_x) | ||||||
|  |         tensor_x = torch.sigmoid(tensor_x) | ||||||
|  |         tensor_x = self.fc2(tensor_x) | ||||||
|  |         tensor_x = torch.sigmoid(tensor_x) | ||||||
|  |         output = self.fc3(tensor_x) | ||||||
|  |         return output | ||||||
|  |  | ||||||
|  |   model = MLPModel() | ||||||
|  |   tensor_x = torch.rand((97, 8), dtype=torch.float32) | ||||||
|  |   export_output = torch.onnx.dynamo_export(model, tensor_x) | ||||||
|  |  | ||||||
|  | As the code above shows, all you need is to provide :func:`torch.onnx.dynamo_export` with an instance of the model and its input. | ||||||
|  | The exporter will then return an instance of :class:`torch.onnx.ExportOutput` that contains the exported ONNX graph along with extra information. | ||||||
|  |  | ||||||
|  | The in-memory model available through ``export_output.model_proto`` is an ``onnx.ModelProto`` object in compliance with the `ONNX IR spec <https://github.com/onnx/onnx/blob/main/docs/IR.md>`_. | ||||||
|  | The ONNX model may then be serialized into a `Protobuf file <https://protobuf.dev/>`_ using the :meth:`torch.onnx.ExportOutput.save` API. | ||||||
|  |  | ||||||
|  | .. code-block:: python | ||||||
|  |  | ||||||
|  |   export_output.save("mlp.onnx") | ||||||
|  |  | ||||||
|  | Inspecting the ONNX model using GUI | ||||||
|  | ----------------------------------- | ||||||
|  |  | ||||||
|  | You can view the exported model using `Netron <https://netron.app/>`__. | ||||||
|  |  | ||||||
|  | .. image:: _static/img/onnx/onnx_dynamo_mlp_model.png | ||||||
|  |     :width: 40% | ||||||
|  |     :alt: MLP model as viewed using Netron | ||||||
|  |  | ||||||
|  | Note that each layer is represented in a rectangular box with a *f* icon in the top right corner. | ||||||
|  |  | ||||||
|  | .. image:: _static/img/onnx/onnx_dynamo_mlp_model_function_highlight.png | ||||||
|  |     :width: 40% | ||||||
|  |     :alt: ONNX function highlighted on MLP model | ||||||
|  |  | ||||||
|  | By expanding it, the function body is shown. | ||||||
|  |  | ||||||
|  | .. image:: _static/img/onnx/onnx_dynamo_mlp_model_function_body.png | ||||||
|  |     :width: 50% | ||||||
|  |     :alt: ONNX function body | ||||||
|  |  | ||||||
|  | The function body is a sequence of ONNX operators or other functions. | ||||||
|  |  | ||||||
|  | Diagnosing issues with SARIF | ||||||
|  | ---------------------------- | ||||||
|  |  | ||||||
|  | ONNX diagnostics goes beyond regular logs through the adoption of | ||||||
|  | `Static Analysis Results Interchange Format (aka SARIF) <https://docs.oasis-open.org/sarif/sarif/v2.1.0/sarif-v2.1.0.html>`__ | ||||||
|  | to help users debug and improve their model using a GUI, such as | ||||||
|  | Visual Studio Code's `SARIF Viewer <https://marketplace.visualstudio.com/items?itemName=MS-SarifVSCode.sarif-viewer>`_. | ||||||
|  |  | ||||||
|  | The main advantages are: | ||||||
|  |  | ||||||
|  |   - The diagnostics are emitted in machine parseable `Static Analysis Results Interchange Format (SARIF) <https://docs.oasis-open.org/sarif/sarif/v2.1.0/sarif-v2.1.0.html>`__. | ||||||
|  |   - A new clearer, structured way to add new and keep track of diagnostic rules. | ||||||
|  |   - Serve as foundation for more future improvements consuming the diagnostics. | ||||||
|  |  | ||||||
|  | .. toctree:: | ||||||
|  |    :maxdepth: 1 | ||||||
|  |    :caption: ONNX Diagnostic SARIF Rules | ||||||
|  |    :glob: | ||||||
|  |  | ||||||
|  |    generated/onnx_dynamo_diagnostics_rules/* | ||||||
|  |  | ||||||
|  | API Reference | ||||||
|  | ------------- | ||||||
|  |  | ||||||
|  | .. autofunction:: torch.onnx.dynamo_export | ||||||
|  |  | ||||||
|  | .. autoclass:: torch.onnx.ExportOptions | ||||||
|  |     :members: | ||||||
|  |  | ||||||
|  | .. autofunction:: torch.onnx.enable_fake_mode | ||||||
|  |  | ||||||
|  | .. autoclass:: torch.onnx.ExportOutput | ||||||
|  |     :members: | ||||||
|  |  | ||||||
|  | .. autoclass:: torch.onnx.ExportOutputSerializer | ||||||
|  |     :members: | ||||||
|  |  | ||||||
|  | .. autoclass:: torch.onnx.OnnxExporterError | ||||||
|  |     :members: | ||||||
|  |  | ||||||
|  | .. autoclass:: torch.onnx.OnnxRegistry | ||||||
|  |     :members: | ||||||
|  |  | ||||||
|  | .. autoclass:: torch.onnx.DiagnosticOptions | ||||||
|  |     :members: | ||||||
							
								
								
									
										9
									
								
								docs/source/onnx_dynamo_onnxruntime_backend.rst
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								docs/source/onnx_dynamo_onnxruntime_backend.rst
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,9 @@ | |||||||
|  | ONNX Backend for TorchDynamo | ||||||
|  | ============================ | ||||||
|  |  | ||||||
|  | For a quick overview of ``torch.compiler``, see :ref:`torch.compiler_overview`. | ||||||
|  |  | ||||||
|  | .. warning:: | ||||||
|  |   The ONNX backend for torch.compile is a rapidly evolving beta technology. | ||||||
|  |  | ||||||
|  | .. autofunction:: torch.onnx.is_onnxrt_backend_supported | ||||||
							
								
								
									
										719
									
								
								docs/source/onnx_torchscript.rst
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										719
									
								
								docs/source/onnx_torchscript.rst
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,719 @@ | |||||||
|  | TorchScript-based ONNX Exporter | ||||||
|  | =============================== | ||||||
|  |  | ||||||
|  | .. note:: | ||||||
|  |     To export an ONNX model using TorchDynamo instead of TorchScript, see :func:`torch.onnx.dynamo_export`. | ||||||
|  |  | ||||||
|  | .. contents:: :local: | ||||||
|  |  | ||||||
|  | Example: AlexNet from PyTorch to ONNX | ||||||
|  | ------------------------------------- | ||||||
|  |  | ||||||
|  | Here is a simple script which exports a pretrained AlexNet to an ONNX file named ``alexnet.onnx``. | ||||||
|  | The call to ``torch.onnx.export`` runs the model once to trace its execution and then exports the | ||||||
|  | traced model to the specified file:: | ||||||
|  |  | ||||||
|  |     import torch | ||||||
|  |     import torchvision | ||||||
|  |  | ||||||
|  |     dummy_input = torch.randn(10, 3, 224, 224, device="cuda") | ||||||
|  |     model = torchvision.models.alexnet(pretrained=True).cuda() | ||||||
|  |  | ||||||
|  |     # Providing input and output names sets the display names for values | ||||||
|  |     # within the model's graph. Setting these does not change the semantics | ||||||
|  |     # of the graph; it is only for readability. | ||||||
|  |     # | ||||||
|  |     # The inputs to the network consist of the flat list of inputs (i.e. | ||||||
|  |     # the values you would pass to the forward() method) followed by the | ||||||
|  |     # flat list of parameters. You can partially specify names, i.e. provide | ||||||
|  |     # a list here shorter than the number of inputs to the model, and we will | ||||||
|  |     # only set that subset of names, starting from the beginning. | ||||||
|  |     input_names = [ "actual_input_1" ] + [ "learned_%d" % i for i in range(16) ] | ||||||
|  |     output_names = [ "output1" ] | ||||||
|  |  | ||||||
|  |     torch.onnx.export(model, dummy_input, "alexnet.onnx", verbose=True, input_names=input_names, output_names=output_names) | ||||||
|  |  | ||||||
|  | The resulting ``alexnet.onnx`` file contains a binary `protocol buffer <https://developers.google.com/protocol-buffers/>`_ | ||||||
|  | which contains both the network structure and parameters of the model you exported | ||||||
|  | (in this case, AlexNet).  The argument ``verbose=True`` causes the | ||||||
|  | exporter to print out a human-readable representation of the model:: | ||||||
|  |  | ||||||
|  |     # These are the inputs and parameters to the network, which have taken on | ||||||
|  |     # the names we specified earlier. | ||||||
|  |     graph(%actual_input_1 : Float(10, 3, 224, 224) | ||||||
|  |           %learned_0 : Float(64, 3, 11, 11) | ||||||
|  |           %learned_1 : Float(64) | ||||||
|  |           %learned_2 : Float(192, 64, 5, 5) | ||||||
|  |           %learned_3 : Float(192) | ||||||
|  |           # ---- omitted for brevity ---- | ||||||
|  |           %learned_14 : Float(1000, 4096) | ||||||
|  |           %learned_15 : Float(1000)) { | ||||||
|  |       # Every statement consists of some output tensors (and their types), | ||||||
|  |       # the operator to be run (with its attributes, e.g., kernels, strides, | ||||||
|  |       # etc.), its input tensors (%actual_input_1, %learned_0, %learned_1) | ||||||
|  |       %17 : Float(10, 64, 55, 55) = onnx::Conv[dilations=[1, 1], group=1, kernel_shape=[11, 11], pads=[2, 2, 2, 2], strides=[4, 4]](%actual_input_1, %learned_0, %learned_1), scope: AlexNet/Sequential[features]/Conv2d[0] | ||||||
|  |       %18 : Float(10, 64, 55, 55) = onnx::Relu(%17), scope: AlexNet/Sequential[features]/ReLU[1] | ||||||
|  |       %19 : Float(10, 64, 27, 27) = onnx::MaxPool[kernel_shape=[3, 3], pads=[0, 0, 0, 0], strides=[2, 2]](%18), scope: AlexNet/Sequential[features]/MaxPool2d[2] | ||||||
|  |       # ---- omitted for brevity ---- | ||||||
|  |       %29 : Float(10, 256, 6, 6) = onnx::MaxPool[kernel_shape=[3, 3], pads=[0, 0, 0, 0], strides=[2, 2]](%28), scope: AlexNet/Sequential[features]/MaxPool2d[12] | ||||||
|  |       # Dynamic means that the shape is not known. This may be because of a | ||||||
|  |       # limitation of our implementation (which we would like to fix in a | ||||||
|  |       # future release) or shapes which are truly dynamic. | ||||||
|  |       %30 : Dynamic = onnx::Shape(%29), scope: AlexNet | ||||||
|  |       %31 : Dynamic = onnx::Slice[axes=[0], ends=[1], starts=[0]](%30), scope: AlexNet | ||||||
|  |       %32 : Long() = onnx::Squeeze[axes=[0]](%31), scope: AlexNet | ||||||
|  |       %33 : Long() = onnx::Constant[value={9216}](), scope: AlexNet | ||||||
|  |       # ---- omitted for brevity ---- | ||||||
|  |       %output1 : Float(10, 1000) = onnx::Gemm[alpha=1, beta=1, broadcast=1, transB=1](%45, %learned_14, %learned_15), scope: AlexNet/Sequential[classifier]/Linear[6] | ||||||
|  |       return (%output1); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  | You can also verify the output using the `ONNX <https://github.com/onnx/onnx/>`_ library, | ||||||
|  | which you can install using ``pip``:: | ||||||
|  |  | ||||||
|  |     pip install onnx | ||||||
|  |  | ||||||
|  | Then, you can run:: | ||||||
|  |  | ||||||
|  |     import onnx | ||||||
|  |  | ||||||
|  |     # Load the ONNX model | ||||||
|  |     model = onnx.load("alexnet.onnx") | ||||||
|  |  | ||||||
|  |     # Check that the model is well formed | ||||||
|  |     onnx.checker.check_model(model) | ||||||
|  |  | ||||||
|  |     # Print a human readable representation of the graph | ||||||
|  |     print(onnx.helper.printable_graph(model.graph)) | ||||||
|  |  | ||||||
|  | You can also run the exported model with one of the many | ||||||
|  | `runtimes that support ONNX <https://onnx.ai/supported-tools.html#deployModel>`_. | ||||||
|  | For example after installing `ONNX Runtime <https://www.onnxruntime.ai>`_, you can | ||||||
|  | load and run the model:: | ||||||
|  |  | ||||||
|  |     import onnxruntime as ort | ||||||
|  |     import numpy as np | ||||||
|  |  | ||||||
|  |     ort_session = ort.InferenceSession("alexnet.onnx") | ||||||
|  |  | ||||||
|  |     outputs = ort_session.run( | ||||||
|  |         None, | ||||||
|  |         {"actual_input_1": np.random.randn(10, 3, 224, 224).astype(np.float32)}, | ||||||
|  |     ) | ||||||
|  |     print(outputs[0]) | ||||||
|  |  | ||||||
|  | Here is a more involved `tutorial on exporting a model and running it with ONNX Runtime <https://pytorch.org/tutorials/advanced/super_resolution_with_onnxruntime.html>`_. | ||||||
|  |  | ||||||
|  | .. _tracing-vs-scripting: | ||||||
|  |  | ||||||
|  | Tracing vs Scripting | ||||||
|  | -------------------- | ||||||
|  |  | ||||||
|  | Internally, :func:`torch.onnx.export()` requires a :class:`torch.jit.ScriptModule` rather than | ||||||
|  | a :class:`torch.nn.Module`. If the passed-in model is not already a ``ScriptModule``, | ||||||
|  | ``export()`` will use *tracing* to convert it to one: | ||||||
|  |  | ||||||
|  | .. TODO(justinchuby): Add a word on recommending tracing over scripting for most use cases. | ||||||
|  |  | ||||||
|  | * **Tracing**: If ``torch.onnx.export()`` is called with a Module that is not already a | ||||||
|  |   ``ScriptModule``, it first does the equivalent of :func:`torch.jit.trace`, which executes the model | ||||||
|  |   once with the given ``args`` and records all operations that happen during that execution. This | ||||||
|  |   means that if your model is dynamic, e.g., changes behavior depending on input data, the exported | ||||||
|  |   model will *not* capture this dynamic behavior. | ||||||
|  |   We recommend examining the exported model and making sure the operators look | ||||||
|  |   reasonable. Tracing will unroll loops and if statements, exporting a static graph that is exactly | ||||||
|  |   the same as the traced run. If you want to export your model with dynamic control flow, you will | ||||||
|  |   need to use *scripting*. | ||||||
|  |  | ||||||
|  | * **Scripting**: Compiling a model via scripting preserves dynamic control flow and is valid for inputs | ||||||
|  |   of different sizes. To use scripting: | ||||||
|  |  | ||||||
|  |   * Use :func:`torch.jit.script` to produce a ``ScriptModule``. | ||||||
|  |   * Call ``torch.onnx.export()`` with the ``ScriptModule`` as the model. The ``args`` are still required, | ||||||
|  |     but they will be used internally only to produce example outputs, so that the types and shapes of the | ||||||
|  |     outputs can be captured. No tracing will be performed. | ||||||
|  |  | ||||||
|  | See `Introduction to TorchScript <https://pytorch.org/tutorials/beginner/Intro_to_TorchScript_tutorial.html>`_ | ||||||
|  | and `TorchScript <jit.html>`_ for more details, including how to compose tracing and scripting to suit the | ||||||
|  | particular requirements of different models. | ||||||
|  |  | ||||||
|  |  | ||||||
|  | Avoiding Pitfalls | ||||||
|  | ----------------- | ||||||
|  |  | ||||||
|  | Avoid NumPy and built-in Python types | ||||||
|  | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ||||||
|  |  | ||||||
|  | PyTorch models can be written using NumPy or Python types and functions, but | ||||||
|  | during :ref:`tracing<tracing-vs-scripting>`, any variables of NumPy or Python | ||||||
|  | types (rather than torch.Tensor) are converted to constants, which will produce | ||||||
|  | the wrong result if those values should change depending on the inputs. | ||||||
|  |  | ||||||
|  | For example, rather than using numpy functions on numpy.ndarrays: :: | ||||||
|  |  | ||||||
|  |     # Bad! Will be replaced with constants during tracing. | ||||||
|  |     x, y = np.random.rand(1, 2), np.random.rand(1, 2) | ||||||
|  |     np.concatenate((x, y), axis=1) | ||||||
|  |  | ||||||
|  | Use torch operators on torch.Tensors: :: | ||||||
|  |  | ||||||
|  |     # Good! Tensor operations will be captured during tracing. | ||||||
|  |     x, y = torch.randn(1, 2), torch.randn(1, 2) | ||||||
|  |     torch.cat((x, y), dim=1) | ||||||
|  |  | ||||||
|  |  | ||||||
|  | And rather than use :func:`torch.Tensor.item` (which converts a Tensor to a Python | ||||||
|  | built-in number): :: | ||||||
|  |  | ||||||
|  |     # Bad! y.item() will be replaced with a constant during tracing. | ||||||
|  |     def forward(self, x, y): | ||||||
|  |         return x.reshape(y.item(), -1) | ||||||
|  |  | ||||||
|  | Use torch's support for implicit casting of single-element tensors: :: | ||||||
|  |  | ||||||
|  |     # Good! y will be preserved as a variable during tracing. | ||||||
|  |     def forward(self, x, y): | ||||||
|  |         return x.reshape(y, -1) | ||||||
|  |  | ||||||
|  | Avoid Tensor.data | ||||||
|  | ^^^^^^^^^^^^^^^^^ | ||||||
|  |  | ||||||
|  | Using the Tensor.data field can produce an incorrect trace and therefore an incorrect ONNX graph. | ||||||
|  | Use :func:`torch.Tensor.detach` instead. (Work is ongoing to | ||||||
|  | `remove Tensor.data entirely <https://github.com/pytorch/pytorch/issues/30987>`_). | ||||||
|  |  | ||||||
|  | Avoid in-place operations when using tensor.shape in tracing mode | ||||||
|  | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ||||||
|  |  | ||||||
|  | In tracing mode, shapes obtained from ``tensor.shape`` are traced as tensors, | ||||||
|  | and share the same memory. This might cause a mismatch the final output values. | ||||||
|  | As a workaround, avoid the use of inplace operations in these scenarios. | ||||||
|  | For example, in the model:: | ||||||
|  |  | ||||||
|  |     class Model(torch.nn.Module): | ||||||
|  |       def forward(self, states): | ||||||
|  |           batch_size, seq_length = states.shape[:2] | ||||||
|  |           real_seq_length = seq_length | ||||||
|  |           real_seq_length += 2 | ||||||
|  |           return real_seq_length + seq_length | ||||||
|  |  | ||||||
|  | ``real_seq_length`` and ``seq_length`` share the same memory in tracing mode. | ||||||
|  | This could be avoided by rewriting the inplace operation:: | ||||||
|  |  | ||||||
|  |     real_seq_length = real_seq_length + 2 | ||||||
|  |  | ||||||
|  | Limitations | ||||||
|  | ----------- | ||||||
|  |  | ||||||
|  | Types | ||||||
|  | ^^^^^ | ||||||
|  |  | ||||||
|  | * Only :class:`torch.Tensors`, numeric types that can be trivially converted to torch.Tensors (e.g. float, int), | ||||||
|  |   and tuples and lists of those types are supported as model inputs or outputs. Dict and str inputs and | ||||||
|  |   outputs are accepted in :ref:`tracing<tracing-vs-scripting>` mode, but: | ||||||
|  |  | ||||||
|  |   * Any computation that depends on the value of a dict or a str input **will be replaced with the | ||||||
|  |     constant value** seen during the one traced execution. | ||||||
|  |   * Any output that is a dict will be silently replaced with a **flattened sequence of its values | ||||||
|  |     (keys will be removed)**. E.g. ``{"foo": 1, "bar": 2}`` becomes ``(1, 2)``. | ||||||
|  |   * Any output that is a str will be silently removed. | ||||||
|  |  | ||||||
|  | * Certain operations involving tuples and lists are not supported in | ||||||
|  |   :ref:`scripting<tracing-vs-scripting>` mode due to limited support in ONNX for nested sequences. | ||||||
|  |   In particular appending a tuple to a list is not supported. In tracing mode, the nested sequences | ||||||
|  |   will be flattened automatically during the tracing. | ||||||
|  |  | ||||||
|  | Differences in Operator Implementations | ||||||
|  | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ||||||
|  |  | ||||||
|  | Due to differences in implementations of operators, running the exported model on different runtimes | ||||||
|  | may produce different results from each other or from PyTorch. Normally these differences are | ||||||
|  | numerically small, so this should only be a concern if your application is sensitive to these | ||||||
|  | small differences. | ||||||
|  |  | ||||||
|  | .. _tensor-indexing: | ||||||
|  |  | ||||||
|  | Unsupported Tensor Indexing Patterns | ||||||
|  | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ||||||
|  |  | ||||||
|  | Tensor indexing patterns that cannot be exported are listed below. | ||||||
|  | If you are experiencing issues exporting a model that does not include any of | ||||||
|  | the unsupported patterns below, please double check that you are exporting with | ||||||
|  | the latest ``opset_version``. | ||||||
|  |  | ||||||
|  | Reads / Gets | ||||||
|  | ~~~~~~~~~~~~ | ||||||
|  |  | ||||||
|  | When indexing into a tensor for reading, the following patterns are not supported: :: | ||||||
|  |  | ||||||
|  |   # Tensor indices that includes negative values. | ||||||
|  |   data[torch.tensor([[1, 2], [2, -3]]), torch.tensor([-2, 3])] | ||||||
|  |   # Workarounds: use positive index values. | ||||||
|  |  | ||||||
|  | Writes / Sets | ||||||
|  | ~~~~~~~~~~~~~ | ||||||
|  |  | ||||||
|  | When indexing into a Tensor for writing, the following patterns are not supported: :: | ||||||
|  |  | ||||||
|  |   # Multiple tensor indices if any has rank >= 2 | ||||||
|  |   data[torch.tensor([[1, 2], [2, 3]]), torch.tensor([2, 3])] = new_data | ||||||
|  |   # Workarounds: use single tensor index with rank >= 2, | ||||||
|  |   #              or multiple consecutive tensor indices with rank == 1. | ||||||
|  |  | ||||||
|  |   # Multiple tensor indices that are not consecutive | ||||||
|  |   data[torch.tensor([2, 3]), :, torch.tensor([1, 2])] = new_data | ||||||
|  |   # Workarounds: transpose `data` such that tensor indices are consecutive. | ||||||
|  |  | ||||||
|  |   # Tensor indices that includes negative values. | ||||||
|  |   data[torch.tensor([1, -2]), torch.tensor([-2, 3])] = new_data | ||||||
|  |   # Workarounds: use positive index values. | ||||||
|  |  | ||||||
|  |   # Implicit broadcasting required for new_data. | ||||||
|  |   data[torch.tensor([[0, 2], [1, 1]]), 1:3] = new_data | ||||||
|  |   # Workarounds: expand new_data explicitly. | ||||||
|  |   # Example: | ||||||
|  |   #   data shape: [3, 4, 5] | ||||||
|  |   #   new_data shape: [5] | ||||||
|  |   #   expected new_data shape after broadcasting: [2, 2, 2, 5] | ||||||
|  |  | ||||||
|  | Adding support for operators | ||||||
|  | ---------------------------- | ||||||
|  |  | ||||||
|  | When exporting a model that includes unsupported operators, you'll see an error message like: | ||||||
|  |  | ||||||
|  | .. code-block:: text | ||||||
|  |  | ||||||
|  |     RuntimeError: ONNX export failed: Couldn't export operator foo | ||||||
|  |  | ||||||
|  | When that happens, there are a few things you can do: | ||||||
|  |  | ||||||
|  | #. Change the model to not use that operator. | ||||||
|  | #. Create a symbolic function to convert the operator and register it as a custom symbolic function. | ||||||
|  | #. Contribute to PyTorch to add the same symbolic function to :mod:`torch.onnx` itself. | ||||||
|  |  | ||||||
|  | If you decided to implement a symbolic function (we hope you will contribute it back to PyTorch!), here is how you can get started: | ||||||
|  |  | ||||||
|  | ONNX exporter internals | ||||||
|  | ^^^^^^^^^^^^^^^^^^^^^^^ | ||||||
|  |  | ||||||
|  | A "symbolic function" is a function that decomposes a PyTorch operator into a | ||||||
|  | composition of a series of ONNX operators. | ||||||
|  |  | ||||||
|  | During export, each node (which contains a PyTorch operator) in the TorchScript | ||||||
|  | graph is visited by the exporter in topological order. | ||||||
|  | Upon visiting a node, the exporter looks for a registered symbolic functions for | ||||||
|  | that operator. Symbolic functions are implemented in Python. A symbolic function for | ||||||
|  | an op named ``foo`` would look something like:: | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     def foo( | ||||||
|  |       g, | ||||||
|  |       input_0: torch._C.Value, | ||||||
|  |       input_1: torch._C.Value) -> Union[None, torch._C.Value, List[torch._C.Value]]: | ||||||
|  |       """ | ||||||
|  |       Adds the ONNX operations representing this PyTorch function by updating the | ||||||
|  |       graph g with `g.op()` calls. | ||||||
|  |  | ||||||
|  |       Args: | ||||||
|  |         g (Graph): graph to write the ONNX representation into. | ||||||
|  |         input_0 (Value): value representing the variables which contain | ||||||
|  |             the first input for this operator. | ||||||
|  |         input_1 (Value): value representing the variables which contain | ||||||
|  |             the second input for this operator. | ||||||
|  |  | ||||||
|  |       Returns: | ||||||
|  |         A Value or List of Values specifying the ONNX nodes that compute something | ||||||
|  |         equivalent to the original PyTorch operator with the given inputs. | ||||||
|  |  | ||||||
|  |         None if it cannot be converted to ONNX. | ||||||
|  |       """ | ||||||
|  |       ... | ||||||
|  |  | ||||||
|  | The ``torch._C`` types are Python wrappers around the types defined in C++ in | ||||||
|  | `ir.h <https://github.com/pytorch/pytorch/blob/main/torch/csrc/jit/ir/ir.h>`_. | ||||||
|  |  | ||||||
|  | The process for adding a symbolic function depends on the type of operator. | ||||||
|  |  | ||||||
|  | .. _adding-support-aten: | ||||||
|  |  | ||||||
|  | ATen operators | ||||||
|  | ^^^^^^^^^^^^^^ | ||||||
|  |  | ||||||
|  | `ATen <https://pytorch.org/cppdocs/#aten>`_ is PyTorch's built-in tensor library. | ||||||
|  | If the operator is an ATen operator (shows up in the TorchScript graph with the prefix | ||||||
|  | ``aten::``), make sure it is not supported already. | ||||||
|  |  | ||||||
|  | List of supported operators | ||||||
|  | ~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||||||
|  |  | ||||||
|  | Visit the auto generated :doc:`list of supported TorchScript operators <../onnx_torchscript_supported_aten_ops>` | ||||||
|  | for details on which operator are supported in each ``opset_version``. | ||||||
|  |  | ||||||
|  | Adding support for an aten or quantized operator | ||||||
|  | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||||||
|  |  | ||||||
|  | If the operator is not in the list above: | ||||||
|  |  | ||||||
|  | * Define the symbolic function in ``torch/onnx/symbolic_opset<version>.py``, for example | ||||||
|  |   `torch/onnx/symbolic_opset9.py <https://github.com/pytorch/pytorch/blob/main/torch/onnx/symbolic_opset9.py>`_. | ||||||
|  |   Make sure the function has the same name as the ATen function, which may be declared in | ||||||
|  |   ``torch/_C/_VariableFunctions.pyi`` or ``torch/nn/functional.pyi`` (these files are generated at | ||||||
|  |   build time, so will not appear in your checkout until you build PyTorch). | ||||||
|  | * By default, the first arg is the ONNX graph. | ||||||
|  |   Other arg names must EXACTLY match the names in the ``.pyi`` file, | ||||||
|  |   because dispatch is done with keyword arguments. | ||||||
|  | * In the symbolic function, if the operator is in the | ||||||
|  |   `ONNX standard operator set <https://github.com/onnx/onnx/blob/master/docs/Operators.md>`_, | ||||||
|  |   we only need to create a node to represent the ONNX operator in the graph. | ||||||
|  |   If not, we can compose several standard operators that have the | ||||||
|  |   equivalent semantics to the ATen operator. | ||||||
|  |  | ||||||
|  | Here is an example of handling missing symbolic function for the ``ELU`` operator. | ||||||
|  |  | ||||||
|  | If we run the following code:: | ||||||
|  |  | ||||||
|  |     print( | ||||||
|  |         torch.jit.trace( | ||||||
|  |             torch.nn.ELU(), # module | ||||||
|  |             torch.ones(1)   # example input | ||||||
|  |         ).graph | ||||||
|  |     ) | ||||||
|  |  | ||||||
|  | We see something like:: | ||||||
|  |  | ||||||
|  |   graph(%self : __torch__.torch.nn.modules.activation.___torch_mangle_0.ELU, | ||||||
|  |         %input : Float(1, strides=[1], requires_grad=0, device=cpu)): | ||||||
|  |     %4 : float = prim::Constant[value=1.]() | ||||||
|  |     %5 : int = prim::Constant[value=1]() | ||||||
|  |     %6 : int = prim::Constant[value=1]() | ||||||
|  |     %7 : Float(1, strides=[1], requires_grad=0, device=cpu) = aten::elu(%input, %4, %5, %6) | ||||||
|  |     return (%7) | ||||||
|  |  | ||||||
|  | Since we see ``aten::elu`` in the graph, we know this is an ATen operator. | ||||||
|  |  | ||||||
|  | We check the `ONNX operator list <https://github.com/onnx/onnx/blob/master/docs/Operators.md>`_, | ||||||
|  | and confirm that ``Elu`` is standardized in ONNX. | ||||||
|  |  | ||||||
|  | We find a signature for ``elu`` in ``torch/nn/functional.pyi``:: | ||||||
|  |  | ||||||
|  |     def elu(input: Tensor, alpha: float = ..., inplace: bool = ...) -> Tensor: ... | ||||||
|  |  | ||||||
|  | We add the following lines to ``symbolic_opset9.py``:: | ||||||
|  |  | ||||||
|  |     def elu(g, input: torch.Value, alpha: torch.Value, inplace: bool = False): | ||||||
|  |         return g.op("Elu", input, alpha_f=alpha) | ||||||
|  |  | ||||||
|  | Now PyTorch is able to export models containing the ``aten::elu`` operator! | ||||||
|  |  | ||||||
|  | See the ``torch/onnx/symbolic_opset*.py`` files for more examples. | ||||||
|  |  | ||||||
|  |  | ||||||
|  | torch.autograd.Functions | ||||||
|  | ^^^^^^^^^^^^^^^^^^^^^^^^ | ||||||
|  |  | ||||||
|  | If the operator is a sub-class of :class:`torch.autograd.Function`, there are three ways | ||||||
|  | to export it. | ||||||
|  |  | ||||||
|  | Static Symbolic Method | ||||||
|  | ~~~~~~~~~~~~~~~~~~~~~~ | ||||||
|  |  | ||||||
|  | You can add a static method named ``symbolic`` to your function class. It should return | ||||||
|  | ONNX operators that represent the function's behavior in ONNX. For example:: | ||||||
|  |  | ||||||
|  |     class MyRelu(torch.autograd.Function): | ||||||
|  |         @staticmethod | ||||||
|  |         def forward(ctx, input: torch.Tensor) -> torch.Tensor: | ||||||
|  |             ctx.save_for_backward(input) | ||||||
|  |             return input.clamp(min=0) | ||||||
|  |  | ||||||
|  |         @staticmethod | ||||||
|  |         def symbolic(g: torch.Graph, input: torch.Value) -> torch.Value: | ||||||
|  |             return g.op("Clip", input, g.op("Constant", value_t=torch.tensor(0, dtype=torch.float))) | ||||||
|  |  | ||||||
|  | .. FIXME(justinchuby): PythonOps are too complicated and the example below | ||||||
|  | ..  uses private methods we do not expose. We are looking to | ||||||
|  | ..  improve the experience. Since SymbolicContext is deprecated, we think | ||||||
|  | ..  defining a symbolic staticmethod is a better way to go for now. | ||||||
|  |  | ||||||
|  | .. PythonOp Symbolic | ||||||
|  | .. ~~~~~~~~~~~~~~~~~ | ||||||
|  |  | ||||||
|  | .. Alternatively, you can register a custom symbolic function. | ||||||
|  | .. This gives the symbolic function access to more info through the | ||||||
|  | .. ``torch.onnx.SymbolicContext`` object, which gets passed in as the first | ||||||
|  | .. argument (before the ``Graph`` object). | ||||||
|  |  | ||||||
|  | .. All autograd ``Function``\ s appear in the TorchScript graph as ``prim::PythonOp`` nodes. | ||||||
|  | .. In order to differentiate between different ``Function`` subclasses, the | ||||||
|  | .. symbolic function should use the ``name`` kwarg which gets set to the name of the class. | ||||||
|  |  | ||||||
|  | .. Custom symbolic functions should add type and shape information by calling ``setType(...)`` | ||||||
|  | .. on Value objects before returning them (implemented in C++ by | ||||||
|  | .. . ``torch::jit::Value::setType``). This is not required, but it can help the exporter's | ||||||
|  | .. shape and type inference for down-stream nodes. For a non-trivial example of ``setType``, see | ||||||
|  | .. ``test_aten_embedding_2`` in | ||||||
|  | .. `test_operators.py <https://github.com/pytorch/pytorch/blob/main/test/onnx/test_operators.py>`_. | ||||||
|  |  | ||||||
|  | .. The example below shows how you can access ``requires_grad`` via the ``Node`` object: | ||||||
|  |  | ||||||
|  | ..     class MyClip(torch.autograd.Function): | ||||||
|  | ..         @staticmethod | ||||||
|  | ..         def forward(ctx, input, min): | ||||||
|  | ..             ctx.save_for_backward(input) | ||||||
|  | ..             return input.clamp(min=min) | ||||||
|  |  | ||||||
|  | ..     class MyRelu(torch.autograd.Function): | ||||||
|  | ..         @staticmethod | ||||||
|  | ..         def forward(ctx, input): | ||||||
|  | ..             ctx.save_for_backward(input) | ||||||
|  | ..             return input.clamp(min=0) | ||||||
|  |  | ||||||
|  | ..     def symbolic_python_op(g: "GraphContext", *args, **kwargs): | ||||||
|  | ..         n = ctx.cur_node | ||||||
|  | ..         print("original node: ", n) | ||||||
|  | ..         for i, out in enumerate(n.outputs()): | ||||||
|  | ..             print("original output {}: {}, requires grad: {}".format(i, out, out.requiresGrad())) | ||||||
|  | ..         import torch.onnx.symbolic_helper as sym_helper | ||||||
|  | ..         for i, arg in enumerate(args): | ||||||
|  | ..             requires_grad = arg.requiresGrad() if sym_helper._is_value(arg) else False | ||||||
|  | ..             print("arg {}: {}, requires grad: {}".format(i, arg, requires_grad)) | ||||||
|  |  | ||||||
|  | ..         name = kwargs["name"] | ||||||
|  | ..         ret = None | ||||||
|  | ..         if name == "MyClip": | ||||||
|  | ..             ret = g.op("Clip", args[0], args[1]) | ||||||
|  | ..         elif name == "MyRelu": | ||||||
|  | ..             ret = g.op("Relu", args[0]) | ||||||
|  | ..         else: | ||||||
|  | ..             # Logs a warning and returns None | ||||||
|  | ..             return _unimplemented("prim::PythonOp", "unknown node kind: " + name) | ||||||
|  | ..         # Copy type and shape from original node. | ||||||
|  | ..         ret.setType(n.type()) | ||||||
|  | ..         return ret | ||||||
|  |  | ||||||
|  | ..     from torch.onnx import register_custom_op_symbolic | ||||||
|  | .. .     register_custom_op_symbolic("prim::PythonOp", symbolic_python_op, 1) | ||||||
|  |  | ||||||
|  | Inline Autograd Function | ||||||
|  | ~~~~~~~~~~~~~~~~~~~~~~~~ | ||||||
|  |  | ||||||
|  | In cases where a static symbolic method is not provided for its subsequent :class:`torch.autograd.Function` or | ||||||
|  | where a function to register ``prim::PythonOp`` as custom symbolic functions is not provided, | ||||||
|  | :func:`torch.onnx.export` tries to inline the graph that corresponds to that :class:`torch.autograd.Function` such that | ||||||
|  | this function is broken down into individual operators that were used within the function. | ||||||
|  | The export should be successful as long as these individual operators are supported. For example:: | ||||||
|  |  | ||||||
|  |     class MyLogExp(torch.autograd.Function): | ||||||
|  |         @staticmethod | ||||||
|  |         def forward(ctx, input: torch.Tensor) -> torch.Tensor: | ||||||
|  |             ctx.save_for_backward(input) | ||||||
|  |             h = input.exp() | ||||||
|  |             return h.log().log() | ||||||
|  |  | ||||||
|  | There is no static symbolic method present for this model, yet it is exported as follows:: | ||||||
|  |  | ||||||
|  |     graph(%input : Float(1, strides=[1], requires_grad=0, device=cpu)): | ||||||
|  |         %1 : float = onnx::Exp[](%input) | ||||||
|  |         %2 : float = onnx::Log[](%1) | ||||||
|  |         %3 : float = onnx::Log[](%2) | ||||||
|  |         return (%3) | ||||||
|  |  | ||||||
|  | If you need to avoid inlining of :class:`torch.autograd.Function`, you should export models with | ||||||
|  | ``operator_export_type`` set to ``ONNX_FALLTHROUGH`` or ``ONNX_ATEN_FALLBACK``. | ||||||
|  |  | ||||||
|  | Custom operators | ||||||
|  | ^^^^^^^^^^^^^^^^ | ||||||
|  |  | ||||||
|  | You can export your model with custom operators that includes a combination of many standard ONNX ops, | ||||||
|  | or are driven by self-defined C++ backend. | ||||||
|  |  | ||||||
|  | ONNX-script functions | ||||||
|  | ~~~~~~~~~~~~~~~~~~~~~ | ||||||
|  |  | ||||||
|  | If an operator is not a standard ONNX op, but can be composed of multiple existing ONNX ops, you can utilize | ||||||
|  | `ONNX-script <https://github.com/microsoft/onnx-script>`_ to create an external ONNX function to support the operator. | ||||||
|  | You can export it by following this example:: | ||||||
|  |  | ||||||
|  |     import onnxscript | ||||||
|  |     # There are three opset version needed to be aligned | ||||||
|  |     # This is (1) the opset version in ONNX function | ||||||
|  |     from onnxscript.onnx_opset import opset15 as op | ||||||
|  |     opset_version = 15 | ||||||
|  |  | ||||||
|  |     x = torch.randn(1, 2, 3, 4, requires_grad=True) | ||||||
|  |     model = torch.nn.SELU() | ||||||
|  |  | ||||||
|  |     custom_opset = onnxscript.values.Opset(domain="onnx-script", version=1) | ||||||
|  |  | ||||||
|  |     @onnxscript.script(custom_opset) | ||||||
|  |     def Selu(X): | ||||||
|  |         alpha = 1.67326  # auto wrapped as Constants | ||||||
|  |         gamma = 1.0507 | ||||||
|  |         alphaX = op.CastLike(alpha, X) | ||||||
|  |         gammaX = op.CastLike(gamma, X) | ||||||
|  |         neg = gammaX * (alphaX * op.Exp(X) - alphaX) | ||||||
|  |         pos = gammaX * X | ||||||
|  |         zero = op.CastLike(0, X) | ||||||
|  |         return op.Where(X <= zero, neg, pos) | ||||||
|  |  | ||||||
|  |     # setType API provides shape/type to ONNX shape/type inference | ||||||
|  |     def custom_selu(g: jit_utils.GraphContext, X): | ||||||
|  |         return g.onnxscript_op(Selu, X).setType(X.type()) | ||||||
|  |  | ||||||
|  |     # Register custom symbolic function | ||||||
|  |     # There are three opset version needed to be aligned | ||||||
|  |     # This is (2) the opset version in registry | ||||||
|  |     torch.onnx.register_custom_op_symbolic( | ||||||
|  |         symbolic_name="aten::selu", | ||||||
|  |         symbolic_fn=custom_selu, | ||||||
|  |         opset_version=opset_version, | ||||||
|  |     ) | ||||||
|  |  | ||||||
|  |     # There are three opset version needed to be aligned | ||||||
|  |     # This is (2) the opset version in exporter | ||||||
|  |     torch.onnx.export( | ||||||
|  |         model, | ||||||
|  |         x, | ||||||
|  |         "model.onnx", | ||||||
|  |         opset_version=opset_version, | ||||||
|  |         # only needed if you want to specify an opset version > 1. | ||||||
|  |         custom_opsets={"onnx-script": 2} | ||||||
|  |     ) | ||||||
|  |  | ||||||
|  | The example above exports it as a custom operator in the "onnx-script" opset. | ||||||
|  | When exporting a custom operator, you can specify the custom domain version using the | ||||||
|  | ``custom_opsets`` dictionary at export. If not specified, the custom opset version defaults to 1. | ||||||
|  |  | ||||||
|  | NOTE: Be careful to align the opset version mentioned in the above example, and make sure they are consumed in exporter step. | ||||||
|  | The example usage of how to write a onnx-script function is a beta version in terms of the active development on onnx-script. | ||||||
|  | Please follow the latest `ONNX-script <https://github.com/microsoft/onnx-script>`_ | ||||||
|  |  | ||||||
|  | C++ Operators | ||||||
|  | ~~~~~~~~~~~~~ | ||||||
|  |  | ||||||
|  | If a model uses a custom operator implemented in C++ as described in | ||||||
|  | `Extending TorchScript with Custom C++ Operators <https://pytorch.org/tutorials/advanced/torch_script_custom_ops.html>`_, | ||||||
|  | you can export it by following this example:: | ||||||
|  |  | ||||||
|  |     from torch.onnx import symbolic_helper | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     # Define custom symbolic function | ||||||
|  |     @symbolic_helper.parse_args("v", "v", "f", "i") | ||||||
|  |     def symbolic_foo_forward(g, input1, input2, attr1, attr2): | ||||||
|  |         return g.op("custom_domain::Foo", input1, input2, attr1_f=attr1, attr2_i=attr2) | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     # Register custom symbolic function | ||||||
|  |     torch.onnx.register_custom_op_symbolic("custom_ops::foo_forward", symbolic_foo_forward, 9) | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     class FooModel(torch.nn.Module): | ||||||
|  |         def __init__(self, attr1, attr2): | ||||||
|  |             super().__init__() | ||||||
|  |             self.attr1 = attr1 | ||||||
|  |             self.attr2 = attr2 | ||||||
|  |  | ||||||
|  |         def forward(self, input1, input2): | ||||||
|  |             # Calling custom op | ||||||
|  |             return torch.ops.custom_ops.foo_forward(input1, input2, self.attr1, self.attr2) | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     model = FooModel(attr1, attr2) | ||||||
|  |     torch.onnx.export( | ||||||
|  |         model, | ||||||
|  |         (example_input1, example_input1), | ||||||
|  |         "model.onnx", | ||||||
|  |         # only needed if you want to specify an opset version > 1. | ||||||
|  |         custom_opsets={"custom_domain": 2} | ||||||
|  |     ) | ||||||
|  |  | ||||||
|  | The example above exports it as a custom operator in the "custom_domain" opset. | ||||||
|  | When exporting a custom operator, you can specify the custom domain version using the | ||||||
|  | ``custom_opsets`` dictionary at export. If not specified, the custom opset version defaults to 1. | ||||||
|  |  | ||||||
|  | The runtime that consumes the model needs to support the custom op. See | ||||||
|  | `Caffe2 custom ops <https://caffe2.ai/docs/custom-operators.html>`_, | ||||||
|  | `ONNX Runtime custom ops <https://onnxruntime.ai/docs/reference/operators/add-custom-op.html>`_, | ||||||
|  | or your runtime of choice's documentation. | ||||||
|  |  | ||||||
|  |  | ||||||
|  | Discovering all unconvertible ATen ops at once | ||||||
|  | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ||||||
|  |  | ||||||
|  | When export fails due to an unconvertible ATen op, there may in fact be more | ||||||
|  | than one such op but the error message only mentions the first. To discover | ||||||
|  | all of the unconvertible ops in one go you can:: | ||||||
|  |  | ||||||
|  |     # prepare model, args, opset_version | ||||||
|  |     ... | ||||||
|  |  | ||||||
|  |     torch_script_graph, unconvertible_ops = torch.onnx.utils.unconvertible_ops( | ||||||
|  |         model, args, opset_version=opset_version | ||||||
|  |     ) | ||||||
|  |  | ||||||
|  |     print(set(unconvertible_ops)) | ||||||
|  |  | ||||||
|  | The set is approximated because some ops may be removed during the conversion | ||||||
|  | process and don't need to be converted. Some other ops may have partial support | ||||||
|  | that will fail conversion with particular inputs, but this should give you a | ||||||
|  | general idea of what ops are not supported. Please feel free to open GitHub Issues | ||||||
|  | for op support requests. | ||||||
|  |  | ||||||
|  | Frequently Asked Questions | ||||||
|  | -------------------------- | ||||||
|  | Q: I have exported my LSTM model, but its input size seems to be fixed? | ||||||
|  |  | ||||||
|  |   The tracer records the shapes of the example inputs. If the model should accept | ||||||
|  |   inputs of dynamic shapes, set ``dynamic_axes`` when calling :func:`torch.onnx.export`. | ||||||
|  |  | ||||||
|  | Q: How to export models containing loops? | ||||||
|  |  | ||||||
|  |   See `Tracing vs Scripting`_. | ||||||
|  |  | ||||||
|  | Q: How to export models with primitive type inputs (e.g. int, float)? | ||||||
|  |  | ||||||
|  |   Support for primitive numeric type inputs was added in PyTorch 1.9. | ||||||
|  |   However, the exporter does not support models with str inputs. | ||||||
|  |  | ||||||
|  | Q: Does ONNX support implicit scalar datatype casting? | ||||||
|  |  | ||||||
|  |   The ONNX standard does not, but the exporter will try to handle that part. | ||||||
|  |   Scalars are exported as constant tensors. | ||||||
|  |   The exporter will figure out the right data type for scalars. In rare cases when it is unable | ||||||
|  |   to do so, you will need to manually specify the datatype with e.g. `dtype=torch.float32`. | ||||||
|  |   If you see any errors, please [create a GitHub issue](https://github.com/pytorch/pytorch/issues). | ||||||
|  |  | ||||||
|  | Q: Are lists of Tensors exportable to ONNX? | ||||||
|  |  | ||||||
|  |   Yes, for ``opset_version`` >= 11, since ONNX introduced the Sequence type in opset 11. | ||||||
|  |  | ||||||
|  | Python API | ||||||
|  | ---------- | ||||||
|  |  | ||||||
|  | .. automodule:: torch.onnx | ||||||
|  |  | ||||||
|  | Functions | ||||||
|  | ^^^^^^^^^ | ||||||
|  |  | ||||||
|  | .. autofunction:: export | ||||||
|  | .. autofunction:: export_to_pretty_string | ||||||
|  | .. autofunction:: register_custom_op_symbolic | ||||||
|  | .. autofunction:: unregister_custom_op_symbolic | ||||||
|  | .. autofunction:: select_model_mode_for_export | ||||||
|  | .. autofunction:: is_in_onnx_export | ||||||
|  | .. autofunction:: enable_log | ||||||
|  | .. autofunction:: disable_log | ||||||
|  | .. autofunction:: torch.onnx.verification.find_mismatch | ||||||
|  |  | ||||||
|  | Classes | ||||||
|  | ^^^^^^^ | ||||||
|  |  | ||||||
|  | .. autosummary:: | ||||||
|  |     :toctree: generated | ||||||
|  |     :nosignatures: | ||||||
|  |     :template: classtemplate.rst | ||||||
|  |  | ||||||
|  |     JitScalarType | ||||||
|  |     torch.onnx.verification.GraphInfo | ||||||
|  |     torch.onnx.verification.VerificationOptions | ||||||
| @ -5,7 +5,7 @@ ONNX supported TorchScript operators | |||||||
| 
 | 
 | ||||||
| .. This file is automatically generated during the documentation build | .. This file is automatically generated during the documentation build | ||||||
| .. by cross referencing ONNX operator symbolics with TorchScript operators via | .. by cross referencing ONNX operator symbolics with TorchScript operators via | ||||||
| .. ``docs/source/scripts/build_onnx_supported_aten_op_csv_table.py``. | .. ``docs/source/scripts/build_onnx_torchscript_supported_aten_op_csv_table.py``. | ||||||
| .. Do not modify directly and instead `rebuild the docs <https://github.com/pytorch/pytorch#building-the-documentation>`_. | .. Do not modify directly and instead `rebuild the docs <https://github.com/pytorch/pytorch#building-the-documentation>`_. | ||||||
| 
 | 
 | ||||||
| This page lists the TorchScript operators that are supported/unsupported by ONNX export. | This page lists the TorchScript operators that are supported/unsupported by ONNX export. | ||||||
| @ -119,7 +119,9 @@ def generate_index_rst(example_cases, tag_to_modules, support_level_to_modules): | |||||||
|         blurb = file.read() |         blurb = file.read() | ||||||
|  |  | ||||||
|     # Generate contents of the .rst file |     # Generate contents of the .rst file | ||||||
|     doc_contents = f"""ExportDB |     doc_contents = f""".. _torch.export_db: | ||||||
|  |  | ||||||
|  | ExportDB | ||||||
| ======== | ======== | ||||||
|  |  | ||||||
| {blurb} | {blurb} | ||||||
|  | |||||||
| @ -575,6 +575,7 @@ Tensor class reference | |||||||
|     Tensor.reciprocal_ |     Tensor.reciprocal_ | ||||||
|     Tensor.record_stream |     Tensor.record_stream | ||||||
|     Tensor.register_hook |     Tensor.register_hook | ||||||
|  |     Tensor.register_post_accumulate_grad_hook | ||||||
|     Tensor.remainder |     Tensor.remainder | ||||||
|     Tensor.remainder_ |     Tensor.remainder_ | ||||||
|     Tensor.renorm |     Tensor.renorm | ||||||
|  | |||||||
| @ -37,7 +37,7 @@ TorchDynamo requires a backend that converts the captured graphs into a fast | |||||||
| machine code. Different backends can result in various optimization gains. | machine code. Different backends can result in various optimization gains. | ||||||
| The default backend is called TorchInductor, also known as *inductor*, | The default backend is called TorchInductor, also known as *inductor*, | ||||||
| TorchDynamo has a list of supported backends developed by our partners, | TorchDynamo has a list of supported backends developed by our partners, | ||||||
| which can be see by running ``torch.compile.list_backends()`` each of which | which can be see by running ``torch.compiler.list_backends()`` each of which | ||||||
| with its optional dependencies. | with its optional dependencies. | ||||||
|  |  | ||||||
| Some of the most commonly used backends include: | Some of the most commonly used backends include: | ||||||
| @ -54,6 +54,10 @@ Some of the most commonly used backends include: | |||||||
|      - Uses the TorchInductor backend. `Read more <https://dev-discuss.pytorch.org/t/torchinductor-a-pytorch-native-compiler-with-define-by-run-ir-and-symbolic-shapes/747>`__ |      - Uses the TorchInductor backend. `Read more <https://dev-discuss.pytorch.org/t/torchinductor-a-pytorch-native-compiler-with-define-by-run-ir-and-symbolic-shapes/747>`__ | ||||||
|    * - ``torch.compile(m, backend="cudagraphs")`` |    * - ``torch.compile(m, backend="cudagraphs")`` | ||||||
|      - CUDA graphs with AOT Autograd. `Read more <https://github.com/pytorch/torchdynamo/pull/757>`__ |      - CUDA graphs with AOT Autograd. `Read more <https://github.com/pytorch/torchdynamo/pull/757>`__ | ||||||
|  |    * - ``torch.compile(m, backend="ipex")`` | ||||||
|  |      - Uses IPEX on CPU. `Read more <https://github.com/intel/intel-extension-for-pytorch>`__ | ||||||
|  |    * - ``torch.compile(m, backend="onnxrt")`` | ||||||
|  |      - Uses ONNX Runtime for training on CPU/GPU. :doc:`Read more <onnx_dynamo_onnxruntime_backend>` | ||||||
|  |  | ||||||
| **Inference-only backends** | **Inference-only backends** | ||||||
|  |  | ||||||
| @ -63,10 +67,8 @@ Some of the most commonly used backends include: | |||||||
|  |  | ||||||
|    * - Backend |    * - Backend | ||||||
|      - Description |      - Description | ||||||
|    * - ``torch.compile(m, backend="onnxrt")`` |  | ||||||
|      - Uses ONNXRT for inference on CPU/GPU. `Read more <https://onnxruntime.ai/>`__ |  | ||||||
|    * - ``torch.compile(m, backend="tensorrt")`` |    * - ``torch.compile(m, backend="tensorrt")`` | ||||||
|      - Uses ONNXRT to run TensorRT for inference optimizations. `Read more <https://github.com/onnx/onnx-tensorrt>`__ |      - Uses ONNX Runtime to run TensorRT for inference optimizations. `Read more <https://github.com/onnx/onnx-tensorrt>`__ | ||||||
|    * - ``torch.compile(m, backend="ipex")`` |    * - ``torch.compile(m, backend="ipex")`` | ||||||
|      - Uses IPEX for inference on CPU. `Read more <https://github.com/intel/intel-extension-for-pytorch>`__ |      - Uses IPEX for inference on CPU. `Read more <https://github.com/intel/intel-extension-for-pytorch>`__ | ||||||
|    * - ``torch.compile(m, backend="tvm")`` |    * - ``torch.compile(m, backend="tvm")`` | ||||||
|  | |||||||
| @ -19,25 +19,27 @@ In supporting dynamic shapes, we chose not to support dynamic rank programs, e.g | |||||||
| Abridged public API | Abridged public API | ||||||
| ------------------- | ------------------- | ||||||
|  |  | ||||||
| The eventual plan: | The default dynamic behavior in PyTorch 2.1 is: | ||||||
|  |  | ||||||
| - PT2 assumes everything is static by default | - PT2 assumes everything is static by default | ||||||
| - If we recompile because a size changed, we will instead attempt to recompile that size as being dynamic (so we will never recompile because of that size again) |  | ||||||
| - If you know ahead of time something will be dynamic, you can skip the first recompile with ``torch._dynamo.mark_dynamic(tensor, dim)`` |  | ||||||
| - If you say ``torch.compile(dynamic=True)`` we will attempt to make as much dynamic as possible |  | ||||||
|  |  | ||||||
| Unbacked integers for eager mode: | - If we recompile because a size changed, we will instead attempt to recompile | ||||||
|  |   that size as being dynamic (sizes that have changed are likely to change in | ||||||
|  |   the future).  This generalization may fail (e.g., because user code does a | ||||||
|  |   conditional branch on the size in question or missing dynamic shapes support | ||||||
|  |   in PT2).  If you are trying to understand why PT2 has overspecialized some | ||||||
|  |   code, run with ``TORCH_LOGS=dynamic`` and look for "eval" entries that say | ||||||
|  |   when guards are added and why. | ||||||
|  |  | ||||||
| What we have currently: | - If you know ahead of time something will be dynamic, you can skip the first | ||||||
|  |   recompile with ``torch._dynamo.mark_dynamic(tensor, dim)``. | ||||||
|  |  | ||||||
| - You must explicitly opt into dynamic shapes with ``torch._dynamo.config.automatic_dynamic_shapes = True`` or ``torch.compile(dynamic=True)`` | - If you say ``torch.compile(dynamic=False)``, we will turn off automatic | ||||||
| - ``torch.compile(dynamic=True)`` proactively attempts to make everything dynamic |   dynamic shapes on recompiles and always recompile for each distinct size. | ||||||
| - ``torch._dynamo.config.automatic_dynamic_shapes`` will assume everything is |   Conversely, if you say ``torch.compile(dynamic=True)``, we will try to make | ||||||
|   static, but if we recompile because a size varied, the next time we will try |   everything as dynamic as possible.  This is mostly useful for small | ||||||
|   to compile it dynamically |   operators; if you try it on a big model it will (1) probably crash PT2 and | ||||||
| - ``torch._dynamo.mark_dynamic`` works |   (2) run slow for no good reason. | ||||||
|  |  | ||||||
| Use ``TORCH_LOGS=dynamic`` to view more information about what is going on with dynamic shapes. |  | ||||||
|  |  | ||||||
| The Guard Model | The Guard Model | ||||||
| --------------- | --------------- | ||||||
| @ -114,3 +116,10 @@ Naively implemented, this is too restrictive: most PyTorch programs will immedia | |||||||
| - On tensor creation, PyTorch precomputes a lot of data about a tensor; for example, if you use ``empty_strided`` to create a tensor, we will eagerly sort the strides and determine if the tensor is non-overlapping and dense. Sorts produce a lot of guards. However, it is more common to produce a tensor directly with a higher-level API like ``empty``, which is guaranteed to produce a non-overlapping and dense tensor. We modified PyTorch to avoid needlessly recomputing these properties. | - On tensor creation, PyTorch precomputes a lot of data about a tensor; for example, if you use ``empty_strided`` to create a tensor, we will eagerly sort the strides and determine if the tensor is non-overlapping and dense. Sorts produce a lot of guards. However, it is more common to produce a tensor directly with a higher-level API like ``empty``, which is guaranteed to produce a non-overlapping and dense tensor. We modified PyTorch to avoid needlessly recomputing these properties. | ||||||
| - Even if nontrivial compute is needed, sometimes a property is never actually queried at all. Making these precomputed properties lazy allows us to avoid guarding on an unbacked symbolic integer unless it is actually needed. | - Even if nontrivial compute is needed, sometimes a property is never actually queried at all. Making these precomputed properties lazy allows us to avoid guarding on an unbacked symbolic integer unless it is actually needed. | ||||||
| - The data in an integer tensor is generally not known to be non-negative. However, we provide an API ``constrain_range`` whereby a user can specify that a size is bounded above and below by known limits. | - The data in an integer tensor is generally not known to be non-negative. However, we provide an API ``constrain_range`` whereby a user can specify that a size is bounded above and below by known limits. | ||||||
|  |  | ||||||
|  | In future versions of PT2 (beyond PT2.1), we will extend our reasoning system | ||||||
|  | to infer that an unbacked symbolic integer is size-like based on usage.  For | ||||||
|  | example, if you pass the result of an ``.item()`` call to a factory function | ||||||
|  | like ``torch.empty``, we will automatically infer that the result is a size | ||||||
|  | (because if it was not, it would fail.)  This assumption would get validated | ||||||
|  | at runtime, raising an error if it was not fulfilled. | ||||||
|  | |||||||
| @ -317,47 +317,12 @@ them by default: ``env TORCHDYNAMO_DYNAMIC_SHAPES=0 python model.py`` 2. | |||||||
| CUDA graphs with Triton are enabled by default in inductor but removing | CUDA graphs with Triton are enabled by default in inductor but removing | ||||||
| them may alleviate some OOM issues: ``torch._inductor.config.triton.cudagraphs = False``. | them may alleviate some OOM issues: ``torch._inductor.config.triton.cudagraphs = False``. | ||||||
|  |  | ||||||
| ``torch.func`` does not work with ``torch.compile`` | Does ``torch.func`` work with ``torch.compile`` (for `grad` and `vmap` transforms)? | ||||||
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||||||
|  |  | ||||||
| Applying a ``torch.func`` transform to a function that uses ``torch.compile`` | Applying a ``torch.func`` transform to a function that uses ``torch.compile`` | ||||||
| does not work: | does not work: | ||||||
|  |  | ||||||
| .. code-block:: python |  | ||||||
|  |  | ||||||
|     import torch |  | ||||||
|  |  | ||||||
|     @torch.compile |  | ||||||
|     def f(x): |  | ||||||
|         return torch.sin(x) |  | ||||||
|  |  | ||||||
|     def g(x): |  | ||||||
|         return torch.grad(f)(x) |  | ||||||
|  |  | ||||||
|     x = torch.randn(2, 3) |  | ||||||
|     g(x) |  | ||||||
|  |  | ||||||
| As a workaround, use ``torch.compile`` outside of the ``torch.func`` function: |  | ||||||
|  |  | ||||||
| .. code-block:: python |  | ||||||
|  |  | ||||||
|     import torch |  | ||||||
|  |  | ||||||
|     def f(x): |  | ||||||
|         return torch.sin(x) |  | ||||||
|  |  | ||||||
|     @torch.compile |  | ||||||
|     def g(x): |  | ||||||
|         return torch.vmap(f)(x) |  | ||||||
|  |  | ||||||
|     x = torch.randn(2, 3) |  | ||||||
|     g(x) |  | ||||||
|  |  | ||||||
| Applying a ``torch.func`` transform to a function handled with ``torch.compile`` |  | ||||||
| -------------------------------------------------------------------------------- |  | ||||||
|  |  | ||||||
| For example, you have the following code: |  | ||||||
|  |  | ||||||
| .. code-block:: python | .. code-block:: python | ||||||
|  |  | ||||||
|     import torch |     import torch | ||||||
| @ -374,12 +339,18 @@ For example, you have the following code: | |||||||
|  |  | ||||||
| This code will not work. There is an `issue <https://github.com/pytorch/pytorch/issues/100320>`__ | This code will not work. There is an `issue <https://github.com/pytorch/pytorch/issues/100320>`__ | ||||||
| that you can track for this. | that you can track for this. | ||||||
| As a workaround, please put the ``torch.compile`` outside of ``torch.func`` transform: |  | ||||||
|  | As a workaround, use ``torch.compile`` outside of the ``torch.func`` function: | ||||||
|  |  | ||||||
|  | .. note:: | ||||||
|  |     This is an experimental feature and can be used by setting `torch._dynamo.config.capture_func_transforms=True` | ||||||
|  |  | ||||||
| .. code-block:: python | .. code-block:: python | ||||||
|  |  | ||||||
|     import torch |     import torch | ||||||
|  |  | ||||||
|  |     torch._dynamo.config.capture_func_transforms=True | ||||||
|  |  | ||||||
|     def f(x): |     def f(x): | ||||||
|         return torch.sin(x) |         return torch.sin(x) | ||||||
|  |  | ||||||
| @ -393,18 +364,137 @@ As a workaround, please put the ``torch.compile`` outside of ``torch.func`` tran | |||||||
| Calling ``torch.func`` transform inside of a function handled with ``torch.compile`` | Calling ``torch.func`` transform inside of a function handled with ``torch.compile`` | ||||||
| ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ||||||
|  |  | ||||||
|  |  | ||||||
|  | Compiling ``torch.func.grad`` with ``torch.compile`` | ||||||
|  | ---------------------------------------------------- | ||||||
|  |  | ||||||
| .. code-block:: python | .. code-block:: python | ||||||
|  |  | ||||||
|     import torch |     import torch | ||||||
|  |  | ||||||
|     @torch.compile |     torch._dynamo.config.capture_func_transforms=True | ||||||
|     def f(x): |  | ||||||
|         return torch.vmap(torch.sum)(x) |  | ||||||
|  |  | ||||||
|     x = torch.randn(2, 3) |     def wrapper_fn(x): | ||||||
|     f(x) |         return torch.func.grad(lambda x: x.sin().sum())(x) | ||||||
|  |  | ||||||
| This doesn't work yet. As a workaround, use ``torch._dynamo.allow_in_graph`` |     x = torch.randn(3, 3, 3) | ||||||
|  |     grad_x = torch.compile(wrapper_fn)(x) | ||||||
|  |  | ||||||
|  | Compiling ``torch.vmap`` with ``torch.compile`` | ||||||
|  | ----------------------------------------------- | ||||||
|  |  | ||||||
|  | .. code-block:: python | ||||||
|  |  | ||||||
|  |     import torch | ||||||
|  |  | ||||||
|  |     torch._dynamo.config.capture_func_transforms=True | ||||||
|  |  | ||||||
|  |     def my_fn(x): | ||||||
|  |         return torch.vmap(lambda x: x.sum(1))(x) | ||||||
|  |  | ||||||
|  |     x = torch.randn(3, 3, 3) | ||||||
|  |     output = torch.compile(my_fn)(x) | ||||||
|  |  | ||||||
|  | Limitations | ||||||
|  | ----------- | ||||||
|  |  | ||||||
|  | There are currently a few cases which are not supported and lead to graph breaks | ||||||
|  | (that is, torch.compile falls back to eager-mode PyTorch on these). We are working | ||||||
|  | on improving the situation for the next release (PyTorch 2.2) | ||||||
|  |  | ||||||
|  | 1. The inputs and outputs of the function being transformed over must be tensors. | ||||||
|  | We do not yet support things like tuple of Tensors. | ||||||
|  |  | ||||||
|  | .. code-block:: python | ||||||
|  |  | ||||||
|  |     import torch | ||||||
|  |  | ||||||
|  |     torch._dynamo.config.capture_func_transforms=True | ||||||
|  |  | ||||||
|  |     def fn(x): | ||||||
|  |         x1, x2 = x | ||||||
|  |         return x1 + x2 | ||||||
|  |  | ||||||
|  |     def my_fn(x): | ||||||
|  |         return torch.func.vmap(fn)(x) | ||||||
|  |  | ||||||
|  |     x1 = torch.randn(3, 3, 3) | ||||||
|  |     x2 = torch.randn(3, 3, 3) | ||||||
|  |     # Unsupported, falls back to eager-mode PyTorch | ||||||
|  |     output = torch.compile(my_fn)((x1, x2)) | ||||||
|  |  | ||||||
|  | 2. Keyword arguments are not supported. | ||||||
|  |  | ||||||
|  | .. code-block:: python | ||||||
|  |  | ||||||
|  |     import torch | ||||||
|  |  | ||||||
|  |     torch._dynamo.config.capture_func_transforms=True | ||||||
|  |  | ||||||
|  |     def fn(x, y): | ||||||
|  |         return (x + y).sum() | ||||||
|  |  | ||||||
|  |     def my_fn(x, y): | ||||||
|  |         return torch.func.grad(fn)(x, y=y) | ||||||
|  |  | ||||||
|  |     x = torch.randn(3, 3) | ||||||
|  |     y = torch.randn(3, 3) | ||||||
|  |     # Unsupported, falls back to eager-mode PyTorch | ||||||
|  |     output = torch.compile(my_fn)(x, y) | ||||||
|  |  | ||||||
|  | 3. Functions with observable side effects. For example, it is OK to mutate a list created in the function, | ||||||
|  | but not OK to mutate a list created outside of the function. | ||||||
|  |  | ||||||
|  | .. code-block:: python | ||||||
|  |  | ||||||
|  |     import torch | ||||||
|  |  | ||||||
|  |     torch._dynamo.config.capture_func_transforms=True | ||||||
|  |  | ||||||
|  |     some_list = [] | ||||||
|  |  | ||||||
|  |     def f(x, y): | ||||||
|  |         some_list.append(1) | ||||||
|  |         return x + y | ||||||
|  |  | ||||||
|  |     def my_fn(x, y): | ||||||
|  |         return torch.func.vmap(f)(x, y) | ||||||
|  |  | ||||||
|  |     x = torch.ones(2, 3) | ||||||
|  |     y = torch.randn(2, 3) | ||||||
|  |     # Unsupported, falls back to eager-mode PyTorch | ||||||
|  |     output = torch.compile(my_fn)(x, y) | ||||||
|  |  | ||||||
|  | 4. ``torch.vmap`` over a function that calls one or more operators in the following list. | ||||||
|  |  | ||||||
|  | .. note:: | ||||||
|  |     'stride', 'requires_grad', 'storage_offset', 'layout', 'data', 'is_coalesced', 'is_complex', | ||||||
|  |     'is_conj', 'is_contiguous', 'is_cpu', 'is_cuda', 'is_distributed', 'is_floating_point', | ||||||
|  |     'is_inference', 'is_ipu', 'is_leaf', 'is_meta', 'is_mkldnn', 'is_mps', 'is_neg', 'is_nested', | ||||||
|  |     'is_nonzero', 'is_ort', 'is_pinned', 'is_quantized', 'is_same_size', 'is_set_to', 'is_shared', | ||||||
|  |     'is_signed', 'is_sparse', 'is_sparse_csr', 'is_vulkan', 'is_xla', 'is_xpu' | ||||||
|  |  | ||||||
|  | .. code-block:: python | ||||||
|  |  | ||||||
|  |     import torch | ||||||
|  |  | ||||||
|  |     torch._dynamo.config.capture_func_transforms=True | ||||||
|  |  | ||||||
|  |     def bad_fn(x): | ||||||
|  |         x.stride() | ||||||
|  |         return x | ||||||
|  |  | ||||||
|  |     def my_fn(x): | ||||||
|  |         return torch.func.vmap(bad_fn)(x) | ||||||
|  |  | ||||||
|  |     x = torch.randn(3, 3, 3) | ||||||
|  |     # Unsupported, falls back to eager-mode PyTorch | ||||||
|  |     output = torch.compile(my_fn)(x) | ||||||
|  |  | ||||||
|  | Compiling functions besides the ones which are supported (escape hatch) | ||||||
|  | ----------------------------------------------------------------------- | ||||||
|  |  | ||||||
|  | For other transforms, as a workaround, use ``torch._dynamo.allow_in_graph`` | ||||||
|  |  | ||||||
| ``allow_in_graph`` is an escape hatch. If your code does not work with | ``allow_in_graph`` is an escape hatch. If your code does not work with | ||||||
| ``torch.compile``, which introspects Python bytecode, but you believe it | ``torch.compile``, which introspects Python bytecode, but you believe it | ||||||
| @ -438,6 +528,160 @@ invokes an ``nn.Module``. This is because the outputs now depend on the | |||||||
| parameters of the ``nn.Module``. To get this to work, use | parameters of the ``nn.Module``. To get this to work, use | ||||||
| ``torch.func.functional_call`` to extract the module state. | ``torch.func.functional_call`` to extract the module state. | ||||||
|  |  | ||||||
|  | Does NumPy work with ``torch.compile``? | ||||||
|  | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||||||
|  |  | ||||||
|  | Starting in 2.1, ``torch.compile`` understands native NumPy programs that | ||||||
|  | work on NumPy arrays, and mixed PyTorch-NumPy programs that convert from PyTorch | ||||||
|  | to NumPy and back via ``x.numpy()``, ``torch.from_numpy``, and related functions. | ||||||
|  |  | ||||||
|  | .. _nonsupported-numpy-feats: | ||||||
|  |  | ||||||
|  | Which NumPy features does ``torch.compile`` support? | ||||||
|  | ---------------------------------------------------- | ||||||
|  |  | ||||||
|  | NumPy within ``torch.compile`` follows NumPy 2.0 pre-release. | ||||||
|  |  | ||||||
|  | Generally, ``torch.compile`` is able to trace through most NumPy constructions, | ||||||
|  | and when it cannot, it falls back to eager and lets NumPy execute that piece of | ||||||
|  | code. Even then, there are a few features where ``torch.compile`` semantics | ||||||
|  | slightly deviate from those of NumPy: | ||||||
|  |  | ||||||
|  | - NumPy scalars: We model them as 0-D arrays. That is, ``np.float32(3)`` returns | ||||||
|  |   a 0-D array under ``torch.compile``. To avoid a graph break, it is best to use this 0-D | ||||||
|  |   array. If this breaks your code, you can workaround this by casting the NumPy scalar | ||||||
|  |   to the relevant Python scalar type ``bool/int/float``. | ||||||
|  |  | ||||||
|  | - Negative strides: ``np.flip`` and slicing with a negative step return a copy. | ||||||
|  |  | ||||||
|  | - Type promotion: NumPy's type promotion will change in NumPy 2.0. The new rules | ||||||
|  |   are described in `NEP 50 <https://numpy.org/neps/nep-0050-scalar-promotion.html)>`__. | ||||||
|  |   ``torch.compile`` implements NEP 50 rather than the current soon-to-be deprecated rules. | ||||||
|  |  | ||||||
|  | - ``{tril,triu}_indices_from/{tril,triu}_indices`` return arrays rather than a tuple of arrays. | ||||||
|  |  | ||||||
|  | There are other features for which we do not support tracing and we gracefully | ||||||
|  | fallback to NumPy for their execution: | ||||||
|  |  | ||||||
|  | - Non-numeric dtypes like datetimes, strings, chars, void, structured dtypes and recarrays. | ||||||
|  |  | ||||||
|  | - Long dtypes ``np.float128/np.complex256`` and some unsigned dtypes ``np.uint16/np.uint32/np.uint64``. | ||||||
|  |  | ||||||
|  | - ``ndarray`` subclasses. | ||||||
|  |  | ||||||
|  | - Masked arrays. | ||||||
|  |  | ||||||
|  | - Esoteric ufunc machinery like ``axes=[(n,k),(k,m)->(n,m)]`` and ufunc methods (e.g., ``np.add.reduce``). | ||||||
|  |  | ||||||
|  | - Sorting / ordering ``complex64/complex128`` arrays. | ||||||
|  |  | ||||||
|  | - NumPy ``np.poly1d`` and ``np.polynomial``. | ||||||
|  |  | ||||||
|  | - Positional ``out1, out2`` args in functions with 2 or more returns (``out=tuple`` does work). | ||||||
|  |  | ||||||
|  | - ``__array_function__``, ``__array_interface__`` and ``__array_wrap__``. | ||||||
|  |  | ||||||
|  | - ``ndarray.ctypes`` attribute. | ||||||
|  |  | ||||||
|  | Can I execute NumPy code on CUDA via ``torch.compile``? | ||||||
|  | ------------------------------------------------------- | ||||||
|  |  | ||||||
|  | Yes you can! To do so, you may simply execute your code within a ``torch.device("cuda")`` | ||||||
|  | context. Consider the example | ||||||
|  |  | ||||||
|  | .. code-block:: python | ||||||
|  |  | ||||||
|  |    import torch | ||||||
|  |    import numpy as np | ||||||
|  |  | ||||||
|  |    @torch.compile | ||||||
|  |    def numpy_fn(X: np.ndarray, Y: np.ndarray) -> np.ndarray: | ||||||
|  |        return np.sum(X[:, :, None] * Y[:, None, :], axis=(-2, -1)) | ||||||
|  |  | ||||||
|  |    X = np.random.randn(1024, 64) | ||||||
|  |    Y = np.random.randn(1024, 64) | ||||||
|  |    with torch.device("cuda"): | ||||||
|  |        Z = numpy_fn(X, Y) | ||||||
|  |  | ||||||
|  |  | ||||||
|  | In this example, ``numpy_fn`` will be executed in CUDA. For this to be | ||||||
|  | possible, ``torch.compile`` automatically moves ``X`` and ``Y`` from CPU | ||||||
|  | to CUDA, and then it moves the result ``Z`` from CUDA to CPU. If we are | ||||||
|  | executing this function several times in the same program run, we may want | ||||||
|  | to avoid all these rather expensive memory copies. To do so, we just need | ||||||
|  | to tweak our ``numpy_fn`` so that it accepts cuda Tensors and returns tensors: | ||||||
|  |  | ||||||
|  | .. code-block:: python | ||||||
|  |  | ||||||
|  |    @torch.compile | ||||||
|  |    def numpy_fn(X: torch.Tensor, Y: torch.Tensor) -> torch.Tensor: | ||||||
|  |        X, Y = X.numpy(), Y.numpy() | ||||||
|  |        Z = np.sum(X[:, :, None] * Y[:, None, :], axis=(-2, -1)) | ||||||
|  |        return torch.from_numpy(Z) | ||||||
|  |  | ||||||
|  |    X = torch.randn(1024, 64, device="cuda") | ||||||
|  |    Y = torch.randn(1024, 64, device="cuda") | ||||||
|  |    with torch.device("cuda"): | ||||||
|  |        Z = numpy_fn(X, Y) | ||||||
|  |  | ||||||
|  | By doing this, we explicitly create the tensors in CUDA memory, and we keep | ||||||
|  | them there. In this case ``X.numpy()`` and ``from_numpy()`` are hints to the compiler | ||||||
|  | but no real data movement happens. Note that the original program would not run | ||||||
|  | on eager mode now. If you want to run it in eager mode, you would need to call | ||||||
|  | ``.numpy(force=True)`` doing ``Z = Z.cuda()`` before returning | ||||||
|  | ``Z``. Of course, doing this would execute the program on eager mode NumPy, and | ||||||
|  | on CPU. | ||||||
|  |  | ||||||
|  |  | ||||||
|  | How do I debug NumPy code under ``torch.compile``? | ||||||
|  | -------------------------------------------------- | ||||||
|  |  | ||||||
|  | Debugging JIT compiled code is challenging, given the complexity of modern | ||||||
|  | compilers and the daunting errors that they raise. | ||||||
|  | `The tutorial on how to diagnose runtime errors within torch.compile <https://pytorch.org/docs/main/torch.compiler_troubleshooting.html#diagnosing-runtime-errors>`__ | ||||||
|  | contains a few tips and tricks on how to tackle this task. | ||||||
|  |  | ||||||
|  | If the above is not enough to pinpoint the origin of the issue, there are still | ||||||
|  | a few other NumPy-specific tools we can use. We can discern whether the bug | ||||||
|  | is entirely in the PyTorch code by disabling tracing through NumPy functions: | ||||||
|  |  | ||||||
|  |  | ||||||
|  | .. code-block:: python | ||||||
|  |  | ||||||
|  |    from torch._dynamo import config | ||||||
|  |    config.trace_numpy = False | ||||||
|  |  | ||||||
|  | If the bug lies in the traced NumPy code, we can execute the NumPy code eagerly (without ``torch.compile``) | ||||||
|  | using PyTorch as a backend by importing ``import torch._numpy as np``. | ||||||
|  | This should just be used for **debugging purposes** and is in no way a | ||||||
|  | replacement for the PyTorch API, as it is **much less performant** and, as a | ||||||
|  | private API, **may change without notice**. At any rate, ``torch._numpy`` is a | ||||||
|  | Python implementation of NumPy in terms of PyTorch and it is used internally by ``torch.compile`` to | ||||||
|  | transform NumPy code into Pytorch code. It is rather easy to read and modify, | ||||||
|  | so if you find any bug in it feel free to submit a PR fixing it or simply open | ||||||
|  | an issue. | ||||||
|  |  | ||||||
|  | If the program does work when importing ``torch._numpy as np``, chances are | ||||||
|  | that the bug is in TorchDynamo. If this is the case, please feel open an issue | ||||||
|  | with a `minimal reproducer <https://pytorch.org/docs/2.1/torch.compiler_troubleshooting.html>`__. | ||||||
|  |  | ||||||
|  | I ``torch.compile`` some NumPy code and I did not see any speed-up. | ||||||
|  | ------------------------------------------------------------------- | ||||||
|  |  | ||||||
|  | The best place to start is the | ||||||
|  | `tutorial with general advice for how to debug these sort of torch.compile issues <https://pytorch.org/docs/main/torch.compiler_faq.html#why-am-i-not-seeing-speedups>`__. | ||||||
|  |  | ||||||
|  | Some graph breaks may happen because of the use of unsupported features. See | ||||||
|  | :ref:`nonsupported-numpy-feats`. More generally, it is useful to keep in mind | ||||||
|  | that some widely used NumPy features do not play well with compilers. For | ||||||
|  | example, in-place modifications make reasoning difficult within the compiler and | ||||||
|  | often yield worse performance than their out-of-place counterparts.As such, it is best to avoid | ||||||
|  | them. Same goes for the use of the ``out=`` parameter. Instead, prefer | ||||||
|  | out-of-place ops and let ``torch.compile`` optimize the memory use. Same goes | ||||||
|  | for data-dependent ops like masked indexing through boolean masks, or | ||||||
|  | data-dependent control flow like ``if`` or ``while`` constructions. | ||||||
|  |  | ||||||
|  |  | ||||||
| Which API to use for fine grain tracing? | Which API to use for fine grain tracing? | ||||||
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||||||
|  |  | ||||||
|  | |||||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user
	