Skip to content

Commit ff29a54

Browse files
committed
Drop VideoPayloadStats.seconds to match inference-perf native report
Grounding the v0.2.1 schema against inference-perf's emitted lifecycle report (post #450/#477) shows video temporal extent is modeled as sampled frames, not wall-clock seconds: the native Video record carries pixels/bytes/aspect_ratio/frames and no duration. The seconds field on VideoPayloadStats therefore had no producer, so remove it; audio.seconds stays since the native Audio record emits it. Updates the schema, generated JSON schema, example, README, and the video unit tests accordingly. Signed-off-by: Brendan Slabe <slabe@google.com>
1 parent 0f488e5 commit ff29a54

5 files changed

Lines changed: 3 additions & 28 deletions

File tree

llmdbenchmark/analysis/benchmark_report/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ See [`br_v0_2_1_example.yaml`](br_v0_2_1_example.yaml) for a dummy example repor
6565
The additions, all derived from what the client can determine from the payloads it sent, are:
6666

6767
- **`results.request_performance.aggregate.requests.request_size`** (`Statistics`): total encoded request size in bytes, capturing the large payloads typical of multi-modal requests.
68-
- **`results.request_performance.aggregate.requests.multimodal`**: a per-modality block (`image`, `video`, `audio`), each a distribution set over the media instances sent. `image`/`video` carry `count`, `bytes`, `pixels`, and `aspect_ratio`; `video` adds `frames` and `seconds`; `audio` carries `count`, `bytes`, and `seconds`.
68+
- **`results.request_performance.aggregate.requests.multimodal`**: a per-modality block (`image`, `video`, `audio`), each a distribution set over the media instances sent. `image`/`video` carry `count`, `bytes`, `pixels`, and `aspect_ratio`; `video` adds `frames`; `audio` carries `count`, `bytes`, and `seconds`.
6969
- **`results.request_performance.aggregate.throughput.{image,video,audio}_rate`** (`Statistics`): per-modality delivery rates (`images/s`, `videos/s`, `audios/s`).
7070

7171
New unit categories back these fields: `pixels` (quantity), `ratio` (for aspect ratio, distinct from a 0..1 portion), `bytes` (memory), and a media-throughput category (`images/s`, `videos/s`, `audios/s`) kept separate from the request-rate category so the existing `request_rate` guardrail is unaffected.

llmdbenchmark/analysis/benchmark_report/br_v0_2_1_example.yaml

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -570,9 +570,6 @@ results:
570570
frames:
571571
mean: 16.0
572572
units: count
573-
seconds:
574-
mean: 4.0
575-
units: s
576573
output_length:
577574
max: 2328.0
578575
mean: 2262.448

llmdbenchmark/analysis/benchmark_report/br_v0_2_1_json_schema.json

Lines changed: 1 addition & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -3336,18 +3336,6 @@
33363336
],
33373337
"default": null,
33383338
"description": "Number of frames per video instance."
3339-
},
3340-
"seconds": {
3341-
"anyOf": [
3342-
{
3343-
"$ref": "#/$defs/Statistics"
3344-
},
3345-
{
3346-
"type": "null"
3347-
}
3348-
],
3349-
"default": null,
3350-
"description": "Duration per video instance."
33513339
}
33523340
},
33533341
"title": "VideoPayloadStats",
@@ -3389,4 +3377,4 @@
33893377
],
33903378
"title": "Benchmark Report v0.2.1",
33913379
"type": "object"
3392-
}
3380+
}

llmdbenchmark/analysis/benchmark_report/schema_v0_2_1.py

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@
5959
# MediaPayloadStats count, bytes (all modalities)
6060
# └─ VisualPayloadStats + pixels, aspect_ratio (image, video)
6161
# ├─ ImagePayloadStats
62-
# └─ VideoPayloadStats + frames, seconds
62+
# └─ VideoPayloadStats + frames
6363
# └─ AudioPayloadStats + seconds
6464
#
6565
# Adding a modality is a new leaf class plus one field on MultiModalRequests.
@@ -133,8 +133,6 @@ class VideoPayloadStats(VisualPayloadStats):
133133

134134
frames: Statistics | None = None
135135
"""Number of frames per video instance."""
136-
seconds: Statistics | None = None
137-
"""Duration per video instance."""
138136

139137
@model_validator(mode="after")
140138
def check_video_units(self):
@@ -143,11 +141,6 @@ def check_video_units(self):
143141
f'Invalid units "{self.frames.units}", must be one of:'
144142
f" {' '.join(UNITS_QUANTITY)}"
145143
)
146-
if self.seconds and self.seconds.units not in UNITS_TIME:
147-
raise ValueError(
148-
f'Invalid units "{self.seconds.units}", must be one of:'
149-
f" {' '.join(UNITS_TIME)}"
150-
)
151144
return self
152145

153146

tests/test_benchmark_report_v0_2_1_multimodal.py

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,6 @@ def test_full_multimodal_report_validates_and_roundtrips():
5454
},
5555
"video": {
5656
"frames": _stat("count", 16.0),
57-
"seconds": _stat("s", 4.0),
5857
},
5958
"audio": {"seconds": _stat("s", 10.0)},
6059
},
@@ -88,7 +87,6 @@ def test_full_multimodal_report_validates_and_roundtrips():
8887
(ImagePayloadStats, "aspect_ratio", "ratio"),
8988
(ImagePayloadStats, "bytes", "bytes"),
9089
(VideoPayloadStats, "frames", "count"),
91-
(VideoPayloadStats, "seconds", "s"),
9290
(AudioPayloadStats, "seconds", "s"),
9391
(AggregateRequests, "request_size", "bytes"),
9492
],
@@ -107,7 +105,6 @@ def test_correct_units_accepted(model, field, units):
107105
# An aspect ratio is a ratio, not a portion.
108106
(ImagePayloadStats, "aspect_ratio", "fraction"),
109107
(ImagePayloadStats, "pixels", "s"),
110-
(VideoPayloadStats, "seconds", "count"),
111108
(AudioPayloadStats, "seconds", "bytes"),
112109
(AggregateRequests, "request_size", "queries/s"),
113110
],

0 commit comments

Comments
 (0)