feat: add JumpScore evaluation task#1329
Merged
Merged
Conversation
…dule import The judge server was initialized at module import time, causing OpenAI API errors in CI environments where OPENAI_API_KEY is not set. Now the server is created on first use via _get_judge_server() instead.
…or on module import" This reverts commit 18dd0c3.
…wnload snapshot_download was called at module level, causing CI to fail when loading task configs without HF credentials. Moved to _get_cache_dir() which is called on first actual use, following the same pattern as other tasks (e.g. vbvr/utils.py).
…dule import The judge server was initialized at module level, causing an OpenAIError in CI environments where OPENAI_API_KEY is not set. Replaced the top-level initialization with _get_judge_server(), which creates the server on first actual use, consistent with how jump_rope/utils.py handles its HF download.
The BASE worktree may contain pre-existing import-time errors (e.g. module-level OpenAI client init requiring OPENAI_API_KEY, or network calls at import time). These cause the BASE capture step to fail, blocking all PRs even when the PR itself introduces no regression. Changes: - Add continue-on-error: true to 'Capture BASE snapshot' step - Update 'Compare snapshots' to skip diff when base.json is absent, printing a clear warning instead of failing the workflow
…or on module import" This reverts commit 917a3ed.
kcz358
reviewed
May 11, 2026
Comment on lines
+22
to
+34
| _JUMPSCORE_CACHE_DIR: Optional[str] = None | ||
|
|
||
|
|
||
| def _get_cache_dir() -> str: | ||
| """Return the local HF snapshot directory, downloading on first call.""" | ||
| global _JUMPSCORE_CACHE_DIR | ||
| if _JUMPSCORE_CACHE_DIR is None: | ||
| _JUMPSCORE_CACHE_DIR = snapshot_download( | ||
| repo_id=_load_dataset_path(), | ||
| repo_type="dataset", | ||
| local_dir_use_symlinks=False, | ||
| ) | ||
| return _JUMPSCORE_CACHE_DIR |
Collaborator
There was a problem hiding this comment.
Following other video dataset config to put this into yaml would be better.
kcz358
reviewed
May 11, 2026
Comment on lines
+347
to
+352
| for tolerance in sorted(ap_per_tolerance_combined.keys()): | ||
| ap_list = ap_per_tolerance_combined[tolerance] | ||
| mean_ap = sum(ap_list) / len(ap_list) if ap_list else 0.0 | ||
| eval_logger.info(f"[JumpScore] AP@{tolerance}s: {mean_ap:.4f}") | ||
|
|
||
| eval_logger.info(f"[JumpScore] mAP: {mean_map:.4f}") |
Collaborator
There was a problem hiding this comment.
Can put the mAP into metric list so that the results can be logged into the results.json
kcz358
approved these changes
May 11, 2026
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
Adds JumpScore, a new video understanding benchmark that evaluates a model's ability to temporally localize jump rope events in video. The task uses a multi-turn conversation format: the model first answers a jump count question, then predicts the start timestamps of each jump. Evaluation is based on mean Average Precision (mAP) computed over multiple time tolerances (0.1 s, 0.2 s, 0.3 s).
This PR also includes two bug fixes that were discovered during integration:
In scope
Out of scope
Validation
Risk / Compatibility
Type of Change