Repository navigation
Modularity-eval support: pipeline-parallel GPU planning, namespaced dataset ids, launcher runtime hooks - #558
Merged
Merged
Conversation
gregorybchris
approved these changes
Nov 11, 2026
gregorybchris
left a comment
Collaborator
There was a problem hiding this comment.
Approved, with the two inline findings below to address and resolve before merging. Review validation: 191 focused tests passed; auxiliary GPU allocation was checked with mocked server startup. Lint reports three added long lines, and formatting needs correction. No real-model run was performed.
AkshitaB
force-pushed
the
akshitab/modularity-evals
branch
from
November 12, 2026 20:04
85fd598 to
52726c0
Compare
…the runtime Torch index as an extra index With OLMO_EVAL_RUNTIME_TORCH_INDEX_URL set, provider packages (e.g. a vLLM plugin from git) got the Torch index as their only extra index, so their build dependencies resolved from it. Keep PyPI as the index and the Torch index as an extra one. (cherry picked from the launcher part of commit f952402) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…hvision/torchaudio builds alongside the runtime torch override (needed for cu130 on B300) (cherry picked from commit 0454c66)
…e install command The extra-packages loop added in 0454c66 never ran because the variable was not in install_env_keys, so cu130 code jobs still hit the torchvision 0.26 vs 0.25 conflict. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01UM8JNSHVcWs1Ja8n3bNvzx (cherry picked from commit 8eb693a)
…pet after all package installs Per-package installs can leave split dependency packages at mixed versions (nvidia-cutlass-dsl 4.8.1 libs next to a 4.5.3 pin); a post-install step lets the caller re-pin them consistently. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01UM8JNSHVcWs1Ja8n3bNvzx (cherry picked from commit a04b3ba)
…arallel_size GPUs The planner and the Beaker GPU request counted only tensor_parallel_size, so a pipeline-parallel provider (provider.kwargs.pipeline_parallel_size) got one stage's worth of GPUs. Count TP x PP for the main provider and for auxiliary providers. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…IQA, WinoGrande and HumanEval
With current huggingface_hub, the legacy un-namespaced ids no longer resolve from an empty cache
(load_dataset("gsm8k", "main") raises "Repository id must be 'namespace/name'"); they only worked
where an older cache already held them. The namespaced ids (openai/gsm8k, tau/commonsense_qa,
ybisk/piqa, allenai/social_i_qa, allenai/winogrande, openai/openai_humaneval) load from an empty
cache with the same row counts.
The data source is part of a task's identity, so the recorded task hashes of the tasks that read
these datasets change (tests/evals/tasks/task_hashes.json, regenerated with --update-task-hashes).
(dataset part of commit f952402)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…by pipeline_parallel_size The worker set tensor_parallel_size to its GPU count, so a pipeline-parallel instance (4 GPUs, pipeline_parallel_size 4) asked for tensor parallel 4 as well. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…x pipeline_parallel_size GPUs The planner reserved TP x PP GPUs per auxiliary instance, but InferenceManager.start() handed each server only TP of them, and VLLMServerProcess took its tensor_parallel_size from len(gpu_ids). Two judge instances with TP 2 and PP 2 got GPUs [0, 1] and [2, 3] and could not start. The manager now gives each instance gpus_per_instance() GPUs, and VLLMServerProcess divides its GPUs by pipeline_parallel_size (tensor_parallel_for, moved to gpu_planner next to gpus_per_instance). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
AkshitaB
force-pushed
the
akshitab/modularity-evals
branch
from
November 12, 2026 21:11
52726c0 to
b126d85
Compare
AkshitaB
enabled auto-merge
November 12, 2026 21:24
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Everything the scaling-ladders modularity evals (
ladders/olmoe3/workloads/evals/modularity_full) need from olmo-eval, on top of currentmain. It replaces the pins toryanyxw/ladder-evalsandakshitab/ladder-eval-runtime-fixes; Jackson's long-context task commits on those branches are not needed here and are left out.openai/gsm8k,tau/commonsense_qa, …). With currenthuggingface_hub,load_dataset("gsm8k", "main")fails from an empty cache ("Repository id must be 'namespace/name'"); it only works where an older cache already holds the dataset. The namespaced ids load with the same row counts. The data source is part of a task's identity, so the recorded hashes of the tasks reading these datasets change (task_hashes.jsonregenerated with--update-task-hashes; 60 entries).tensor_parallel_size × pipeline_parallel_sizeGPUs, in the GPU planner and in the Beaker GPU request, and each inference worker gives its enginetensor_parallel_size = GPUs / pipeline_parallel_size(it used the worker's GPU count, so a 4-GPU pipeline-parallel worker asked for TP 4 too). Needed to run a model larger than one GPU withprovider.kwargs.pipeline_parallel_size(the OLMoE3 vLLM plugin supports PP, not TP).OLMO_EVAL_RUNTIME_TORCH_EXTRA_PACKAGESinstalls torchvision/torchaudio builds with a runtime Torch override (cu130 on B300), andOLMO_EVAL_RUNTIME_POST_INSTALL_CMDruns a snippet after all installs.OLMO_EVAL_RUNTIME_TORCH_INDEX_URLset, provider packages resolve build dependencies from PyPI with the Torch index as an extra index, not as their only one.Test plan
pytest tests --ignore=tests/integration: 5289 passed, 8 failed; the same 8 fail onmain(test_sandbox_manager_capacity,test_check_file_sizes).🤖 Generated with Claude Code