Update install script and building from source docs - #10652

Merged
mergennachin merged 8 commits into
pytorch:mainfrom
keyprocedure:update-compile-from-source-docs
Jun 20, 2025
Merged

Update install script and building from source docs#10652
mergennachin merged 8 commits into
pytorch:mainfrom
keyprocedure:update-compile-from-source-docs

Conversation

@keyprocedure

@keyprocedurekeyprocedure commented May 2, 2025

Copy link
Copy Markdown
Contributor

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

@pytorch-bot

pytorch-botBot commented May 2, 2025

Copy link
Copy Markdown

🔗 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-botfacebook-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
Copy Markdown
ContributorAuthor

@pytorchbot label "module: build/install"

@pytorch-botpytorch-botBot 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
Copy Markdown
ContributorAuthor

@pytorchbot label "release notes: build"

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

@mergennachinmergennachin left a comment

Copy link
Copy Markdown
Contributor

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.

Comment threadinstall_requirements.py Outdated
):
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
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Comment threadinstall_requirements.py Outdated
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
Copy Markdown
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.

Comment threadinstall_requirements.py Outdated
) # For testing.

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

Copy link
Copy Markdown
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
Copy Markdown
ContributorAuthor

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
Copy Markdown
ContributorAuthor

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

@pytorch-bot

Copy link
Copy Markdown

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

mergennachin commented May 20, 2025

Copy link
Copy Markdown
Contributor

Thanks @keyprocedure

I just started the full CI tests

@pytorch-bot

Copy link
Copy Markdown

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

keyprocedure commented May 22, 2025

Copy link
Copy Markdown
ContributorAuthor

@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
Copy Markdown
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
Copy Markdown
ContributorAuthor

@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
Copy Markdown
ContributorAuthor

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

mergennachin commented Jun 13, 2025

Copy link
Copy Markdown
Contributor

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
Copy Markdown
ContributorAuthor

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
Copy Markdown
Contributor

Hi @keyprocedure

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

@keyprocedure
keyprocedureforce-pushed the update-compile-from-source-docs branch from 9158045 to a47238bCompareJune 17, 2025 01:58
@keyprocedure

Copy link
Copy Markdown
ContributorAuthor

@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.

@mergennachinmergennachin left a comment

Copy link
Copy Markdown
Contributor

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
Copy Markdown
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
Copy Markdown
ContributorAuthor

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?

Comment threaddocs/source/using-executorch-ios.md Outdated
./backends/apple/coreml/scripts/install_requirements.sh
```

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

Copy link
Copy Markdown
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
Copy Markdown
ContributorAuthor

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.

Comment threaddocs/source/using-executorch-building-from-source.md
./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
Copy Markdown
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

keyprocedure commented Jun 17, 2025

Copy link
Copy Markdown
ContributorAuthor

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.

@mergennachinmergennachin left a comment

Copy link
Copy Markdown
Contributor

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
Copy Markdown
ContributorAuthor

Happy to help!

@mergennachin
mergennachin merged commit 9345972 into pytorch:mainJun 20, 2025
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.
Fixespytorch#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 freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CLA SignedThis label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed.module: build/installIssues related to the cmake and buck2 builds, and to installing ExecuTorchrelease notes: buildChanges 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

@keyprocedure@mergennachin@facebook-github-bot
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Update install script and building from source docs - #10652

Merged
mergennachin merged 8 commits into
pytorch:mainfrom
keyprocedure:update-compile-from-source-docs
Jun 20, 2025
Merged

Update install script and building from source docs#10652
mergennachin merged 8 commits into
pytorch:mainfrom
keyprocedure:update-compile-from-source-docs

Conversation

@keyprocedure

@keyprocedurekeyprocedure commented May 2, 2025

Copy link
Copy Markdown
Contributor

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

@pytorch-bot

pytorch-botBot commented May 2, 2025

Copy link
Copy Markdown

🔗 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-botfacebook-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
Copy Markdown
ContributorAuthor

@pytorchbot label "module: build/install"

@pytorch-botpytorch-botBot 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
Copy Markdown
ContributorAuthor

@pytorchbot label "release notes: build"

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

@mergennachinmergennachin left a comment

Copy link
Copy Markdown
Contributor

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.

Comment threadinstall_requirements.py Outdated
):
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
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Comment threadinstall_requirements.py Outdated
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
Copy Markdown
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.

Comment threadinstall_requirements.py Outdated
) # For testing.

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

Copy link
Copy Markdown
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
Copy Markdown
ContributorAuthor

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
Copy Markdown
ContributorAuthor

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

@pytorch-bot

Copy link
Copy Markdown

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

mergennachin commented May 20, 2025

Copy link
Copy Markdown
Contributor

Thanks @keyprocedure

I just started the full CI tests

@pytorch-bot

Copy link
Copy Markdown

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

keyprocedure commented May 22, 2025

Copy link
Copy Markdown
ContributorAuthor

@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
Copy Markdown
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
Copy Markdown
ContributorAuthor

@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
Copy Markdown
ContributorAuthor

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

mergennachin commented Jun 13, 2025

Copy link
Copy Markdown
Contributor

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
Copy Markdown
ContributorAuthor

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
Copy Markdown
Contributor

Hi @keyprocedure

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

@keyprocedure
keyprocedureforce-pushed the update-compile-from-source-docs branch from 9158045 to a47238bCompareJune 17, 2025 01:58
@keyprocedure

Copy link
Copy Markdown
ContributorAuthor

@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.

@mergennachinmergennachin left a comment

Copy link
Copy Markdown
Contributor

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
Copy Markdown
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
Copy Markdown
ContributorAuthor

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?

Comment threaddocs/source/using-executorch-ios.md Outdated
./backends/apple/coreml/scripts/install_requirements.sh
```

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

Copy link
Copy Markdown
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
Copy Markdown
ContributorAuthor

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.

Comment threaddocs/source/using-executorch-building-from-source.md
./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
Copy Markdown
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

keyprocedure commented Jun 17, 2025

Copy link
Copy Markdown
ContributorAuthor

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.

@mergennachinmergennachin left a comment

Copy link
Copy Markdown
Contributor

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
Copy Markdown
ContributorAuthor

Happy to help!

@mergennachin
mergennachin merged commit 9345972 into pytorch:mainJun 20, 2025
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.
Fixespytorch#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 freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CLA SignedThis label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed.module: build/installIssues related to the cmake and buck2 builds, and to installing ExecuTorchrelease notes: buildChanges 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

@keyprocedure@mergennachin@facebook-github-bot
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Update install script and building from source docs - #10652

Merged
mergennachin merged 8 commits into
pytorch:mainfrom
keyprocedure:update-compile-from-source-docs
Jun 20, 2025
Merged

Update install script and building from source docs#10652
mergennachin merged 8 commits into
pytorch:mainfrom
keyprocedure:update-compile-from-source-docs

Conversation

@keyprocedure

@keyprocedurekeyprocedure commented May 2, 2025

Copy link
Copy Markdown
Contributor

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

@pytorch-bot

pytorch-botBot commented May 2, 2025

Copy link
Copy Markdown

🔗 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-botfacebook-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
Copy Markdown
ContributorAuthor

@pytorchbot label "module: build/install"

@pytorch-botpytorch-botBot 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
Copy Markdown
ContributorAuthor

@pytorchbot label "release notes: build"

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

@mergennachinmergennachin left a comment

Copy link
Copy Markdown
Contributor

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.

Comment threadinstall_requirements.py Outdated
):
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
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Comment threadinstall_requirements.py Outdated
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
Copy Markdown
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.

Comment threadinstall_requirements.py Outdated
) # For testing.

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

Copy link
Copy Markdown
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
Copy Markdown
ContributorAuthor

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
Copy Markdown
ContributorAuthor

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

@pytorch-bot

Copy link
Copy Markdown

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

mergennachin commented May 20, 2025

Copy link
Copy Markdown
Contributor

Thanks @keyprocedure

I just started the full CI tests

@pytorch-bot

Copy link
Copy Markdown

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

keyprocedure commented May 22, 2025

Copy link
Copy Markdown
ContributorAuthor

@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
Copy Markdown
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
Copy Markdown
ContributorAuthor

@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
Copy Markdown
ContributorAuthor

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

mergennachin commented Jun 13, 2025

Copy link
Copy Markdown
Contributor

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
Copy Markdown
ContributorAuthor

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
Copy Markdown
Contributor

Hi @keyprocedure

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

@keyprocedure
keyprocedureforce-pushed the update-compile-from-source-docs branch from 9158045 to a47238bCompareJune 17, 2025 01:58
@keyprocedure

Copy link
Copy Markdown
ContributorAuthor

@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.

@mergennachinmergennachin left a comment

Copy link
Copy Markdown
Contributor

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
Copy Markdown
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
Copy Markdown
ContributorAuthor

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?

Comment threaddocs/source/using-executorch-ios.md Outdated
./backends/apple/coreml/scripts/install_requirements.sh
```

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

Copy link
Copy Markdown
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
Copy Markdown
ContributorAuthor

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.

Comment threaddocs/source/using-executorch-building-from-source.md
./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
Copy Markdown
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

keyprocedure commented Jun 17, 2025

Copy link
Copy Markdown
ContributorAuthor

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.

@mergennachinmergennachin left a comment

Copy link
Copy Markdown
Contributor

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
Copy Markdown
ContributorAuthor

Happy to help!

@mergennachin
mergennachin merged commit 9345972 into pytorch:mainJun 20, 2025
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.
Fixespytorch#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 freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CLA SignedThis label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed.module: build/installIssues related to the cmake and buck2 builds, and to installing ExecuTorchrelease notes: buildChanges 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

@keyprocedure@mergennachin@facebook-github-bot
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Update install script and building from source docs - #10652

Merged
mergennachin merged 8 commits into
pytorch:mainfrom
keyprocedure:update-compile-from-source-docs
Jun 20, 2025
Merged

Update install script and building from source docs#10652
mergennachin merged 8 commits into
pytorch:mainfrom
keyprocedure:update-compile-from-source-docs

Conversation

@keyprocedure

@keyprocedurekeyprocedure commented May 2, 2025

Copy link
Copy Markdown
Contributor

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

@pytorch-bot

pytorch-botBot commented May 2, 2025

Copy link
Copy Markdown

🔗 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-botfacebook-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
Copy Markdown
ContributorAuthor

@pytorchbot label "module: build/install"

@pytorch-botpytorch-botBot 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
Copy Markdown
ContributorAuthor

@pytorchbot label "release notes: build"

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

@mergennachinmergennachin left a comment

Copy link
Copy Markdown
Contributor

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.

Comment threadinstall_requirements.py Outdated
):
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
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Comment threadinstall_requirements.py Outdated
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
Copy Markdown
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.

Comment threadinstall_requirements.py Outdated
) # For testing.

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

Copy link
Copy Markdown
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
Copy Markdown
ContributorAuthor

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
Copy Markdown
ContributorAuthor

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

@pytorch-bot

Copy link
Copy Markdown

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

mergennachin commented May 20, 2025

Copy link
Copy Markdown
Contributor

Thanks @keyprocedure

I just started the full CI tests

@pytorch-bot

Copy link
Copy Markdown

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

keyprocedure commented May 22, 2025

Copy link
Copy Markdown
ContributorAuthor

@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
Copy Markdown
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
Copy Markdown
ContributorAuthor

@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
Copy Markdown
ContributorAuthor

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

mergennachin commented Jun 13, 2025

Copy link
Copy Markdown
Contributor

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
Copy Markdown
ContributorAuthor

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
Copy Markdown
Contributor

Hi @keyprocedure

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

@keyprocedure
keyprocedureforce-pushed the update-compile-from-source-docs branch from 9158045 to a47238bCompareJune 17, 2025 01:58
@keyprocedure

Copy link
Copy Markdown
ContributorAuthor

@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.

@mergennachinmergennachin left a comment

Copy link
Copy Markdown
Contributor

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
Copy Markdown
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
Copy Markdown
ContributorAuthor

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?

Comment threaddocs/source/using-executorch-ios.md Outdated
./backends/apple/coreml/scripts/install_requirements.sh
```

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

Copy link
Copy Markdown
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
Copy Markdown
ContributorAuthor

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.

Comment threaddocs/source/using-executorch-building-from-source.md
./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
Copy Markdown
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

keyprocedure commented Jun 17, 2025

Copy link
Copy Markdown
ContributorAuthor

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.

@mergennachinmergennachin left a comment

Copy link
Copy Markdown
Contributor

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
Copy Markdown
ContributorAuthor

Happy to help!

@mergennachin
mergennachin merged commit 9345972 into pytorch:mainJun 20, 2025
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.
Fixespytorch#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 freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CLA SignedThis label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed.module: build/installIssues related to the cmake and buck2 builds, and to installing ExecuTorchrelease notes: buildChanges 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

@keyprocedure@mergennachin@facebook-github-bot
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Update install script and building from source docs - #10652

Merged
mergennachin merged 8 commits into
pytorch:mainfrom
keyprocedure:update-compile-from-source-docs
Jun 20, 2025
Merged

Update install script and building from source docs#10652
mergennachin merged 8 commits into
pytorch:mainfrom
keyprocedure:update-compile-from-source-docs

Conversation

@keyprocedure

@keyprocedurekeyprocedure commented May 2, 2025

Copy link
Copy Markdown
Contributor

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

@pytorch-bot

pytorch-botBot commented May 2, 2025

Copy link
Copy Markdown

🔗 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-botfacebook-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
Copy Markdown
ContributorAuthor

@pytorchbot label "module: build/install"

@pytorch-botpytorch-botBot 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
Copy Markdown
ContributorAuthor

@pytorchbot label "release notes: build"

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

@mergennachinmergennachin left a comment

Copy link
Copy Markdown
Contributor

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.

Comment threadinstall_requirements.py Outdated
):
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
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Comment threadinstall_requirements.py Outdated
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
Copy Markdown
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.

Comment threadinstall_requirements.py Outdated
) # For testing.

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

Copy link
Copy Markdown
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
Copy Markdown
ContributorAuthor

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
Copy Markdown
ContributorAuthor

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

@pytorch-bot

Copy link
Copy Markdown

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

mergennachin commented May 20, 2025

Copy link
Copy Markdown
Contributor

Thanks @keyprocedure

I just started the full CI tests

@pytorch-bot

Copy link
Copy Markdown

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

keyprocedure commented May 22, 2025

Copy link
Copy Markdown
ContributorAuthor

@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
Copy Markdown
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
Copy Markdown
ContributorAuthor

@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
Copy Markdown
ContributorAuthor

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

mergennachin commented Jun 13, 2025

Copy link
Copy Markdown
Contributor

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
Copy Markdown
ContributorAuthor

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
Copy Markdown
Contributor

Hi @keyprocedure

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

@keyprocedure
keyprocedureforce-pushed the update-compile-from-source-docs branch from 9158045 to a47238bCompareJune 17, 2025 01:58
@keyprocedure

Copy link
Copy Markdown
ContributorAuthor

@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.

@mergennachinmergennachin left a comment

Copy link
Copy Markdown
Contributor

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
Copy Markdown
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
Copy Markdown
ContributorAuthor

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?

Comment threaddocs/source/using-executorch-ios.md Outdated
./backends/apple/coreml/scripts/install_requirements.sh
```

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

Copy link
Copy Markdown
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
Copy Markdown
ContributorAuthor

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.

Comment threaddocs/source/using-executorch-building-from-source.md
./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
Copy Markdown
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

keyprocedure commented Jun 17, 2025

Copy link
Copy Markdown
ContributorAuthor

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.

@mergennachinmergennachin left a comment

Copy link
Copy Markdown
Contributor

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
Copy Markdown
ContributorAuthor

Happy to help!

@mergennachin
mergennachin merged commit 9345972 into pytorch:mainJun 20, 2025
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.
Fixespytorch#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 freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CLA SignedThis label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed.module: build/installIssues related to the cmake and buck2 builds, and to installing ExecuTorchrelease notes: buildChanges 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

@keyprocedure@mergennachin@facebook-github-bot
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Update install script and building from source docs - #10652

Merged
mergennachin merged 8 commits into
pytorch:mainfrom
keyprocedure:update-compile-from-source-docs
Jun 20, 2025
Merged

Update install script and building from source docs#10652
mergennachin merged 8 commits into
pytorch:mainfrom
keyprocedure:update-compile-from-source-docs

Conversation

@keyprocedure

@keyprocedurekeyprocedure commented May 2, 2025

Copy link
Copy Markdown
Contributor

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

@pytorch-bot

pytorch-botBot commented May 2, 2025

Copy link
Copy Markdown

🔗 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-botfacebook-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
Copy Markdown
ContributorAuthor

@pytorchbot label "module: build/install"

@pytorch-botpytorch-botBot 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
Copy Markdown
ContributorAuthor

@pytorchbot label "release notes: build"

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

@mergennachinmergennachin left a comment

Copy link
Copy Markdown
Contributor

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.

Comment threadinstall_requirements.py Outdated
):
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
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Comment threadinstall_requirements.py Outdated
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
Copy Markdown
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.

Comment threadinstall_requirements.py Outdated
) # For testing.

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

Copy link
Copy Markdown
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
Copy Markdown
ContributorAuthor

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
Copy Markdown
ContributorAuthor

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

@pytorch-bot

Copy link
Copy Markdown

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

mergennachin commented May 20, 2025

Copy link
Copy Markdown
Contributor

Thanks @keyprocedure

I just started the full CI tests

@pytorch-bot

Copy link
Copy Markdown

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

keyprocedure commented May 22, 2025

Copy link
Copy Markdown
ContributorAuthor

@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
Copy Markdown
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
Copy Markdown
ContributorAuthor

@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
Copy Markdown
ContributorAuthor

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

mergennachin commented Jun 13, 2025

Copy link
Copy Markdown
Contributor

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
Copy Markdown
ContributorAuthor

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
Copy Markdown
Contributor

Hi @keyprocedure

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

@keyprocedure
keyprocedureforce-pushed the update-compile-from-source-docs branch from 9158045 to a47238bCompareJune 17, 2025 01:58
@keyprocedure

Copy link
Copy Markdown
ContributorAuthor

@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.

@mergennachinmergennachin left a comment

Copy link
Copy Markdown
Contributor

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
Copy Markdown
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
Copy Markdown
ContributorAuthor

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?

Comment threaddocs/source/using-executorch-ios.md Outdated
./backends/apple/coreml/scripts/install_requirements.sh
```

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

Copy link
Copy Markdown
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
Copy Markdown
ContributorAuthor

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.

Comment threaddocs/source/using-executorch-building-from-source.md
./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
Copy Markdown
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

keyprocedure commented Jun 17, 2025

Copy link
Copy Markdown
ContributorAuthor

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.

@mergennachinmergennachin left a comment

Copy link
Copy Markdown
Contributor

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
Copy Markdown
ContributorAuthor

Happy to help!

@mergennachin
mergennachin merged commit 9345972 into pytorch:mainJun 20, 2025
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.
Fixespytorch#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 freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CLA SignedThis label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed.module: build/installIssues related to the cmake and buck2 builds, and to installing ExecuTorchrelease notes: buildChanges 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

@keyprocedure@mergennachin@facebook-github-bot
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Update install script and building from source docs - #10652

Merged
mergennachin merged 8 commits into
pytorch:mainfrom
keyprocedure:update-compile-from-source-docs
Jun 20, 2025
Merged

Update install script and building from source docs#10652
mergennachin merged 8 commits into
pytorch:mainfrom
keyprocedure:update-compile-from-source-docs

Conversation

@keyprocedure

@keyprocedurekeyprocedure commented May 2, 2025

Copy link
Copy Markdown
Contributor

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

@pytorch-bot

pytorch-botBot commented May 2, 2025

Copy link
Copy Markdown

🔗 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-botfacebook-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
Copy Markdown
ContributorAuthor

@pytorchbot label "module: build/install"

@pytorch-botpytorch-botBot 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
Copy Markdown
ContributorAuthor

@pytorchbot label "release notes: build"

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

@mergennachinmergennachin left a comment

Copy link
Copy Markdown
Contributor

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.

Comment threadinstall_requirements.py Outdated
):
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
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Comment threadinstall_requirements.py Outdated
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
Copy Markdown
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.

Comment threadinstall_requirements.py Outdated
) # For testing.

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

Copy link
Copy Markdown
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
Copy Markdown
ContributorAuthor

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
Copy Markdown
ContributorAuthor

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

@pytorch-bot

Copy link
Copy Markdown

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

mergennachin commented May 20, 2025

Copy link
Copy Markdown
Contributor

Thanks @keyprocedure

I just started the full CI tests

@pytorch-bot

Copy link
Copy Markdown

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

keyprocedure commented May 22, 2025

Copy link
Copy Markdown
ContributorAuthor

@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
Copy Markdown
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
Copy Markdown
ContributorAuthor

@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
Copy Markdown
ContributorAuthor

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

mergennachin commented Jun 13, 2025

Copy link
Copy Markdown
Contributor

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
Copy Markdown
ContributorAuthor

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
Copy Markdown
Contributor

Hi @keyprocedure

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

@keyprocedure
keyprocedureforce-pushed the update-compile-from-source-docs branch from 9158045 to a47238bCompareJune 17, 2025 01:58
@keyprocedure

Copy link
Copy Markdown
ContributorAuthor

@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.

@mergennachinmergennachin left a comment

Copy link
Copy Markdown
Contributor

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
Copy Markdown
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
Copy Markdown
ContributorAuthor

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?

Comment threaddocs/source/using-executorch-ios.md Outdated
./backends/apple/coreml/scripts/install_requirements.sh
```

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

Copy link
Copy Markdown
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
Copy Markdown
ContributorAuthor

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.

Comment threaddocs/source/using-executorch-building-from-source.md
./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
Copy Markdown
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

keyprocedure commented Jun 17, 2025

Copy link
Copy Markdown
ContributorAuthor

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.

@mergennachinmergennachin left a comment

Copy link
Copy Markdown
Contributor

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
Copy Markdown
ContributorAuthor

Happy to help!

@mergennachin
mergennachin merged commit 9345972 into pytorch:mainJun 20, 2025
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.
Fixespytorch#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 freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CLA SignedThis label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed.module: build/installIssues related to the cmake and buck2 builds, and to installing ExecuTorchrelease notes: buildChanges 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

@keyprocedure@mergennachin@facebook-github-bot
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Update install script and building from source docs - #10652

Merged
mergennachin merged 8 commits into
pytorch:mainfrom
keyprocedure:update-compile-from-source-docs
Jun 20, 2025
Merged

Update install script and building from source docs#10652
mergennachin merged 8 commits into
pytorch:mainfrom
keyprocedure:update-compile-from-source-docs

Conversation

@keyprocedure

@keyprocedurekeyprocedure commented May 2, 2025

Copy link
Copy Markdown
Contributor

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

@pytorch-bot

pytorch-botBot commented May 2, 2025

Copy link
Copy Markdown

🔗 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-botfacebook-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
Copy Markdown
ContributorAuthor

@pytorchbot label "module: build/install"

@pytorch-botpytorch-botBot 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
Copy Markdown
ContributorAuthor

@pytorchbot label "release notes: build"

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

@mergennachinmergennachin left a comment

Copy link
Copy Markdown
Contributor

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.

Comment threadinstall_requirements.py Outdated
):
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
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Comment threadinstall_requirements.py Outdated
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
Copy Markdown
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.

Comment threadinstall_requirements.py Outdated
) # For testing.

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

Copy link
Copy Markdown
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
Copy Markdown
ContributorAuthor

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
Copy Markdown
ContributorAuthor

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

@pytorch-bot

Copy link
Copy Markdown

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

mergennachin commented May 20, 2025

Copy link
Copy Markdown
Contributor

Thanks @keyprocedure

I just started the full CI tests

@pytorch-bot

Copy link
Copy Markdown

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

keyprocedure commented May 22, 2025

Copy link
Copy Markdown
ContributorAuthor

@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
Copy Markdown
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
Copy Markdown
ContributorAuthor

@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
Copy Markdown
ContributorAuthor

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

mergennachin commented Jun 13, 2025

Copy link
Copy Markdown
Contributor

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
Copy Markdown
ContributorAuthor

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
Copy Markdown
Contributor

Hi @keyprocedure

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

@keyprocedure
keyprocedureforce-pushed the update-compile-from-source-docs branch from 9158045 to a47238bCompareJune 17, 2025 01:58
@keyprocedure

Copy link
Copy Markdown
ContributorAuthor

@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.

@mergennachinmergennachin left a comment

Copy link
Copy Markdown
Contributor

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
Copy Markdown
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
Copy Markdown
ContributorAuthor

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?

Comment threaddocs/source/using-executorch-ios.md Outdated
./backends/apple/coreml/scripts/install_requirements.sh
```

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

Copy link
Copy Markdown
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
Copy Markdown
ContributorAuthor

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.

Comment threaddocs/source/using-executorch-building-from-source.md
./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
Copy Markdown
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

keyprocedure commented Jun 17, 2025

Copy link
Copy Markdown
ContributorAuthor

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.

@mergennachinmergennachin left a comment

Copy link
Copy Markdown
Contributor

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
Copy Markdown
ContributorAuthor

Happy to help!

@mergennachin
mergennachin merged commit 9345972 into pytorch:mainJun 20, 2025
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.
Fixespytorch#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 freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CLA SignedThis label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed.module: build/installIssues related to the cmake and buck2 builds, and to installing ExecuTorchrelease notes: buildChanges 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

@keyprocedure@mergennachin@facebook-github-bot