//clika-runtime/io.clika.modelverse/BenchRow
BenchRow
[common]
data class BenchRow(val isl: Long, val osl: Long, val lateIsl: Long, val concurrency: Int, val status: BenchRowStatus, val reason: String, val notes: String, val firstCallMs: Double, val ttftMs: Double, val lateTtftMs: Double, val prefillTokS: Double, val prefillChunkMsP50: Double, val prefillChunkMsMax: Double, val itlP50Ms: Double, val itlP99Ms: Double, val itlMaxMs: Double, val decodeTokS: Double, val speedupVsC1: Double, val batchingEfficiency: Double, val effectiveIsl: Long, val admittedTok: Long, val retires: Long, val peakActiveBytes: Long, val numAllocs: Long, val numInflightParkWaits: Long, val acceptedPredictionTokens: Long, val rejectedPredictionTokens: Long, val speculativeSteps: Long, val cells: Map<String, Any?>)
One row of a bench report, typed: one (cell, concurrency) of the sweep. status says what the row is; the metrics of a row that is not BenchRowStatus.OK are zeros, never measurements, and reason says why in the library's words. The times are milliseconds, the rates tokens per second. cells carries every column of the row as the table holds it, by the names of BenchColumns: a Long for an integer column, a Double for a float one, a String for a text one, null for an empty cell; a column a later library adds is there before it has a typed field. The rows are read off BenchReport.table once, so a row outlives the report's close.
Constructors
| BenchRow | [common] constructor(isl: Long, osl: Long, lateIsl: Long, concurrency: Int, status: BenchRowStatus, reason: String, notes: String, firstCallMs: Double, ttftMs: Double, lateTtftMs: Double, prefillTokS: Double, prefillChunkMsP50: Double, prefillChunkMsMax: Double, itlP50Ms: Double, itlP99Ms: Double, itlMaxMs: Double, decodeTokS: Double, speedupVsC1: Double, batchingEfficiency: Double, effectiveIsl: Long, admittedTok: Long, retires: Long, peakActiveBytes: Long, numAllocs: Long, numInflightParkWaits: Long, acceptedPredictionTokens: Long, rejectedPredictionTokens: Long, speculativeSteps: Long, cells: Map<String, Any?>) |
Properties
| Name | Summary |
|---|---|
| acceptedPredictionTokens | [common] val acceptedPredictionTokens: Long The prompt-lookup tally over the row's measured iterations; 0 with BenchOptions.promptLookupNumTokens 0. |
| admittedTok | [common] val admittedTok: Long The row's paged prefix-cache traffic: tokens admitted from the cache, and histories retired into it; 0 on a continuous-mode row. |
| batchingEfficiency | [common] val batchingEfficiency: Double speedupVsC1 over concurrency; 1 is linear batching. |
| cells | [common] val cells: Map<String, Any?> |
| concurrency | [common] val concurrency: Int The sessions decoding at once. |
| decodeTokS | [common] val decodeTokS: Double Aggregate generation rate over the token-generation window. |
| effectiveIsl | [common] val effectiveIsl: Long The prompt tokens the prefill actually ingested; equals isl on a text-only row. |
| firstCallMs | [common] val firstCallMs: Double The row's first full pass at its shape, after the global warm-up: what the first request at that shape costs; 0 with warmup 0. |
| isl | [common] val isl: Long The cell's prompt tokens. |
| itlMaxMs | [common] val itlMaxMs: Double The longest decode-only gap a session saw. |
| itlP50Ms | [common] val itlP50Ms: Double Inter-token latency over decode-only gaps. |
| itlP99Ms | [common] val itlP99Ms: Double |
| lateIsl | [common] val lateIsl: Long The late prompt's tokens (BenchCell.lateIsl); 0 on a row without one. |
| lateTtftMs | [common] val lateTtftMs: Double The late prompt's own time to first token; 0 on a row without one. |
| notes | [common] val notes: String What an OK row measured beyond its numbers (its prompt protocol, the device's execution law); empty when there is nothing to state. |
| numAllocs | [common] val numAllocs: Long |
| numInflightParkWaits | [common] val numInflightParkWaits: Long |
| osl | [common] val osl: Long The cell's decoded tokens. |
| peakActiveBytes | [common] val peakActiveBytes: Long The model device's pool: its active high-water mark after the row (bytes), the row's allocations, and the allocations that waited for an in-flight chunk. |
| prefillChunkMsMax | [common] val prefillChunkMsMax: Double |
| prefillChunkMsP50 | [common] val prefillChunkMsP50: Double Chunked-prefill boundary walls; 0 on a row that never chunked. |
| prefillTokS | [common] val prefillTokS: Double Prompt ingest rate: a session's isl over its enqueue-to-first-token window, averaged. |
| reason | [common] val reason: String Why a row is not a measurement; empty on an OK row. |
| rejectedPredictionTokens | [common] val rejectedPredictionTokens: Long |
| retires | [common] val retires: Long |
| speculativeSteps | [common] val speculativeSteps: Long |
| speedupVsC1 | [common] val speedupVsC1: Double Against the same cell at concurrency 1 (1 is that row; above 1 is faster). |
| status | [common] val status: BenchRowStatus |
| ttftMs | [common] val ttftMs: Double Time to first token, from a session's enqueue to its first token, averaged over the sessions. |