Add Pyxis runtime for SWE-bench accuracy - #438
Conversation
|
Caution The consumer version of Gemini Code Assist on GitHub has been sunset. All code review activity has officially ceased. |
|
MLCommons CLA bot All contributors have signed the MLCommons CLA ✍️ ✅ |
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## main #438 +/- ##
=======================================
Coverage ? 81.90%
=======================================
Files ? 148
Lines ? 19638
Branches ? 0
=======================================
Hits ? 16085
Misses ? 3553
Partials ? 0 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
nv-alicheng
left a comment
There was a problem hiding this comment.
Review Council — Multi-AI Code Review
Reviewed by: Claude + Code-Quality | Depth: thorough
codex was unavailable in this environment — Claude + Code-Quality review. See the summary comment for the tiered breakdown.
Review Council — Multi-AI Code ReviewReviewed by: Claude + Code-Quality | Depth: thorough New Pyxis/SLURM SWE-bench subsystem. Subprocess calls use list-argv form with a sanitized env ( 🔴 Must Fix (high)
🟡 Should Fix (medium)
🔵 Consider (low)
Also raised, dropped as minor at this cap: magic image arch/version constants (
|
|
@hvagadia looking through this code, for the pyxis environment and worker support, as we are adding support into mini-swe agent itself, I would think it would make sense to upstream support for pyxis into mini-swe agent and open a PR in their repo instead for the pyxis support. https://github.com/SWE-agent/mini-swe-agent/tree/main/src/minisweagent/environments seems like the correct place. This would be great for the wider audience at Nvidia as well since others at Nvidia would be able to reuse your components for the pyxis support unblocking others. Right now my biggest concern is that there is some monkey patched codes: swebench.get_sb_environment = get_pyxis_environment
swebench.ProgressTrackingAgent = LiveTrajectoryAgentit will cause this module to break if the API changes. If we want to adopt this into this repo, I think we must at the minimum do an assert to pin this version of mini-swe of this library support to ensure that users don't try to use other versions of mini-swe with this library e.g. ( Upstreaming this module would be the path of less maintenance. In the meantime we could sustain a fork while we wait for the upstream to accept this PR and only if the upstream maintainers do not accept, then I believe we should sustain this. I'll let @nv-alicheng to top up any thoughts on this as well. Let me know what you think about this @hvagadia. Btw, I'm only referring to the agent part, but the eval part of this code look justified and it does look like something that we should own. ( |
|
Agreed with @leopck - the monkeypatching seems a little hacky to me (I believe this is the Medium - 4 in my agent review post), which I think should be maybe bumped up. Is it possible to make some child class to override and use that instead, or add it directly to swebench / make a fork? |
|
Summary from today's discussion: I will go ahead and try to create a PR to mini-swe agent and test out the waters. Independent of that, I think we should merge this PR to unblock our experiments. If in future mini swe accepts our proposal we will update accordingly. @leopck @nv-alicheng |
Agreed, let's unblock and get this merged. If the PR does get merged upstream, we can always remove it from the codebase. |
arekay-nv
left a comment
There was a problem hiding this comment.
Thanks for this - please add some documentation especially to the pyxis path for users who might not be too familiar with pyxis. Also some choices appear arbitrary but are derived from compatibility with the docker path - please document those as well.
Summary
srunand Enroot on a retained one-node Slurm allocationsweb.eval.arm64.<instance_id>:v4.1.0-arm64conventionWhy
ARM64 Slurm nodes provide Pyxis and Enroot but may not provide Docker. This allows the existing external SWE-bench accuracy service to run agent and evaluator containers natively on those nodes without changing its HTTP API or the endpoint client YAML.
Validation
uv run pytest -q tests/unit/evaluation/swebench_service— 72 passedpre-commitchecks for all five changed files — passed