1515# The pip repository that hosts nightly torch packages.
1616# This will be dynamically set based on CUDA availability and CUDA backend enabled/disabled.
1717TORCH_URL_BASE = "https://download.pytorch.org/whl/test"
18+ TORCHAO_URL_BASE = "https://download.pytorch.org/whl/nightly"
19+ TORCHAO_NIGHTLY_VERSION = "0.18.0.dev20260715"
1820
1921# Since ExecuTorch often uses main-branch features of pytorch, only the nightly
2022# pip versions will have the required features.
@@ -43,13 +45,19 @@ def install_requirements(use_pytorch_nightly):
4345
4446 # Determine the appropriate PyTorch URL based on CUDA delegate status
4547 torch_url = determine_torch_url (TORCH_URL_BASE )
48+ torchao_url = determine_torch_url (TORCHAO_URL_BASE )
4649
4750 # pip packages needed by exir.
4851 TORCH_PACKAGE = [
4952 # Setting use_pytorch_nightly to false to test the pinned PyTorch commit. Note
5053 # that we don't need to set any version number there because they have already
5154 # been installed on CI before this step, so pip won't reinstall them
52- ("torch==2.12.0" if use_pytorch_nightly else "torch" ),
55+ ("torch==2.13.0" if use_pytorch_nightly else "torch" ),
56+ (
57+ f"torchao=={ TORCHAO_NIGHTLY_VERSION } "
58+ if use_pytorch_nightly
59+ else "torchao"
60+ ),
5361 ]
5462
5563 # Install the requirements for core ExecuTorch package.
@@ -66,44 +74,45 @@ def install_requirements(use_pytorch_nightly):
6674 * TORCH_PACKAGE ,
6775 "--extra-index-url" ,
6876 torch_url ,
77+ "--extra-index-url" ,
78+ torchao_url ,
6979 ],
7080 check = True ,
7181 )
7282
73- LOCAL_REQUIREMENTS = [
74- "third-party/ao" , # We need the latest kernels for fast iteration, so not relying on pypi.
75- ] + (
83+ LOCAL_REQUIREMENTS = (
7684 [
7785 "extension/llm/tokenizers" , # TODO(larryliu0820): Setup a pypi package for this.
7886 ]
7987 if sys .platform != "win32"
8088 else []
8189 ) # TODO(gjcomer): Re-enable when buildable on Windows.
8290
83- # Install packages directly from local copy instead of pypi.
84- # This is usually not recommended.
85- new_env = os .environ .copy ()
86- if ("EXECUTORCH_BUILD_KERNELS_TORCHAO" not in new_env ) or (
87- new_env ["EXECUTORCH_BUILD_KERNELS_TORCHAO" ] == "0"
88- ):
89- new_env ["USE_CPP" ] = "0"
90- else :
91- assert new_env ["EXECUTORCH_BUILD_KERNELS_TORCHAO" ] == "1"
92- new_env ["USE_CPP" ] = "1"
93- new_env ["CMAKE_POLICY_VERSION_MINIMUM" ] = "3.5"
94- subprocess .run (
95- [
96- sys .executable ,
97- "-m" ,
98- "pip" ,
99- "install" ,
100- # Without --no-build-isolation, setup.py can't find the torch module.
101- "--no-build-isolation" ,
102- * LOCAL_REQUIREMENTS ,
103- ],
104- env = new_env ,
105- check = True ,
106- )
91+ if LOCAL_REQUIREMENTS :
92+ # Install packages directly from local copy instead of pypi.
93+ # This is usually not recommended.
94+ new_env = os .environ .copy ()
95+ if ("EXECUTORCH_BUILD_KERNELS_TORCHAO" not in new_env ) or (
96+ new_env ["EXECUTORCH_BUILD_KERNELS_TORCHAO" ] == "0"
97+ ):
98+ new_env ["USE_CPP" ] = "0"
99+ else :
100+ assert new_env ["EXECUTORCH_BUILD_KERNELS_TORCHAO" ] == "1"
101+ new_env ["USE_CPP" ] = "1"
102+ new_env ["CMAKE_POLICY_VERSION_MINIMUM" ] = "3.5"
103+ subprocess .run (
104+ [
105+ sys .executable ,
106+ "-m" ,
107+ "pip" ,
108+ "install" ,
109+ # Without --no-build-isolation, setup.py can't find the torch module.
110+ "--no-build-isolation" ,
111+ * LOCAL_REQUIREMENTS ,
112+ ],
113+ env = new_env ,
114+ check = True ,
115+ )
107116
108117
109118def install_optional_example_requirements (use_pytorch_nightly ):
@@ -112,7 +121,7 @@ def install_optional_example_requirements(use_pytorch_nightly):
112121
113122 print ("Installing torch domain libraries" )
114123 DOMAIN_LIBRARIES = [
115- ("torchvision==0.27 .0" if use_pytorch_nightly else "torchvision" ),
124+ ("torchvision==0.28 .0" if use_pytorch_nightly else "torchvision" ),
116125 ("torchaudio==2.11.0" if use_pytorch_nightly else "torchaudio" ),
117126 ]
118127 # Then install domain libraries
0 commit comments