-
-
Notifications
You must be signed in to change notification settings - Fork 8.7k
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
Release a CPU only wheel on PyPI #10596
Comments
Perhaps |
Not sure if toml project allows a different dependencies profile that overrides the default one. So far the optional dependency configuration only allows additional dependencies. |
Alternatively, you can consider conda, which has greater flexibility but the version update is a bit behind. |
Not ideal as I have other packages in my requirements file for which I want to keep the dependencies, unless I create a specific Heroku buildpack for XGBoost install which sounds a bit overkill. Why not moving "nvidia-nccl-cu12 ; platform_system == 'Linux' and platform_machine != 'aarch64'" down into [project.optional-dependencies] ? Having NCCL as a required dependency really penalizes CPU users |
It might be better to release a CPU-only package to PyPI, e.g. |
I will leave it to @hcho3 to decide whether it's needed to maintain a fleet of packages (arm linux, x86 linux, windows, macos, arm macos, sdist) for a new pypi project. It's a bit odd that pep517 has a way to turn on features in a package by having optional dependencies, but there's no way to turn off a feature. Maybe I'm missing something there. |
@trivialfis For |
Thank you for looking into this @hcho3 . Please note that the feature has been requested for Python https://discuss.python.org/t/help-packaging-optional-application-features-using-extras/14074/18 before and there are lots of discussions. It's not surprising since packages all want to provide as many features as possible in the default build. If we were to make a new project, we should prepare for deprecating/archiving that project as well if pep517 were to support these types of optional dependencies in the future. |
I agree. We can archive |
@rbeilvert As a workaround, you can add the following URL to your
This will install a variant of XGBoost 2.1.0 that doesn't require NCCL. Our plan is to upload this package under the name |
@trivialfis It turns out that I already did the necessary work to repackage XGBoost without GPU code in #10478 and #10483. So all it takes is the renaming of the package to |
It still needs to remove NCCL from pyproject right? |
This line removes NCCL from pyproject:
I will adapt the patch so that it doesn't show the warning about old glibc. |
The @rbeilvert @agossard-gpfw @yassinezaim-cp @kmodry @jmarichez @NicolasLegeay @mathieu-luciani @gtramoy @CyprienDuv |
I am using XGBoost on CPU only and do not require the NCCL library
Until before XGBoost v2.1.0 I managed to installed the lib with pip and --no-binay option to compile the package without NCCL
Since v2.1.0,
nvidia-nccl-cu12
is installed from PyPI and its huge 190MB weight makes my app not fit on my Heroku server anymore.Is there another way to avoid the installation of this dependency than to edit the pyproject.toml file from XGBoost locally and install it locally ?
The text was updated successfully, but these errors were encountered: