Skip to content

feat: swe bench scorer#342

Open
tianmu-li wants to merge 5 commits into
mlcommons:mainfrom
tianmu-li:feat/swe_bench_scorer
Open

feat: swe bench scorer#342
tianmu-li wants to merge 5 commits into
mlcommons:mainfrom
tianmu-li:feat/swe_bench_scorer

Conversation

@tianmu-li

Copy link
Copy Markdown
Collaborator

What does this PR do?

Type of change

  • Bug fix
  • New feature
  • Documentation update
  • Refactor/cleanup

Related issues

Testing

  • Tests added/updated
  • All tests pass locally
  • Manual testing completed

Checklist

  • Code follows project style
  • Pre-commit hooks pass
  • Documentation updated (if needed)

@github-actions

github-actions Bot commented Jun 5, 2026

Copy link
Copy Markdown

MLCommons CLA bot All contributors have signed the MLCommons CLA ✍️ ✅

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Code Review

This pull request introduces support for SWE-bench accuracy evaluation by adding a new accuracy-only SWEBench dataset, a SWEBenchScorer that runs evaluations using mini-swe-agent in an isolated environment, and associated configuration templates, tests, and runbooks. Feedback on the changes focuses on improving the robustness of the SWEBenchScorer implementation, specifically by safely handling missing or null values when parsing configuration templates, benchmark configurations, and evaluation results, as well as gracefully handling cases where the Docker binary is missing from the system's PATH during preflight checks.

Important

The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.

Comment thread src/inference_endpoint/evaluation/scoring.py Outdated
Comment thread src/inference_endpoint/evaluation/scoring.py Outdated
Comment thread src/inference_endpoint/evaluation/scoring.py Outdated
Comment thread src/inference_endpoint/evaluation/scoring.py Outdated
@tianmu-li tianmu-li force-pushed the feat/swe_bench_scorer branch 2 times, most recently from aa7f559 to bb9b307 Compare June 15, 2026 05:16
@tianmu-li tianmu-li marked this pull request as ready for review June 21, 2026 17:28
@tianmu-li tianmu-li requested review from a team and Copilot June 21, 2026 17:28
@tianmu-li tianmu-li changed the title WIP feat: swe bench scorer feat: swe bench scorer Jun 21, 2026

Copilot AI 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.

Pull request overview

Adds first-class SWE-bench accuracy support to the benchmarking system by introducing an external (subprocess-driven) scorer and a predefined SWE-bench dataset, plus wiring in config/schema handling and examples to run the workflow.

Changes:

  • Introduces SWEBenchScorer (external evaluation via uv run --project ... mini-extra + swebench harness) and integrates it into the scoring/benchmark lifecycle (preflight, phase skipping, reporting).
  • Adds predefined swe_bench dataset with caching + an ACCURACY_ONLY guard to prevent using it as a performance dataset.
  • Updates schema/templates/examples and adds unit tests for the scorer + dataset + benchmark wiring.

Reviewed changes

Copilot reviewed 20 out of 21 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
uv.lock Locks pyyaml as a direct dependency.
pyproject.toml Adds pyyaml==6.0.3 to runtime dependencies.
src/inference_endpoint/evaluation/scoring.py Adds scorer preflight hooks, shared subprocess logging helper, and new SWEBenchScorer implementation.
src/inference_endpoint/dataset_manager/predefined/swe_bench/init.py Adds SWE-bench predefined dataset with HF download + parquet cache and ACCURACY_ONLY=True.
src/inference_endpoint/dataset_manager/dataset.py Introduces Dataset.ACCURACY_ONLY class flag.
src/inference_endpoint/dataset_manager/init.py Exposes/imports SWEBench dataset.
src/inference_endpoint/config/schema.py Adds swe_bench_scorer to ScorerMethod and injects concurrency → SWE-bench workers default.
src/inference_endpoint/commands/benchmark/execute.py Runs scorer preflight(), prevents accuracy-only datasets as perf, skips endpoint phases for external scorers, and improves sample counting/reporting.
src/inference_endpoint/config/templates/online_template_full.yaml Documents swe_bench_scorer as an accuracy scorer option.
src/inference_endpoint/config/templates/offline_template_full.yaml Documents swe_bench_scorer as an accuracy scorer option.
src/inference_endpoint/config/templates/concurrency_template_full.yaml Documents swe_bench_scorer as an accuracy scorer option.
examples/10_Agentic_Inference/swebench_template.yaml Adds a SWE-bench/mini-swe-agent config template used by the external scorer.
examples/10_Agentic_Inference/swe_bench_accuracy.yaml Adds a runnable example config for SWE-bench external accuracy evaluation.
examples/10_Agentic_Inference/README.md Documents how to sync/run the SWE-bench accuracy subproject.
examples/10_Agentic_Inference/qwen_agentic_benchmark.yaml Adds SWE-bench accuracy dataset to an agentic benchmark example.
examples/10_Agentic_Inference/kimi_agentic_benchmark.yaml Adds SWE-bench accuracy dataset to an agentic benchmark example.
examples/10_Agentic_Inference/accuracy/RUNBOOK.md Adds an ops runbook for validating the SWE-bench accuracy pipeline.
examples/10_Agentic_Inference/accuracy/pyproject.toml Adds isolated uv subproject deps for SWE-bench evaluation tooling.
tests/unit/evaluation/test_swe_bench_scorer.py Adds unit coverage for scorer behavior, config patching, and preflight.
tests/unit/dataset_manager/test_swe_bench_dataset.py Adds unit coverage for dataset registration, caching, and subset mapping.
tests/unit/commands/test_benchmark.py Adds tests for concurrency→workers injection, ACCURACY_ONLY enforcement, preflight propagation, and phase skipping behavior.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread src/inference_endpoint/evaluation/scoring.py
Comment thread src/inference_endpoint/evaluation/scoring.py Outdated
Comment thread src/inference_endpoint/dataset_manager/predefined/swe_bench/__init__.py Outdated
Copilot AI review requested due to automatic review settings June 21, 2026 23:36

Copilot AI 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.

Pull request overview

Copilot reviewed 20 out of 21 changed files in this pull request and generated 7 comments.

Comment thread src/inference_endpoint/evaluation/scoring.py
Comment thread src/inference_endpoint/evaluation/scoring.py
Comment thread src/inference_endpoint/evaluation/scoring.py
Comment thread src/inference_endpoint/evaluation/scoring.py
Comment thread examples/10_Agentic_Inference/swebench_template.yaml
Comment thread examples/10_Agentic_Inference/README.md
Comment thread examples/10_Agentic_Inference/swe_bench_accuracy.yaml Outdated
Copilot AI review requested due to automatic review settings June 25, 2026 13:38

Copilot AI 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.

Pull request overview

Copilot reviewed 21 out of 22 changed files in this pull request and generated 2 comments.

Comment thread examples/10_Agentic_Inference/accuracy/RUNBOOK.md Outdated
Comment thread examples/10_Agentic_Inference/qwen_agentic_benchmark.yaml Outdated
Copilot AI review requested due to automatic review settings July 6, 2026 18:13
@tianmu-li tianmu-li force-pushed the feat/swe_bench_scorer branch from 8d66f43 to ae04494 Compare July 6, 2026 18:13

Copilot AI 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.

Pull request overview

Copilot reviewed 24 out of 25 changed files in this pull request and generated 3 comments.

Comment thread src/inference_endpoint/commands/benchmark/execute.py
Comment thread src/inference_endpoint/commands/benchmark/execute.py Outdated
Comment thread src/inference_endpoint/evaluation/scoring.py
@codecov-commenter

codecov-commenter commented Jul 6, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 94.84733% with 27 lines in your changes missing coverage. Please review.
⚠️ Please upload report for BASE (main@1577095). Learn more about missing BASE report.

Files with missing lines Patch % Lines
src/inference_endpoint/evaluation/scoring.py 95.24% 20 Missing ⚠️
...c/inference_endpoint/commands/benchmark/execute.py 85.71% 7 Missing ⚠️
Additional details and impacted files
@@           Coverage Diff           @@
##             main     #342   +/-   ##
=======================================
  Coverage        ?   80.87%           
=======================================
  Files           ?      116           
  Lines           ?    15969           
  Branches        ?        0           
=======================================
  Hits            ?    12915           
  Misses          ?     3054           
  Partials        ?        0           

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

tianmu-li added 3 commits July 6, 2026 11:48
SWEBenchScorer.score() only evaluates min(num_instances, n_rows), but
results.json was recording the full loaded dataset size. Also default
external_sample_count to DEFAULT_NUM_INSTANCES instead of None when
num_instances is omitted, since that's the common case.
Copilot AI review requested due to automatic review settings July 6, 2026 22:49

Copilot AI 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.

Pull request overview

Copilot reviewed 24 out of 25 changed files in this pull request and generated 3 comments.

Comment thread src/inference_endpoint/evaluation/scoring.py Outdated
Comment thread src/inference_endpoint/evaluation/scoring.py Outdated
Comment thread src/inference_endpoint/evaluation/scoring.py Outdated
Copilot review flagged three robustness gaps in SWEBenchScorer: score()
read model_params.name via a raw subscript (KeyError on malformed
config.yaml) instead of the guarded check _patch_config() already used,
and _derive_required_images()/_prepull_image() let subprocess.TimeoutExpired
bubble up raw instead of as a SetupError. Also adds targeted unit tests for
previously-uncovered SWE-bench branches (preflight error paths, toolcall
patch install/restore failure handling, _patch_config endpoint branches,
module-level helpers) to close the patch-coverage gap codecov reported on
scoring.py.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants