-
-
Notifications
You must be signed in to change notification settings - Fork 25.8k
Release 1.4.2 #28774
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 1.4.2 #28774
Conversation
Co-authored-by: Loïc Estève <loic.esteve@ymail.com>
in d88930f I'm forcing For numpy 2 at test time, we have the |
In the wheel builder, can we have some testing with NumPy 2.0? From reading the GitHub actions docs, I think this works for installing NumPy 2.0 for the Python 3.12 tests:
|
I am fine with either option. If we go for the latter, I would like to add an inline comment to explain that this is temporary and can be deleted when building the wheels for future scikit-learn releases. |
Thanks Thomas, let me try that.
I added a comment, but this is very likely the last 1.4.X release anyway :) |
The py312 builds are now failing. This is expected because we need joblib 1.4, which should be released soon. |
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.
Overall looks good.
I hope the ~ 3 hours Windows + Python 3.12 build is a one-off issue: https://github.com/scikit-learn/scikit-learn/actions/runs/8603767124/job/23576402935?pr=28774
It wasn't. I forgot to backport #28692 although I had labelled it :) |
Hum, the build still hangs... |
I can reproduce locally. Windows amd cpu. The test Reproducer: import numpy as np
from sklearn.metrics import pairwise_distances
X = np.random.normal(size=(1000, 10), scale=1e10)
pairwise_distances(X) # works
pairwise_distances(X, n_jobs=2) # hangs Surprisingly I can only reproduce with python 3.12. With 3.11 it works. Below are the outputs of
|
I am a bit puzzled since the wheel on Also #28692 had no failures in our test but was triggered by a MNE-Python report. Scipy 1.13 actually has a patch for the original bug hence the 0.3.26.dev version in the All in all I think this is a slightly different bug maybe? One slightly weird thing I see in your Looking a bit at the Python 3.11 build log vs Python 3.12 build log, the Python 3.11 tests against numpy 1.26.4 for some reason. This one may also be another red herring. |
It's not related to #28692. The reproducer has nothing to do with pairwise_distances_reduction. The issue seems to come from a nesting of python threads and blas calls (gemm) |
I can reproduce without numpy 2 as well. And regardless of the Python version. Hangs with openblas 0.3.26 and doesn't with openblas 0.3.27. So it really seem to come from the same openblas issue as in #28692, just not at the same place.
|
Our Windows nightly build do not fail: https://github.com/scikit-learn/scikit-learn/actions/runs/8610015698/job/23594862032#step:6:2048 but the version of openblas from numpy (v0.3.23-293-gc2f4bdbb, did not have the thread-safety bug yet) is different from the one shipped with scipy (v0.3.26-382-gb1e8ba50, should have the fix for the thread-safety bug). EDIT: as soon as numpy 2 is released, we might experience the bug in |
I opened an issue upstream to ask numpy maintainers to ship the openblas fix in NumPy 2 numpy/numpy#26240 |
45a38f5
to
b5b65f7
Compare
We had a meeting to discuss how to proceed here. Here are the conclusions:
|
@jeremiedbb Thank you for pushing this through! 🎉 |
oh crap, I squashed |
no big deal since we very likely won't have a 1.4.3 but still 😡 |
Thanks all! Re the openblas vendored in numpy 2.0.0rc1: we'll do a 2.0.0rc2 with openblas 0.3.27 included to fix this, probably next week. |
[cd build]
commit message to upload wheels to the staging repohttps://github.com/conda-forge/scikit-learn-feedstock and wait for merge
https://github.com/scikit-learn/scikit-learn.github.io (only major/minor)
Extra check list
Only cherry-picked 87c32d3 and 01cd8d4 from the main branch because they are necessary for numpy 2 support.