Repository navigation
Conversation
|
Auto-sync is disabled for draft pull requests in this repository. Workflows must be run manually. Contributors can view more details about this message here. |
ananthsub
force-pushed
the
ananthsub/task-schemas/generic-dataset-metrics
branch
2 times, most recently
from
October 6, 2026 17:02
4533f92 to
bd75bb1
Compare
ananthsub
force-pushed
the
ananthsub/task-schemas/generic-dataset-metrics
branch
from
October 6, 2026 17:44
bd75bb1 to
f299773
Compare
ananthsub
force-pushed
the
ananthsub/task-schemas/generic-dataset-metrics
branch
from
October 7, 2026 05:22
f299773 to
11d0645
Compare
size. Any other row without a valid responses_create_params, such as a task row for an environment server with its own input in a dataset that does not declare taskset:, was still marked offending, so its dataset's metrics sidecar reported zero examples and drift went undetected. Every JSON object row is now an example, and require_responses is gone. Run request rows keep their Responses API metrics and their sidecars keep the same keys. Other rows report their size through #4060's task-input size metric, so a change inside nested task fields is a metrics conflict, and datasets have one size metric instead of two. Schema validation, not metrics, decides whether a row is valid for its environment server. Signed-off-by: Ananth Subramaniam <ansubramania@nvidia.com>
ananthsub
force-pushed
the
ananthsub/task-schemas/generic-dataset-metrics
branch
from
October 8, 2026 00:06
11d0645 to
8fbd428
Compare
This branch has not been deployed
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.
What does this PR do?
Counts every dataset row in the collation metrics, not only run requests and materialized rows.
#4060 counts materialized rows as examples and reports their task-input size. Any other row without a valid
responses_create_params, such as a task row for an environment server with its own input in a dataset that does not declaretaskset:, was still marked offending. Its dataset's metrics sidecar reported zero examples, and drift in it went undetected.Where this fits
Datasets reach an environment server in one of two ways today: run request rows route by their agent, and datasets that declare
taskset:are materialized during collation and route byenvironment_server_routes. The goal is one path, where every dataset declares a taskset and routes to an environment server:flowchart LR P["Preparation script<br/>task rows with a stable task_id"] --> C["Collation<br/>validates, computes metrics,<br/>materializes"] Y["Dataset YAML<br/>file + taskset"] --> C S["task_data.py schemas<br/>environment server + resources server"] -.-> C C --> R["Rollout collection<br/>routes by taskset"] T["environment_server_routes"] --> R R --> E["Environment server<br/>single-agent, multi-agent,<br/>or legacy_agent relay"]The UserSim stack (#3800 and #3802) has merged. UserSim's datasets already declare
taskset:and commit plain task rows, so they use the one path. Each step is additive, and datasets withouttaskset:keep working until the last one:flowchart TB S4053["PR 4053 (merged)<br/>tasksets route to servers<br/>with several agents"] S4060["PR 4060 (merged)<br/>metrics for<br/>materialized rows"] S3800["PR 3800 (merged)<br/>UserSim runtime"] S3802["PR 3802 (merged)<br/>UserSim validation tasks"] S4096["PR 4096<br/>stable, unique<br/>task IDs"] S4097["PR 4097<br/>metrics for<br/>every row"] S4098["PR 4098<br/>schema per<br/>environment server"] S4099["PR 4099<br/>legacy_agent relays<br/>serve tasksets"] SREF["Remove the bridge<br/>for already-materialized<br/>rows"] SNEXT["Later<br/>configs declare taskset:,<br/>then agent routing retires"] S4053 --> S4060 --> S3800 --> S3802 --> S4096 --> S4097 --> S4098 --> S4099 --> SREF --> SNEXT classDef done fill:#F1EFE8,stroke:#5F5E5A,color:#444441 classDef prereq fill:#FAEEDA,stroke:#854F0B,color:#633806 classDef this fill:#EEEDFE,stroke:#534AB7,color:#26215C,stroke-width:2px classDef next fill:#E1F5EE,stroke:#0F6E56,color:#085041 class S4053,S4060,S3800,S3802 done class S4097 this class S4096,S4098,S4099,SREF,SNEXT nextGray: merged. Purple: this PR. Green: other steps.
Base branch. This stack is based on
main. Review only this PR's own diff.Changes
require_responsesis gone, because the row, not the dataset's declaration, decides whether Responses API metrics apply.Json-dumped task-input words (proxy for token count), so datasets have one size metric instead of two, and a change inside nested task fields is a metrics conflict like any other. The metric is written only for datasets that have such rows.prepare-validate.mdxandresources-server-apis.mdxdescribe the metrics.No issue is linked. This follows #4060.
Validation
tests/unit_tests/test_task_materialization.py: task rows withoutresponses_create_paramsin a dataset withouttaskset:are counted, their task-input size is written, and a change in nested fields is a metrics conflict. Run request rows report no task metrics. These tests fail without the change.tests/unit_tests/test_train_data_utils.py: the offending-row tests use rows that are not JSON objects, and feat(data): support materialized task dataset metrics #4060's test for a row that is not a run request now expects its task-input size.taskset:, so feat(data): collate declared tasksets #3818 already counted its rows; it now also reportsJson-dumped task-input words (proxy for token count). Drift detection accepts new keys, sogym dataset collate +mode=example_validationon its config neither conflicts with nor rewrites the committed sidecar.pyteston the core data, collation, and rollout test modules: all pass on this branch.pre-commit runon the changed files: all pass.Rollouts
N/A. The change affects collation metrics only, and committed sidecars are unchanged.
Compatibility and benchmark impact
taskset:whose rows are not run requests now reports their count and size instead of zero examples. No committed dataset has such rows.taskset:and such rows, such as UserSim's, gains the size metric as a new key. That is not a conflict with its committed sidecar; regenerating the sidecar adds the key.