Skip to content
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

MAINT Skip unstable GPR tests on 32 bit Python #20334

Merged

Conversation

@ogrisel
Copy link
Member

@ogrisel ogrisel commented Jun 23, 2021

Those tests failed with Python 3.7 and 3.8 on 32 bit linux on the nightly [cd build] runs since a few days (possibly related to scipy 1.7.0) but those tests were also previously skipped on Python 3.6.

Lists of impacted tests:

  • test_gpr_interpolation
  • test_lml_improving
  • test_predict_cov_vs_std

Observed failures:

      @pytest.mark.parametrize("kernel", kernels)
      def test_gpr_interpolation(kernel):
          if sys.maxsize <= 2 ** 32 and sys.version_info[:2] == (3, 6):
              pytest.xfail("This test may fail on 32bit Py3.6")
      
          # Test the interpolating property for different kernels.
          gpr = GaussianProcessRegressor(kernel=kernel).fit(X, y)
          y_pred, y_cov = gpr.predict(X, return_cov=True)
      
  >       assert_almost_equal(y_pred, y)
  E       AssertionError: 
  E       Arrays are not almost equal to 7 decimals
  E       
  E       Mismatched elements: 6 / 6 (100%)
  E       Max absolute difference: 3.21747557
  E       Max relative difference: 7.59985682
  E        x: array([ 1.9365826, -2.7941155, -2.407411 , -0.29458  ,  3.0978149,
  E               7.7699864])
  E        y: array([ 0.841471 ,  0.42336  , -4.7946214, -1.676493 ,  4.5989062,
  E               7.914866 ])
      @pytest.mark.parametrize("kernel", non_fixed_kernels)
      def test_lml_improving(kernel):
          if sys.maxsize <= 2 ** 32 and sys.version_info[:2] == (3, 6):
              pytest.xfail("This test may fail on 32bit Py3.6")
      
          # Test that hyperparameter-tuning improves log-marginal likelihood.
          gpr = GaussianProcessRegressor(kernel=kernel).fit(X, y)
  >       assert gpr.log_marginal_likelihood(gpr.kernel_.theta) > gpr.log_marginal_likelihood(
              kernel.theta
          )
  E       assert -111266738064.26326 > -48.88011095337428

Note that test_predict_cov_vs_std was not recently failing but I suspect that this is not numerically stable on 32 bit Python either because it used to fail under Python 3.6.

@ogrisel
Copy link
Member Author

@ogrisel ogrisel commented Jun 23, 2021

There is another unrelated error when building scikit-learn on win32 for Python 3.7:

    Partial import of sklearn during the build process.
    error: Command "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.29.30037\bin\HostX86\x86\link.exe /nologo /INCREMENTAL:NO /LTCG /DLL /MANIFEST:EMBED,ID=2 /MANIFESTUAC:NO /LIBPATH:c:\cibw\python\pythonx86.3.7.9\tools\libs /LIBPATH:c:\cibw\python\pythonx86.3.7.9\tools\PCbuild\win32 /LIBPATH:build\temp.win32-3.7 /LIBPATH:"C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.29.30037\ATLMFC\lib\x86" /LIBPATH:"C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.29.30037\lib\x86" /LIBPATH:"C:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\lib\um\x86" /LIBPATH:"C:\Program Files (x86)\Windows Kits\10\lib\10.0.19041.0\ucrt\x86" /LIBPATH:"C:\Program Files (x86)\Windows Kits\10\lib\10.0.19041.0\um\x86" /LIBPATH:"C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.29.30037\ATLMFC\lib\x86" /LIBPATH:"C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.29.30037\lib\x86" /LIBPATH:"C:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\lib\um\x86" /LIBPATH:"C:\Program Files (x86)\Windows Kits\10\lib\10.0.19041.0\ucrt\x86" /LIBPATH:"C:\Program Files (x86)\Windows Kits\10\lib\10.0.19041.0\um\x86" /LIBPATH:"C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.29.30037\ATLMFC\lib\x86" /LIBPATH:"C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.29.30037\lib\x86" /LIBPATH:"C:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\lib\um\x86" /LIBPATH:"C:\Program Files (x86)\Windows Kits\10\lib\10.0.19041.0\ucrt\x86" /LIBPATH:"C:\Program Files (x86)\Windows Kits\10\lib\10.0.19041.0\um\x86" /EXPORT:PyInit__random build\temp.win32-3.7\Release\sklearn\utils\_random.obj /OUT:build\lib.win32-3.7\sklearn\utils\_random.cp37-win32.pyd /IMPLIB:build\temp.win32-3.7\Release\sklearn\utils\_random.cp37-win32.lib /openmp" failed with exit status 1158
    Building wheel for scikit-learn (PEP 517): finished with status 'error'

It seems to be related the configuration of the Windows linker for this build.

Should probably be tackled in a dedicated PR because I am not sure about the proper fix and don't want to make this PR more complicated.

@ogrisel
Copy link
Member Author

@ogrisel ogrisel commented Jun 23, 2021

The fetch_openml/numpy.unique deprecation warning was solved concurrently and merged in main.

Copy link
Contributor

@glemaitre glemaitre left a comment

LGTM regarding the GPR side. It seems to be problematic but not linked to this PR because the results show that the maximization of the log-likelihood does not work on 32 bits system.

@ogrisel
Copy link
Member Author

@ogrisel ogrisel commented Jun 23, 2021

I opened #20337 to track the 32 bit numerical stability issues in GPR.

@ogrisel ogrisel merged commit 5b3721c into scikit-learn:main Jun 23, 2021
51 of 57 checks passed
51 of 57 checks passed
@github-actions
check check
Details
@github-actions
check check
Details
@github-actions
check check
Details
@github-actions
check
Details
@github-actions
check
Details
@github-actions
check
Details
@github-actions
triage
Details
@github-actions
labeler
Details
@github-actions
labeler
Details
@github-actions
labeler
Details
@github-actions
Check build trigger
Details
@github-actions
Build wheel for cp37-win32-manylinux2010 Build wheel for cp37-win32-manylinux2010
Details
@github-actions
triage_file_extensions
Details
@github-actions
Build wheel for cp37-win_amd64-manylinux2010
Details
@github-actions
Build wheel for cp38-win32-manylinux2010
Details
@github-actions
Build wheel for cp38-win_amd64-manylinux2010
Details
@github-actions
Build wheel for cp39-win32-manylinux2010
Details
@github-actions
Build wheel for cp39-win_amd64-manylinux2010
Details
@github-actions
Build wheel for cp37-manylinux_i686-manylinux1
Details
@github-actions
Build wheel for cp37-manylinux_i686-manylinux2010
Details
@github-actions
Build wheel for cp37-manylinux_x86_64-manylinux1
Details
@github-actions
Build wheel for cp37-manylinux_x86_64-manylinux2010
Details
@github-actions
Build wheel for cp38-manylinux_i686-manylinux1
Details
@github-actions
Build wheel for cp38-manylinux_i686-manylinux2010
Details
@github-actions
Build wheel for cp38-manylinux_x86_64-manylinux1
Details
@github-actions
Build wheel for cp38-manylinux_x86_64-manylinux2010
Details
@github-actions
Build wheel for cp39-manylinux_i686-manylinux1
Details
@github-actions
Build wheel for cp39-manylinux_i686-manylinux2010
Details
@github-actions
Build wheel for cp39-manylinux_x86_64-manylinux1
Details
@github-actions
Build wheel for cp39-manylinux_x86_64-manylinux2010
Details
@github-actions
Build wheel for cp37-macosx_x86_64-manylinux2010
Details
@github-actions
Build wheel for cp38-macosx_x86_64-manylinux2010
Details
@github-actions
Build wheel for cp39-macosx_x86_64-manylinux2010
Details
@github-actions
Source distribution
Details
@github-actions
Upload to Anaconda
Details
@azure-pipelines
scikit-learn.scikit-learn Build #20210623.8 had test failures
Details
@azure-pipelines
scikit-learn.scikit-learn (Linux pylatest_pip_openblas_pandas) Linux pylatest_pip_openblas_pandas failed
Details
@lgtm-com
LGTM analysis: C/C++ No code changes detected
Details
@lgtm-com
LGTM analysis: JavaScript No code changes detected
Details
@lgtm-com
LGTM analysis: Python No new or fixed alerts
Details
@travis-ci
Travis CI - Pull Request Build Passed
Details
ci/circleci: deploy Your tests passed on CircleCI!
Details
ci/circleci: doc Your tests passed on CircleCI!
Details
@circleci-artifacts-redirector
ci/circleci: doc artifact Link to 0/doc/_changed.html
Details
ci/circleci: doc-min-dependencies Your tests passed on CircleCI!
Details
ci/circleci: lint Your tests passed on CircleCI!
Details
@azure-pipelines
scikit-learn.scikit-learn (Get Git Commit) Get Git Commit succeeded
Details
@azure-pipelines
scikit-learn.scikit-learn (Linting) Linting succeeded
Details
@azure-pipelines
scikit-learn.scikit-learn (Linux py37_conda_openblas) Linux py37_conda_openblas succeeded
Details
@azure-pipelines
scikit-learn.scikit-learn (Linux ubuntu_atlas) Linux ubuntu_atlas succeeded
Details
@azure-pipelines
scikit-learn.scikit-learn (Linux32 debian_atlas_32bit) Linux32 debian_atlas_32bit succeeded
Details
@azure-pipelines
scikit-learn.scikit-learn (Linux_Runs pylatest_conda_mkl) Linux_Runs pylatest_conda_mkl succeeded
Details
@azure-pipelines
scikit-learn.scikit-learn (Ubuntu_Bionic py37_conda) Ubuntu_Bionic py37_conda succeeded
Details
@azure-pipelines
scikit-learn.scikit-learn (Windows py37_conda_mkl) Windows py37_conda_mkl succeeded
Details
@azure-pipelines
scikit-learn.scikit-learn (Windows py37_pip_openblas_32bit) Windows py37_pip_openblas_32bit succeeded
Details
@azure-pipelines
scikit-learn.scikit-learn (macOS pylatest_conda_forge_mkl) macOS pylatest_conda_forge_mkl succeeded
Details
@azure-pipelines
scikit-learn.scikit-learn (macOS pylatest_conda_mkl_no_openmp) macOS pylatest_conda_mkl_no_openmp succeeded
Details
@ogrisel ogrisel deleted the ogrisel:skip-unstable-gpr-tests-on-32-bit-python branch Jun 23, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Linked issues

Successfully merging this pull request may close these issues.

None yet

2 participants