install_dev.py (55 lines of code) (raw):
import argparse
import subprocess
import sys
def install_torch_nightly_deps():
"""Install torch related dependencies from pinned nightly"""
EXECUTORCH_NIGHTLY_VERSION = "dev20250625"
TORCHAO_NIGHTLY_VERSION = "dev20250620"
# Torch nightly is aligned with pinned nightly in https://github.com/pytorch/executorch/blob/main/install_requirements.py#L74
TORCH_NIGHTLY_VERSION = "dev20250601"
subprocess.check_call(
[
sys.executable,
"-m",
"pip",
"install",
f"executorch==0.7.0.{EXECUTORCH_NIGHTLY_VERSION}",
f"torch==2.8.0.{TORCH_NIGHTLY_VERSION}",
f"torchvision==0.23.0.{TORCH_NIGHTLY_VERSION}",
f"torchaudio==2.8.0.{TORCH_NIGHTLY_VERSION}",
f"torchao==0.12.0.{TORCHAO_NIGHTLY_VERSION}",
"--extra-index-url",
"https://download.pytorch.org/whl/nightly/cpu",
]
)
def install_dep_from_source():
"""Install deps from source at pinned commits"""
subprocess.check_call(
[
sys.executable,
"-m",
"pip",
"install",
"git+https://github.com/huggingface/transformers@37367c7d9fd23401c26e79a2b26253ab2d1b7236#egg=transformers",
]
)
subprocess.check_call(
[
sys.executable,
"-m",
"pip",
"install",
"git+https://github.com/pytorch-labs/tokenizers@fc32028858020c4fcafe37aaaeaf5d1b480336a2#egg=pytorch-tokenizers",
]
)
def main():
"""Install optimum-executorch in dev mode with nightly dependencies"""
parser = argparse.ArgumentParser()
parser.add_argument(
"--skip_override_torch",
action="store_true",
help="Skip installation of nightly executorch and torch dependencies",
)
args = parser.parse_args()
# Install package with dev extras
subprocess.check_call([sys.executable, "-m", "pip", "install", ".[dev]"])
# Install nightly dependencies
if not args.skip_override_torch:
install_torch_nightly_deps()
# Install source dependencies
install_dep_from_source()
if __name__ == "__main__":
main()