-
Notifications
You must be signed in to change notification settings - Fork 3.8k
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
Add arm64 wheel to travis-ci #3421
Conversation
Hi @mattsplats , thanks for your interest in Can you explain more about the value of this change? Was there an issue in this project where you've previously discussed this? I think we need more context to review this. |
Thanks for looking @jameslamb - the value is adding a Python wheel for Arm users:
LightGBM currently only publishes wheels for x86 platforms. Be glad to open an issue to this effect if it is helpful. |
Actually, if you take another look at numpy you'll see releases for Arm (called "aarch64"): https://files.pythonhosted.org/packages/8a/78/22ab67c0cf07301be5433903c3ca865dd2af16a73784a1028fcf3646d1ee/numpy-1.19.2-cp36-cp36m-manylinux2014_aarch64.whl Pandas is currently migrating to travis-ci.com and should be available soon. |
1a6c589
to
aa461b6
Compare
aa461b6
to
21334e6
Compare
CLA signed, commit and description have been updated. |
oh ok cool, thanks! This is a bit outside of my experience, so I'd like to hear from other maintainers. Thanks for taking the time to contribute! |
No worries, I suspect some changes will be desired anyway. We might want to throw an |
cc @StrikerRUS for the CI part. |
Yeah, we used to utilize Travis and Appveyor to produce build artifacts that we upload to package managers later. But then we switched to Azure Pipelines and setup Docker image with the aim to produce consistent artifacts across all platforms. The main reason was in that users were suffering from too recent So I don't think we want to rollback to Travis with its' uncontrolled environment. It will mean that artifacts for ARM and x86 platform will be inconsistent in terms of supported OSes, will introduce diversity in reported bugs and increase maintenance burden to track all (breaking) changes happening in Travis environment. For now, I can propose only two alternative ways:
|
Apologies for a long post, lot of things to unpack here. First, issues with
(I can open an issue on this bug, if it's useful.) I think the way to build consistent artifacts across platforms is to use the manylinux containers. With these images you can use any CI, but Travis additionally provides Arm instances. Using the multibuild library makes maintaining consistent and correct wheels across architectures and Python versions very easy. A lot of projects use multibuild with Travis, like numpy, scipy, and pandas, and are now producing Arm wheels. Further examples: https://github.com/MacPython If you're not open to the above, an alternative is to use QEMU via Docker and emulate other architectures on your x86 CI. Some projects are doing this now on Azure pipelines. Multidict and yarl added Arm wheels this way via Github Actions. |
@StrikerRUS What's your preference to move forward? Happy to help add the manylinux containers to whatever CI you prefer. |
@mattsplats Thank you very much for your detailed response! Speaking about Linux tag, we are using the following container based on Ubuntu 14.04 right now For the ARM, it looks like you are very experienced in this area! Could you please clarify are there any drawbacks of using
Wow, nice! GitHub actions and Azure Pipelines are very similar and if I'm not mistaken even share the same base images. I'll become acquainted with CI pipelines of these projects and read more about QEMU this weekend. Thanks a lot for the info! |
@mattsplats Regarding LightGBM requires glibc >= 2.14.
https://www.python.org/dev/peps/pep-0571/#the-manylinux2010-policy. The next
https://www.python.org/dev/peps/pep-0599/#the-manylinux2014-policy Right now we manually audit our library files in artifacts by the following script: https://github.com/microsoft/LightGBM/blob/master/helpers/check_dynamic_dependencies.py. New iteration of I will really appreciate any your thoughts about the current situation with |
@StrikerRUS I think you can safely use the CentOS 6 is reaching EOL, and the manylinux2010 tag will be deprecated in a few weeks:
Also, |
@mattsplats Thanks a lot for your response!
I remember there was strong demand on exact
Unfortunately, a lot of our users are using even more outdated environments. FYI, EOL of Python 2 was about year ago but take a look at the following figure 😬 : |
@StrikerRUS @guolinke hi there, |
This pull request has been automatically locked since there has not been any recent activity since it was closed. To start a new related discussion, open a new issue at https://github.com/microsoft/LightGBM/issues including a reference to this. |
This PR adds builds and Python wheels for arm64 ("aarch64"). Here's an example build with these changes:
https://travis-ci.com/github/mattsplats/LightGBM/builds/187693808
It appears
test.sh
is creating wheels and uploading them to an Azure location:$BUILD_ARTIFACTSTAGINGDIRECTORY
.Some internal changes may be required to get arm64 wheels uploading to PyPI. Would appreciate any help/guidance here.
Other details: