-
Notifications
You must be signed in to change notification settings - Fork 3k
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
Support ARM architecture (multi-arch images) #1019
Comments
I think its a good idea if we both join forces, I left him a comment and lets see how it goes :) Thanks for the referal! |
@jiwidi don't these images run there? What's the issue? pip takes too long compiling? (add piwheels) |
What do you mean? If you mean if the normal images can be run in raspberry pi, no they can't. Because of the ARM architecture of rpis there is need for some special tricks or bypass to compile nodejs and other libraries |
I've started looking into it and the first obvious problem is that Latest miniconda armv7 is So, yeah, making this image "platform independent" means rebuilding on ubuntu packages or pip (pip is fragile, is fragile a lot.) |
You can check my work here https://hub.docker.com/repository/docker/step21/jupyter-minimal-notebook (base and minimal so far, soon also scipy-notebook once scikit-image gets merges) |
I'm interested this topic too.
Also my docker hub repositories contain all needed by zero-to-jupyter-hub(Jupyter Hub for kubernetes, Z2JH) images. I'm using Z2JH on kubernetes, Raspberry Pi 4(8GB) x4 cluster installed Ubuntu 20.04 64bit(arm64/aarch64). It seems work well for now. aarch64 images can build on GitHub Actions. (but very slow) I expected for maintainer team releases aarch64 images officially. See also: |
Cool! So far I had them built on docker hub after testing locally. |
Hello, if you don't mind I will rename this issue to something more general like "Support ARM architecture". |
Sure, please do. Cool that you did that. What did you use for building that the build time was such an issue? I just used dockerhub and that seemed to work relatively quickly. And how big is the difference? |
@step21 in fact here we are testing the images before before pushing them. In the case of multi-arch images we built an image for each architecture and tested them separately. Everything is in the PR but it takes ~3x more time to build the |
How about splitting it? Would be happy to help, but right now I cannot work on it. |
In the JupyterHub organization on GitHub, we have now published (thanks @manics!!!) arm64/aarch64 compatible images alongside the amd64/x86_64 for multiple repositories. I would like to help this repo do the same, but at the same time I find it crucial that future maintenance is sustainable. I created the enhancement proposal below with that in mind. Enhancement proposal
Current arm64/aarch64 compatibility statusI went ahead and tried building all Dockerfile's (no patches applied etc) with
|
@consideRatio |
@sakuraiyuta can you clarify if I understood you correctly: You meant that the |
@consideRatio Sorry, I don't read your comments carefully so I wrote simply a solution to resolve This project seems already supporting the patch process for another architecture. As you said, some python packages for But, strictly say, it means that changes what the project serves, supports, and testing. |
@sakuraiyuta and @consideRatio since the PR #1189 we have switched to miniforge instead of miniconda and so the default channel is |
@romainx @mathbunnyru do you think #1019 (comment) would be something I could work towards? |
@consideRatio if you don't mind, I would like to take a few days to give this a thought, because I want to be more familiar with the process of building for other archs in GitHub/Docker environment. |
Docker buildx uses qemu to build images for non native architectures. There are a few issues when building multi-arch images simultaneously under the same tag that may have an impact here. This is a good introduction to the overall process https://www.docker.com/blog/multi-arch-build-and-images-the-simple-way/
The final issue is testing, |
Hello @manics I ran into the same issue in my PR #1202. I had to build the image for each architecture one by one and with nothing done in parallel, so it was a bit long. In fact it was the main blocker. However, I was able to run the unit tests on each architecture variant successfully thanks to qemu. I had even modified the tests because @pytest.mark.skip_arch(["arm64", "ppc64le"])
def test_pandoc(container):
"""Pandoc shall be able to convert MD to HTML."""
LOGGER.info(container.image_name) @consideRatio I can confirm that the only modification made to the |
We would be kind for any help with the new archs so your help would be great. I will comment on each element of your proposal
💯 agree
💯 agree
💯 agree
This is where As far as I understand, we could for example have our self-hosted runners for arm. |
@mathbunnyru thanks for taking the time to deliberate on my proposal! I think the proposal I made was quite course and needs some additional exploration on the implementation - but it is very central to me that it is sustainable to maintain as you emphasis. @romainx @mathbunnyru perhaps I could start working on a separate PR scoped just about point 1 and 2? Regarding creating maintenance sustainable support for multiple architectures, I think I need to do some practical exploration and readup on past work to become more clearly opinionated on what I think is a good approach. But, here are some thoughts at this point.
|
@consideRatio I don't want to put any pressure on you, but how is it going? :) |
I created myself a VM on Amazon to have much faster builds. |
Did you create a arm64 VM on Amazon and used the normal @mathbunnyru can you provide a link to that upstream issue? |
It's in the top message of this issue. |
Everything except datascience and tensorflow images builds fine in CI, so I think we can close this issue. Datascience notebook builds fine on a real arm machine or vm, but not in qemu. There is no official wheel for arm tensorflow, so for now I don't think there is strong need for this image. If there will be an official wheel one day, then adding support for arm would be a one line change in Makefile. |
Hi @mathbunnyru |
Hi @florianbaer
Also, it might be worth checking again, that |
Hi!
I was working recently with some Docker images for jupyterlab to run in raspberry pis and I was wondering if an image like that one could be worth including in this notebook or if its of value for the Jupyter team. I will very happy to work towards a contribution for this but first want to check wether there is value for it.
Thanks!
Update by Erik
#1399 has been merged - we have published a few amd64 and arm64 compatible images!
Remaining work
Update by Ayaz
scipy-notebook
is waiting for conda-forge/bottleneck-feedstock#35scipy-notebook
andr-notebook
are ready now to be built #1444I will wait for the PR and update the tree above.
Update:
scipy-notebook
andr-notebook
are now available for arm!The text was updated successfully, but these errors were encountered: