Skip to content

feat(launcher): expose GPUs to eval container for compute-eval#912

Open
wprazuch wants to merge 3 commits intomainfrom
wprazuch/eval-gpu-visibility
Open

feat(launcher): expose GPUs to eval container for compute-eval#912
wprazuch wants to merge 3 commits intomainfrom
wprazuch/eval-gpu-visibility

Conversation

@wprazuch
Copy link
Copy Markdown
Contributor

Summary

  • Export NVIDIA_VISIBLE_DEVICES=all before the eval srun command
  • Pass it through to the eval container via --container-env

Why

Benchmarks like compute-eval compile and execute CUDA code inside the eval container. Without GPU access, nvcc can't detect the target architecture (-arch=native falls back to default) and compiled binaries fail with cudaErrorInsufficientDriver.

Testing

Validated with compute-eval on HSG (driver 580/CUDA 13.0):

  • Before: pass@1 = 0% (all tests fail with cudaErrorInsufficientDriver)
  • After: pass@1 = 51.25% (41/80 passed with Qwen3.5-122B-A10B)

Test plan

  • Run compute-eval on HSG with GPU-requiring problems
  • Verify existing non-GPU benchmarks are unaffected (NVIDIA_VISIBLE_DEVICES=all is a no-op when the eval doesn't use GPUs)

🤖 Generated with Claude Code

wprazuch and others added 2 commits April 14, 2026 13:13
…tadata init

The bare `except ModuleNotFoundError: pass` silently swallowed errors from
transitive dependencies (pydantic, structlog, etc.) when nemo_evaluator was
on PYTHONPATH as source but its deps were not installed. This made
extract_framework_yml silently disappear from the namespace.

Now only suppresses the error when nemo_evaluator itself is the missing
module; any other missing dependency is re-raised.

Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
Signed-off-by: Wojciech Prazuch <[email protected]>
The top-level `from nemo_evaluator.core.input import ...` in loading.py
triggered the full nemo_evaluator import chain (including pydantic) at
module import time. In docs environments where nemo_evaluator source is
on PYTHONPATH but pydantic is not installed, this caused a
ModuleNotFoundError for pydantic that was silently swallowed by the
try/except in __init__.py, making extract_framework_yml and
parse_framework_to_irs unavailable.

Move the import to the only call site (parse_framework_to_irs) so
loading.py can be imported without the full nemo_evaluator dep tree.

Signed-off-by: Wojciech Prazuch <[email protected]>
@wprazuch wprazuch requested review from a team as code owners April 16, 2026 07:53
@copy-pr-bot
Copy link
Copy Markdown

copy-pr-bot bot commented Apr 16, 2026

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.

Add `execution.evaluation_gpu_visible` config option (default: false).
When true, exports `NVIDIA_VISIBLE_DEVICES=all` and passes it to the
eval container, enabling GPU access for benchmarks that compile and
execute CUDA code (e.g. compute-eval).

Usage in config:
  execution:
    evaluation_gpu_visible: true

Without this, the eval srun runs without GPU visibility and CUDA
binaries fail with cudaErrorInsufficientDriver.

Validated with compute-eval on HSG: pass@1 = 51.25% (41/80).

Signed-off-by: Wojciech Prazuch <[email protected]>
@wprazuch wprazuch force-pushed the wprazuch/eval-gpu-visibility branch from 463f8f0 to 5ccb8f9 Compare April 16, 2026 07:58
@chtruong814 chtruong814 added docs-only With great power comes great responsibility. and removed docs-only With great power comes great responsibility. labels Apr 16, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants