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

Open
wants to merge 9 commits into
base: main
Choose a base branch
from

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.

❌ 5 New Failures

As of commit 9158045 with merge base 936ac2b (image):

NEW FAILURES - The following jobs have 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

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