Repository navigation
Move MLX, Build Presets and macOS wheel CI to macOS 15 runners - #24441
Merged
Merged
Conversation
GitHub retires its macOS 14 runner images on November 2, 2026 ([announcement](actions/runner-images#13518)). After that, jobs that ask for `macos-14-xlarge` fail, and the MLX tests, the Apple preset builds and the macOS wheel builds still do. ### What this changes These jobs now ask for `macos-15-xlarge`, like the Apple and trunk workflows. The MLX LLM jobs no longer pick a runner per model; that only existed because Gemma 4 gave wrong output on macOS 14 (#19065). The MLX jobs that build through presets now build at one less than the core count. Their presets either run an unlimited `make -j` or build one file at a time, and on macOS 15 these jobs took 55 to 90 minutes instead of about 40. The wheel smoke test now checks that the macOS wheel still targets macOS 14. It fails if the tag, or any Mach-O file or Metal library in the wheel, asks for a newer macOS. This used to come for free, because the smoke test ran on macOS 14. The macOS wheel keeps the Arm VGF backend off, as before. Its library ships only for macOS 15, so it would put code built for macOS 15.4 into a wheel that claims macOS 14. The wheel build also pins Xcode 16.4, so a runner image update cannot change the wheel. Nothing runs on macOS 14 any more, which leaves two gaps for follow-ups. The check cannot see a call to a macOS 15-only API made without an availability check, or code built for macOS 15 that is linked into a library. And MLX is no longer tested on macOS 14, where Gemma 4 gave wrong output. ### What it means for users The wheel keeps its `macosx_14_0_arm64` tag, which comes from the build settings, not from the build machine. Built with the macOS 15.5 SDK, its Core ML backend can now run multifunction and stateful (`MLState`) models on macOS 15 and newer. That code checks the OS version at run time, so macOS 14 behaves as before. ### Test plan - On macOS 15, CI built every Apple preset and the Python 3.11 macOS wheel. The wheel is tagged `macosx_14_0_arm64`, is built with Xcode 16.4, has the Metal library and no VGF code, and passes the new check. An earlier commit also built Python 3.12 to 3.15 (`ciflow/binaries`), all with the same tag. The Linux wheels still build VGF. - Every MLX job passed on macOS 15, including the ones that need secrets (`ciflow/mlx`). The capped jobs took 13 to 22 minutes. Voxtral Realtime once printed only unknown tokens on an earlier commit, then passed when rerun. - Unit tests cover the check's decision and parsers, and run the whole check on a fake wheel with `lipo` and `otool` stubbed. With the real tools, the check also fails on altered nightly wheels: a wrong tag, a library that needs macOS 14.5 or 15.0, a `flatc` that needs macOS 15.0 (also as one slice of a universal binary), and a Metal library built for macOS 15.0 or with no target. (cherry picked from commit 4ea7e9d)
🔗 Helpful Links🧪 See artifacts and rendered test results at hud.pytorch.org/pr/pytorch/executorch/24441
Note: Links to docs will display an error until the docs builds have been completed. ✅ You can merge normally! (1 Unrelated Failure)As of commit a22b806 with merge base 4db778e ( BROKEN TRUNK - The following job failed but were present on the merge base:👉 Rebase onto the `viable/strict` branch to avoid these failures
This comment was automatically generated by Dr. CI and updates every 15 minutes. |
JacobSzwejbka
approved these changes
Nov 2, 2026
This branch was previously deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
GitHub retires its macOS 14 runner images on November 2, 2026 (announcement). After that, jobs that ask for
macos-14-xlargefail, and the MLX tests, the Apple preset builds and the macOS wheel builds still do.What this changes
These jobs now ask for
macos-15-xlarge, like the Apple and trunk workflows. The MLX LLM jobs no longer pick a runner per model; that only existed because Gemma 4 gave wrong output on macOS 14 (#19065).The MLX jobs that build through presets now build at one less than the core count. Their presets either run an unlimited
make -jor build one file at a time, and on macOS 15 these jobs took 55 to 90 minutes instead of about 40.The wheel smoke test now checks that the macOS wheel still targets macOS 14. It fails if the tag, or any Mach-O file or Metal library in the wheel, asks for a newer macOS. This used to come for free, because the smoke test ran on macOS 14.
The macOS wheel keeps the Arm VGF backend off, as before. Its library ships only for macOS 15, so it would put code built for macOS 15.4 into a wheel that claims macOS 14. The wheel build also pins Xcode 16.4, so a runner image update cannot change the wheel.
Nothing runs on macOS 14 any more, which leaves two gaps for follow-ups. The check cannot see a call to a macOS 15-only API made without an availability check, or code built for macOS 15 that is linked into a library. And MLX is no longer tested on macOS 14, where Gemma 4 gave wrong output.
What it means for users
The wheel keeps its
macosx_14_0_arm64tag, which comes from the build settings, not from the build machine. Built with the macOS 15.5 SDK, its Core ML backend can now run multifunction and stateful (MLState) models on macOS 15 and newer. That code checks the OS version at run time, so macOS 14 behaves as before.Test plan
macosx_14_0_arm64, is built with Xcode 16.4, has the Metal library and no VGF code, and passes the new check. An earlier commit also built Python 3.12 to 3.15 (ciflow/binaries), all with the same tag. The Linux wheels still build VGF.ciflow/mlx). The capped jobs took 13 to 22 minutes. Voxtral Realtime once printed only unknown tokens on an earlier commit, then passed when rerun.lipoandotoolstubbed. With the real tools, the check also fails on altered nightly wheels: a wrong tag, a library that needs macOS 14.5 or 15.0, aflatcthat needs macOS 15.0 (also as one slice of a universal binary), and a Metal library built for macOS 15.0 or with no target.