Skip to content

Update install script and building from source docs #10652

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged

Conversation

keyprocedure
Copy link
Contributor

@keyprocedure keyprocedure commented May 2, 2025

Summary

  • Updated install_requirements.sh to improve compatibility with source-built PyTorch and Intel macOS systems.
  • Added checks to prevent install commands from altering existing PyTorch builds by adding the --no-deps flag.
  • Removed torchaudio and torchvision dependencies for Intel macOS systems to avoid compatibility issues.

Fixes #9772

Test plan

Tested executorch installations with source-built PyTorch on:

  • Intel-macOS with PyTorch 2.7.0, Python 3.12.9
  • ARM64 macOS with PyTorch 2.8.0a0, Python 3.12.9

Validated by exporting and running the MobileNet V2 image classification model, following the examples on the Getting Started with ExecuTorch page.

cc @larryliu0820 @jathu

Copy link

pytorch-bot bot commented May 2, 2025

🔗 Helpful Links

🧪 See artifacts and rendered test results at hud.pytorch.org/pr/pytorch/executorch/10652

Note: Links to docs will display an error until the docs builds have been completed.

❌ 1 New Failure

As of commit df9c97a with merge base 7b39a0c (image):

NEW FAILURE - The following job has failed:

This comment was automatically generated by Dr. CI and updates every 15 minutes.

@facebook-github-bot facebook-github-bot added the CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed. label May 2, 2025
@keyprocedure
Copy link
Contributor Author

@pytorchbot label "module: build/install"

@pytorch-bot pytorch-bot bot added the module: build/install Issues related to the cmake and buck2 builds, and to installing ExecuTorch label May 2, 2025
@keyprocedure keyprocedure marked this pull request as ready for review May 10, 2025 01:15
@keyprocedure
Copy link
Contributor Author

@pytorchbot label "release notes: build"

@pytorch-bot pytorch-bot bot added the release notes: build Changes related to build, including dependency upgrades, build flags, optimizations, etc. label May 10, 2025
Copy link
Contributor

@mergennachin mergennachin left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you @keyprocedure

Overall looks great. Thank you for testing end-to-end. Glad that it works.

Please see inline comments below.

):
print(
"ERROR: Prebuilt PyTorch wheels are no longer available for Intel-based macOS.\n"
"Please build from source by following https://pytorch.org/executorch/0.6/using-executorch-building-from-source.html",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Comment on lines 164 to 166
print(
"ERROR: Prebuilt PyTorch wheels are no longer available for Intel-based macOS.\n"
"Please build from source by following https://pytorch.org/executorch/0.6/using-executorch-building-from-source.html",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The print message should appear inside this block.

  if use_pytorch_nightly and is_intel_mac:

is_intel_mac_os() is just a getter function that should do any printing.

) # For testing.

EXAMPLES_REQUIREMENTS = [
f"torchaudio==2.6.0.{NIGHTLY_VERSION}",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

what about this logic?

f"torchaudio==2.6.0.{NIGHTLY_VERSION}" if use_pytorch_nightly else "torchaudio"

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I had removed it for testing and forgot to restore it. Updated the code :)

@keyprocedure
Copy link
Contributor Author

Hi @mergennachin, I’ve made the requested changes — could you please take a look when you get a chance?

Copy link

pytorch-bot bot commented May 20, 2025

To add the ciflow label ciflow/trunk please first approve the workflows that are awaiting approval (scroll to the bottom of this page).

This helps ensure we don't trigger CI on this PR until it is actually authorized to do so. Please ping one of the reviewers if you do not have access to approve and run workflows.

@mergennachin
Copy link
Contributor

mergennachin commented May 20, 2025

Thanks @keyprocedure

I just started the full CI tests

Copy link

pytorch-bot bot commented May 22, 2025

To add the ciflow label ciflow/trunk please first approve the workflows that are awaiting approval (scroll to the bottom of this page).

This helps ensure we don't trigger CI on this PR until it is actually authorized to do so. Please ping one of the reviewers if you do not have access to approve and run workflows.

@keyprocedure
Copy link
Contributor Author

keyprocedure commented May 22, 2025

@mergennachin
It looks like CI is failing because the --no-deps flag prevents the required modules from being installed. I used it to avoid torch from being upgraded, but that's leading to missing modules

Is the expectation that any torch version should be usable, or only ones compatible with the current dependencies?

If any torch version should be usable, would it make more sense to use a temporary constraints.txt file to pin the torch version instead of the --no-deps flag? That may still lead to breakages, but those conflicts would be clearer during the install process. Otherwise, we could keep the --no-deps flag for Intel-macOS installs only

@mergennachin
Copy link
Contributor

@keyprocedure - First of all, thanks for being patient with this PR.

Looking a bit more into it. Why do we need --no-deps in the first place?

Presumably, when you install torch from source manually as first step, it should install a newer version from source. And in the install_requirements.py step, perhaps it won't try to upgrade it. Do you know which package is transitively trying to upgrade it?

@keyprocedure
Copy link
Contributor Author

@mergennachin Sorry for the delay

It looks like the torch version is actually downgraded to fit the dependency requirements. I'm not sure which package is causing the version change, but I recently tried to install executorch with the latest torch build without the no-deps flag and after running ./install_executorch.sh --use-pt-pinned-commit, torch gets downgraded to 2.7.0:

Installing collected packages: zstd, sentencepiece, pytz, antlr4-python3-runtime, xxhash, tzdata, tqdm, tomli, safetensors, regex, python-dateutil, pycryptodomex, pyarrow, propcache, pillow, omegaconf, multidict, lxml, hf-xet, hf-transfer, fsspec, frozenlist, dill, cmake, aiohappyeyeballs, yarl, `torch`, tiktoken, pandas, multiprocess, kagglehub, huggingface_hub, blobfile, aiosignal, torchvision, torchdata, torchaudio, tokenizers, aiohttp, transformers, torchsr, timm, datasets, torchtune
Attempting uninstall: torch
Found existing installation: torch 2.8.0a0+git9a8c42f
Uninstalling torch-2.8.0a0+git9a8c42f:
Successfully uninstalled torch-2.8.0a0+git9a8c42f

@keyprocedure
Copy link
Contributor Author

If the downgrade is being caused by something that I'm doing incorrectly during the install process/isolated to my build, I can remove the no-deps flag from the pip install command for this PR. I'm open to any suggestions/guidance.

@mergennachin
Copy link
Contributor

mergennachin commented Jun 13, 2025

Hi @keyprocedure

I did some digging and found out that torchvision and torchaudio were in fact downgrading.

torch, torchvision and torchaudio are in lock step dependency.

I did some refactoring in (#11653). torchvision and torchaudio are not absolute necessity. Only used for examples.

Once that PR is landed, we can update the Intel instruction to be as follows:

Build torch from source
./install_executorch.sh --use-pt-pinned-commit --minimal

@keyprocedure
Copy link
Contributor Author

Hey @mergennachin, I really appreciate your follow up!

Perfect, that'll simplify things.
I'll update the Intel instructions in this PR once #11653 lands.

@mergennachin
Copy link
Contributor

Hi @keyprocedure

I just landed the PR, please rebase. Hopefully it will simplify a lot of things in this PR

@keyprocedure keyprocedure force-pushed the update-compile-from-source-docs branch from 9158045 to a47238b Compare June 17, 2025 01:58
@keyprocedure
Copy link
Contributor Author

@mergennachin I've rebased and updated the Intel macOS install instructions to ./install_executorch.sh --use-pt-pinned-commit --minimal. Feel free to let me know if there's anything else that needs to be changed.

Copy link
Contributor

@mergennachin mergennachin left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

See inline

Comment on lines 68 to 70
Use the [`--use-pt-pinned-commit` flag](https://github.com/pytorch/executorch/blob/main/install_executorch.sh) to install Executorch with an existing PyTorch build.
See the [PyTorch instructions](https://github.com/pytorch/pytorch#installation) on how to build PyTorch from source.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Use relative paths

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I updated the flag links to use relative paths to the .py file.
For the PyTorch instructions link, since it points to a doc in the PyTorch repo, is there a way to reference that using a relative path, or should we keep the current path?

@@ -114,6 +114,13 @@ python3 -m venv .venv && source .venv/bin/activate && pip install --upgrade pip
./backends/apple/coreml/scripts/install_requirements.sh
```

- **Intel-based macOS** systems require building PyTorch, Torchvision, and Torchaudio from source:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's not have two instructions. Let's consolidate Intel based instructions in "building from source section" and call it a day

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good point, moved the instructions.

./install_executorch.sh
```

Use the [`--use-pt-pinned-commit` flag](https://github.com/pytorch/executorch/blob/main/install_executorch.sh) to install Executorch with an existing PyTorch build.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

s/Executorch/ExecuTorch/g

@keyprocedure
Copy link
Contributor Author

keyprocedure commented Jun 17, 2025

I removed the mention of building Torchvision and Torchaudio from source in the building-from-source doc for Intel-macOS builds to simplify the instructions, since they're not required to install ExecuTorch.

Copy link
Contributor

@mergennachin mergennachin left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you @keyprocedure

@keyprocedure
Copy link
Contributor Author

Happy to help!

@mergennachin mergennachin merged commit 9345972 into pytorch:main Jun 20, 2025
95 of 96 checks passed
hinriksnaer pushed a commit to hinriksnaer/executorch that referenced this pull request Jun 26, 2025
### Summary
- Updated `install_requirements.sh` to improve compatibility with
source-built PyTorch and Intel macOS systems.
- Added checks to prevent install commands from altering existing
PyTorch builds by adding the `--no-deps` flag.
- Removed `torchaudio` and `torchvision` dependencies for Intel macOS
systems to avoid compatibility issues.

Fixes pytorch#9772 

### Test plan
Tested executorch installations with source-built PyTorch on:
- Intel-macOS with PyTorch 2.7.0, Python 3.12.9
- ARM64 macOS with PyTorch 2.8.0a0, Python 3.12.9  

Validated by exporting and running the MobileNet V2 image classification
model, following the examples on the [Getting Started with
ExecuTorch](https://pytorch.org/executorch/stable/getting-started.html)
page.


cc @larryliu0820 @jathu
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed. module: build/install Issues related to the cmake and buck2 builds, and to installing ExecuTorch release notes: build Changes related to build, including dependency upgrades, build flags, optimizations, etc.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Return "platform not supported" when using PyTorch on intel-based Macbooks
3 participants