Collect successful OSMO runs after individual failures - #997
Draft
cvolkcvolk wants to merge 6 commits into
Draft
Conversation
Record each experiment runner's exit status while allowing its OSMO task to complete. Let the collector include completed run outputs and retain failure results without copying partial artifacts. Signed-off-by: Clemens Volk <cvolk@nvidia.com>
Signed-off-by: Clemens Volk <cvolk@nvidia.com>
Signed-off-by: Clemens Volk <cvolk@nvidia.com>
Signed-off-by: Clemens Volk <cvolk@nvidia.com>
Signed-off-by: Clemens Volk <cvolk@nvidia.com>
Signed-off-by: Clemens Volk <cvolk@nvidia.com>
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.
A parallel experiment starts N independent runner tasks and finishes with one collector.
Architecture
Each runner invokes the Arena experiment normally. When that process finishes, the runner writes experiment_runner_result.json with either completed or failed plus the original process exit code. These values use the existing RunStatus enum.
If Arena exits with an error, the wrapper records the failure and then exits successfully from the perspective of OSMO. This separation is deliberate: OSMO can schedule the downstream collector, while the application failure remains available in the result file.
Collector behavior
The collector supports exactly two runner results:
For example, one completed run and one failed run produce:
The report generator only reads episode-result JSONL files and videos. The failed run therefore remains auditable through its result file but does not appear in the report.
A missing, malformed, unknown, or inconsistent result violates the runner/collector contract and fails collection. A completed result without its expected run directory also fails. These cases indicate a bug, incompatible version, or storage problem and should not silently produce an incomplete report.
Why
Previously, one failed runner could give the collector FAILED_UPSTREAM. The collector would not run, even when the other runners had produced valid results. This change lets one submission still produce a report containing every successful run.
Smoke experiment
osmo_failure_collection_smoke_experiment.yamlprovides an end-to-end check with four one-episode Pi0 runs:The collector should finish, retain failure result files, discard partial failed-run artifacts, and build a report containing only the two valid runs.
Known limitation
This handles application failures after the runner entry script has started. OSMO-level failures such as an image download error, eviction, node loss, task cancellation, or failure to publish the result file can still prevent the collector from running.
Validation