-
Notifications
You must be signed in to change notification settings - Fork 617
Add support for publishing macOS M1 ARM64 wheels #2559
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,31 @@ | ||
set -e -x | ||
|
||
export TF_NEED_CUDA=0 | ||
|
||
python --version | ||
python -m pip install --default-timeout=1000 delocate wheel setuptools tensorflow==$TF_VERSION | ||
|
||
python configure.py | ||
|
||
# For dynamic linking, we want the ARM version of TensorFlow. | ||
# Since we cannot run it on x86 so we need to force pip to install it regardless | ||
python -m pip install \ | ||
--platform=macosx_11_0_arm64 \ | ||
--no-deps \ | ||
--target=$(python -c 'import site; print(site.getsitepackages()[0])') \ | ||
--upgrade \ | ||
tensorflow-macos==$TF_VERSION | ||
|
||
bazel build \ | ||
--cpu=darwin_arm64 \ | ||
--copt -mmacosx-version-min=11.0 \ | ||
--linkopt -mmacosx-version-min=11.0 \ | ||
Comment on lines
+21
to
+22
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. We don't need to support 10.13 since the only the latest version macOS version currently supports ARM64. But setting a minimum version here makes sure that the script will keep working even if the GitHub actions VM are updated to 11.1 at some point in the future. |
||
--noshow_progress \ | ||
--noshow_loading_progress \ | ||
--verbose_failures \ | ||
--test_output=errors \ | ||
build_pip_pkg | ||
|
||
bazel-bin/build_pip_pkg artifacts "--plat-name macosx_11_0_arm64 $NIGHTLY_FLAG" | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. We need to manually set the correct wheel name, since we are cross compiling on an x86 machine. |
||
delocate-wheel -w wheelhouse artifacts/*.whl | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -41,6 +41,16 @@ jobs: | |
os: ['macos-latest', 'windows-latest', 'ubuntu-18.04'] | ||
py-version: ['3.6', '3.7', '3.8', '3.9'] | ||
tf-version: ['2.4.2', '2.6.0'] | ||
cpu: ['x86'] | ||
include: | ||
- os: 'macos-11' | ||
cpu: 'arm64' | ||
tf-version: '2.5.0' | ||
py-version: '3.8' | ||
- os: 'macos-11' | ||
cpu: 'arm64' | ||
tf-version: '2.5.0' | ||
py-version: '3.9' | ||
Comment on lines
+46
to
+53
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. And tensorflow-metal? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. As far as I can tell There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Yes I meant if It Is constrained to 2.5.0 now I suppose that all the macos stuffs are aligned on 2.5.0 including GPU acell There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Yes, There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Yes, as I told you it is not about conflicts, It is about that if There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Thanks @bhack for the heads-up. Is this PR for enabling ARM64 builds for TF through official build channels which will be hosted on pypi ? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
No this is limited for Tensorflow Addons ARM64 builds in the official Tesnroflow Addons pypi so we need to know if we could enable 2.6.0 for
For this you really need a brand new PR in the TF own repository over: But it is another topic. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. @bhack , thanks for the update. We are working on the v2.6 release, I will update here regarding that. I see this PR has merged we can adopt to There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. @kulinseth Are you interested to manage the TF addons wheels release on your pypi on a new |
||
fail-fast: false | ||
steps: | ||
- uses: actions/[email protected] | ||
|
@@ -68,12 +78,13 @@ jobs: | |
PY_VERSION: ${{ matrix.py-version }} | ||
TF_VERSION: ${{ matrix.tf-version }} | ||
NIGHTLY_TIME: ${{ steps.author-date.outputs.result }} | ||
CPU: ${{ matrix.cpu }} | ||
shell: bash | ||
run: bash .github/workflows/make_wheel_${OS}.sh | ||
run: bash .github/workflows/make_wheel_${OS}_${CPU}.sh | ||
- if: matrix.py-version != '3.9' || matrix.tf-version != '2.4.2' | ||
uses: actions/upload-artifact@v1 | ||
with: | ||
name: ${{ runner.os }}-${{ matrix.py-version }}-tf${{ matrix.tf-version }}-wheel | ||
name: ${{ runner.os }}-${{ matrix.py-version }}-tf${{ matrix.tf-version }}-${{ matrix.cpu }}-wheel | ||
path: wheelhouse | ||
upload-wheels: | ||
name: Publish wheels to PyPi | ||
|
@@ -84,12 +95,22 @@ jobs: | |
os: ['macOS', 'Windows', 'Linux'] | ||
py-version: ['3.6', '3.7', '3.8', '3.9'] | ||
tf-version: ['2.6.0'] | ||
cpu: ['x86'] | ||
include: | ||
- os: 'macos-11' | ||
cpu: 'arm64' | ||
tf-version: '2.5.0' | ||
py-version: '3.8' | ||
- os: 'macos-11' | ||
cpu: 'arm64' | ||
tf-version: '2.5.0' | ||
py-version: '3.9' | ||
fail-fast: false | ||
if: (github.event_name == 'push' && github.ref == 'refs/heads/master') || github.event_name == 'release' | ||
steps: | ||
- uses: actions/download-artifact@v1 | ||
with: | ||
name: ${{ matrix.os }}-${{ matrix.py-version }}-tf${{ matrix.tf-version }}-wheel | ||
name: ${{ matrix.os }}-${{ matrix.py-version }}-tf${{ matrix.tf-version }}-${{ matrix.cpu }}-wheel | ||
path: ./dist | ||
- run: | | ||
set -e -x | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This CPU setting makes sure that we cross compile for ARM64.