Skip to content

Remove sklearn example xfails - #8090

Merged
rapids-bot[bot] merged 28 commits into
NVIDIA:mainfrom
csadorf:sklearn-examples-drop-xfails
Jul 8, 2026
Merged

Remove sklearn example xfails#8090
rapids-bot[bot] merged 28 commits into
NVIDIA:mainfrom
csadorf:sklearn-examples-drop-xfails

Conversation

@csadorf

@csadorf csadorf commented May 12, 2026

Copy link
Copy Markdown
Contributor

Validates the upstream scikit-learn examples suite under cuml.accel with the static cuml.accel example xfail list removed.

The examples job now installs the optional dependencies needed by the upstream examples and enforces a pass-rate gate on the JUnit summary. The one remaining static example xfail is applications::wikipedia_principal_eigenvector, which also fails without cuml.accel on this dependency stack.

Changes

  • Install optional scikit-learn example dependencies in ci/test_python_sklearn_examples.sh: plotly, polars, pooch, and scikit-image
  • Remove the stale static cuml.accel example xfails from xfail-examples.yaml
  • Add a 300s per-example timeout cap so the examples job completes reliably within the 60m CI timeout
  • Fix summary accounting so xfails are counted separately from skips
  • Enforce a 90% examples pass-rate gate in CI

Validation

The latest targeted PR CI run with the sklearn examples job completed under 50 minutes on both H100 jobs:

  • CUDA 12.9.2 / Python 3.14: 266 passed, 14 xfailed, 0 failed, 0 errors, 95.00% pass rate
  • CUDA 13.3.0 / Python 3.14: 266 passed, 14 xfailed, 0 failed, 0 errors, 95.00% pass rate

The temporary .github/workflows/pr.yaml changes used to run the sklearn examples job in PR CI have been reverted from the final branch diff.

Closes #8180

@csadorf csadorf added bug Something isn't working non-breaking Non-breaking change labels May 12, 2026
@copy-pr-bot

copy-pr-bot Bot commented May 12, 2026

Copy link
Copy Markdown

Auto-sync is disabled for draft pull requests in this repository. Workflows must be run manually.

Contributors can view more details about this message here.

@github-actions github-actions Bot added conda conda issue Cython / Python Cython or Python issue ci labels May 12, 2026
@csadorf

This comment has been minimized.

@csadorf
csadorf force-pushed the sklearn-examples-drop-xfails branch from 7c809eb to 6a242b9 Compare May 13, 2026 14:34
@csadorf

This comment has been minimized.

@csadorf
csadorf force-pushed the sklearn-examples-drop-xfails branch from 6a242b9 to 6102eb7 Compare May 13, 2026 15:11
@csadorf

This comment has been minimized.

@csadorf
csadorf force-pushed the sklearn-examples-drop-xfails branch from 6102eb7 to f08b9ed Compare June 1, 2026 20:16
@csadorf

This comment has been minimized.

@csadorf
csadorf force-pushed the sklearn-examples-drop-xfails branch 2 times, most recently from 1b86a4c to af5f4d4 Compare June 12, 2026 20:58
@csadorf

This comment has been minimized.

@csadorf
csadorf force-pushed the sklearn-examples-drop-xfails branch from af5f4d4 to c740c0f Compare June 22, 2026 18:15
@copy-pr-bot

copy-pr-bot Bot commented Jun 22, 2026

Copy link
Copy Markdown

This pull request requires additional validation before any workflows can run on NVIDIA's runners.

Pull request vetters can view their responsibilities here.

Contributors can view more details about this message here.

@csadorf

This comment has been minimized.

@csadorf
csadorf marked this pull request as ready for review June 22, 2026 22:38
@csadorf
csadorf requested review from a team as code owners June 22, 2026 22:38
@csadorf
csadorf requested review from divyegala and gforsyth June 22, 2026 22:38
@csadorf
csadorf marked this pull request as draft June 22, 2026 22:38
@csadorf
csadorf removed request for divyegala and gforsyth June 22, 2026 22:39
@coderabbitai

coderabbitai Bot commented Jun 22, 2026

Copy link
Copy Markdown

Review Change Stack

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

The PR narrows the active CI workflow, updates the scikit-learn examples runner and xfail configuration, changes result summarization logic, and rewrites the upstream tests README.

Changes

CI narrowing and sklearn example test hardening

Layer / File(s) Summary
CI workflow narrowed
.github/workflows/pr.yaml
Reduces pr-builder dependencies, comments out several CI jobs, renames the single-GPU Python test job key, and updates the sklearn examples job filter.
sklearn examples runner and xfail config
ci/test_python_sklearn_examples.sh, python/cuml/cuml_accel_tests/upstream/scikit-learn/example_collector.py, python/cuml/cuml_accel_tests/upstream/scikit-learn/xfail-examples.yaml
Installs optional example dependencies, changes example/summary exit-code handling, adjusts the example timeout help text, and replaces the example xfail rule set with a single wikipedia_principal_eigenvector rule.
Pass-rate accounting changed
python/cuml/cuml_accel_tests/upstream/summarize-results.py
Computes regular errors and skips from testcase outcomes, updates pass-rate and summary rows, and removes a stale inline comment.
Upstream tests README rewritten
python/cuml/cuml_accel_tests/upstream/README.md
Reorganizes documentation for runner usage, sklearn examples setup, results analysis, xfail workflows, version conditions, unmatched IDs, and parity steps.

Estimated code review effort: 3 (Moderate) | ~25 minutes

Possibly related PRs

  • rapidsai/cuml#7960: Both PRs modify the upstream scikit-learn example test infrastructure, including example runner behavior and xfail handling.
  • rapidsai/cuml#8193: Both PRs adjust python/cuml/cuml_accel_tests/upstream/scikit-learn/xfail-examples.yaml to change expected-failure coverage.
  • rapidsai/cuml#8259: Both PRs edit the same xfail configuration area for scikit-learn example failures.

Suggested labels: improvement, cuml-accel

Suggested reviewers: jcrist, viclafargue, dantegd

🚥 Pre-merge checks | ✅ 2 | ❌ 3

❌ Failed checks (3 warnings)

Check name Status Explanation Resolution
Linked Issues check ⚠️ Warning It removes many xfails, but leaves a remaining exclusion and temporary CI/debug edits, so the #8180 goal of all in-scope examples passing is not fully satisfied. Remove or justify the remaining exclusion, and split or revert the temporary workflow/debug changes before merging.
Out of Scope Changes check ⚠️ Warning The workflow job pruning and debug/runtime logging changes are temporary validation work that sits outside #8180's core example-failure fix. Move the CI/debug workflow edits to a separate PR or revert them, leaving only the durable example and docs changes here.
Docstring Coverage ⚠️ Warning Docstring coverage is 9.09% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (2 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly summarizes the main change of removing sklearn example xfails.
Description check ✅ Passed The description is directly related to the sklearn examples CI and xfail cleanup changes.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Comment @coderabbitai help to get the list of available commands.

@csadorf
csadorf force-pushed the sklearn-examples-drop-xfails branch from 6044b55 to 352fc89 Compare July 7, 2026 15:41
@csadorf
csadorf force-pushed the sklearn-examples-drop-xfails branch from 352fc89 to 9d73463 Compare July 7, 2026 15:47

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick comments (1)
python/cuml/cuml_accel_tests/upstream/summarize-results.py (1)

309-360: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Add regression coverage for the JUnit counting logic
A small fixture test would lock in mixed pytest.xfail, regular skip, and error/failure cases so future changes don’t regress the pass-rate math.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@python/cuml/cuml_accel_tests/upstream/summarize-results.py` around lines 309
- 360, Add a regression test for the JUnit counting logic in
summarize-results.py that exercises mixed testcase outcomes and verifies the
pass-rate math stays correct. Use the existing counting flow around the testcase
loop and passed calculation to cover regular failures, regular errors, regular
skips, pytest.xfail skips, and XPASS(strict)/XPASS cases so future changes don’t
double-count or misclassify outcomes. Keep the fixture small but assert the
final tallies and pass rate reflect the intended behavior of the
summarize-results logic.

Source: Coding guidelines

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Nitpick comments:
In `@python/cuml/cuml_accel_tests/upstream/summarize-results.py`:
- Around line 309-360: Add a regression test for the JUnit counting logic in
summarize-results.py that exercises mixed testcase outcomes and verifies the
pass-rate math stays correct. Use the existing counting flow around the testcase
loop and passed calculation to cover regular failures, regular errors, regular
skips, pytest.xfail skips, and XPASS(strict)/XPASS cases so future changes don’t
double-count or misclassify outcomes. Keep the fixture small but assert the
final tallies and pass rate reflect the intended behavior of the
summarize-results logic.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: 8c838d75-b74e-48b5-bb44-f7e18ab4fa2d

📥 Commits

Reviewing files that changed from the base of the PR and between 6044b55 and 352fc89.

📒 Files selected for processing (6)
  • .github/workflows/pr.yaml
  • ci/test_python_sklearn_examples.sh
  • python/cuml/cuml_accel_tests/upstream/README.md
  • python/cuml/cuml_accel_tests/upstream/scikit-learn/example_collector.py
  • python/cuml/cuml_accel_tests/upstream/scikit-learn/xfail-examples.yaml
  • python/cuml/cuml_accel_tests/upstream/summarize-results.py
💤 Files with no reviewable changes (1)
  • python/cuml/cuml_accel_tests/upstream/scikit-learn/xfail-examples.yaml
🚧 Files skipped from review as they are similar to previous changes (1)
  • .github/workflows/pr.yaml

@csadorf

csadorf commented Jul 7, 2026

Copy link
Copy Markdown
Contributor Author

The CI runtime concerns are addressed now with a 300s per-example timeout cap. The latest sklearn examples jobs complete under 50 minutes, and both reported 266 passed, 14 xfailed, 0 failed, 0 errors for a 95.00% pass rate.

Like @betatim , I was not able to locally reproduce the extremely long runtimes for most of the examples; the exception was svm/plot_svm_scale_c.py, which also hit the 300s cap locally.

Last step is to revert the temporary CI config changes used for the test run. After that, I think this is good to merge.

@csadorf csadorf removed the DO NOT MERGE Hold off on merging; see PR for details label Jul 7, 2026
@csadorf
csadorf removed the request for review from a team July 7, 2026 21:57
@csadorf

csadorf commented Jul 8, 2026

Copy link
Copy Markdown
Contributor Author

/merge

@rapids-bot
rapids-bot Bot merged commit b3590bf into NVIDIA:main Jul 8, 2026
94 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working ci conda conda issue Cython / Python Cython or Python issue non-breaking Non-breaking change

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Support all scikit-learn examples under cuml.accel

6 participants