Xgboost: Nightly releases

Created on 27 Aug 2019  Â·  15Comments  Â·  Source: dmlc/xgboost

I have had requests from some users for access to nightly releases from our CI. I believe it would simplify the workflow for many groups. This thread is to track the issue and discuss implementation.

As far as I know we do have packages being produced on master branch, I'm not sure if they are stored in any kind of persistent storage. I would imagine it would just be a case of archiving binaries on S3 and providing a link in documentation?

feature-request

Most helpful comment

Replacing the build number with lastSuccessfulBuild seems to work. So the above would become https://xgboost-ci.net/job/xgboost/job/master/lastSuccessfulBuild/artifact/python-package/dist/xgboost-1.0.0_SNAPSHOT-py2.py3-none-any.whl

This will still be an issue when the artifact name changes from 1.0.0_SNAPSHOT to something else (1.1.0_SNAPSHOT maybe?).

All 15 comments

@hcho3 Can we put out some short document in installation about this?

I see that it's possible to manually find the download URL for this wheel and install it.

It was be really useful if there could be a pip package alias for the latest version of this nightly package so that CI or other script created environments can more easily find it.

For instance https://xgboost-ci.net/job/xgboost/job/master/344/artifact/python-package/dist/xgboost-1.0.0_SNAPSHOT-py2.py3-none-any.whl is the "latest" URL, but that "344" in the URL changes for every build, making it difficult to use in a conda environment yml file.

Replacing the build number with lastSuccessfulBuild seems to work. So the above would become https://xgboost-ci.net/job/xgboost/job/master/lastSuccessfulBuild/artifact/python-package/dist/xgboost-1.0.0_SNAPSHOT-py2.py3-none-any.whl

This will still be an issue when the artifact name changes from 1.0.0_SNAPSHOT to something else (1.1.0_SNAPSHOT maybe?).

Should we put them in an S3 bucket with some consistent naming?

@RAMitchell Yes, I think we should store artifacts in a S3 bucket and name it consistently (e.g. use commit IDs)

Is it possible that CI could publish wheels for varying architectures?

I'm trying to use this nightly artifact with Google Colab, but on install I get:

ERROR: xgboost-1.0.0-SNAPSHOT-py2.py3-none-any.whl is not a supported wheel on this platform.

For reference, here's the Python and system info:

sys.version:
3.6.8 (default, Jan 14 2019, 11:02:34) 
[GCC 8.0.1 20180414 (experimental) [trunk revision 259383]]

print(platform.architecture())
('64bit', '')

print(platform.machine())
x86_64

@randerzander We target x86-64 architecture exclusively. Can you check what processor architecture Google Colab uses? Currently we do not plan to build wheels for any other architecture.

I edited my comment above. It looks like Colab _is_ x86_64

In case you want to try it directly, the command I'm using to try installing is:

!pip install https://xgboost-ci.net/job/xgboost/job/master/lastSuccessfulBuild/artifact/python-package/dist/xgboost-1.0.0-SNAPSHOT-py2.py3-none-any.whl

Result:

ERROR: xgboost-1.0.0-SNAPSHOT-py2.py3-none-any.whl is not a supported wheel on this platform.

Any suggestions on other information to get?

@randerzander The wheel URL is wrong. Try

pip install https://xgboost-ci.net/job/xgboost/job/master/lastSuccessfulBuild/artifact/python-package/dist/xgboost-1.0.0_SNAPSHOT-py2.py3-none-any.whl

I will submit a PR this weekend to upload all wheel artifacts to an S3 bucket, so that users can easily locate the wheels by the commit IDs. The expectation is that users can choose an exact commit from GitHub and install the corresponding XGBoost wheel with simple pip3 install command:

pip3 install https:/\/s3-us-west-2.amazonaws.com/xgboost-nightly-builds/xgboost-1.0.0+[commit hash]-py2.py3-none-manylinux1_x86_64.whl

Anyone care to share a current working link example / limitations (last available version etc)? The nightlies list page is empty, could not construct a working link using the docs.

In the doc you reffed, there's a link https://s3-us-west-2.amazonaws.com/xgboost-nightly-builds/list.html

Thanks, I realized it's an issue with my apparently unsupported browser..., so got this listing page finally to work (by switching to incognito mode in Firefox).

However, the links format is not exactly as the docs specifies... there are several differences (two extra strings: "_SNAPSHOT" and "2010" and the "py2" token is gone - the docs need updating...):

[mir@CentOS-80-64-minimal ~]$ wget https://s3-us-west-2.amazonaws.com/xgboost-nightly-builds/xgboost-1.1.0_SNAPSHOT%2B057c762ecdabc97000f26223181d94f28ab28239-py3-none-manylinux2010_x86_64.whl
--2020-08-06 13:53:13--  https://s3-us-west-2.amazonaws.com/xgboost-nightly-builds/xgboost-1.1.0_SNAPSHOT%2B057c762ecdabc97000f26223181d94f28ab28239-py3-none-manylinux2010_x86_64.whl
Resolving s3-us-west-2.amazonaws.com (s3-us-west-2.amazonaws.com)... 52.218.184.8
Connecting to s3-us-west-2.amazonaws.com (s3-us-west-2.amazonaws.com)|52.218.184.8|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 128498134 (123M) [application/octet-stream]
Saving to: ‘xgboost-1.1.0_SNAPSHOT+057c762ecdabc97000f26223181d94f28ab28239-py3-none-manylinux2010_x86_64.whl’

                       xgboost-1.1.0_SNAPSHOT+057   0%[                                                                                                             ] 245.63K   100MB/s  

And what's really nice, according to the docs, these are not just CPU-only builds, but universal ones, that should enable training in NVIDIA GPUs as well if you have CUDA libraries installed (as in the case of catboost).

Was this page helpful?
0 / 5 - 0 ratings

Related issues

frankzhangrui picture frankzhangrui  Â·  3Comments

vkuznet picture vkuznet  Â·  3Comments

uasthana15 picture uasthana15  Â·  4Comments

matthewmav picture matthewmav  Â·  3Comments

RanaivosonHerimanitra picture RanaivosonHerimanitra  Â·  3Comments