profile_export_aiperf.json Schema
profile_export_aiperf.json Schema
profile_export_aiperf.json Schema
After every aiperf profile run, AIPerf writes a summary JSON file (default name profile_export_aiperf.json) under the artifact directory. Each top-level metric entry holds a stats block; this page documents which fields appear in that block, when they appear, and how the schema is versioned.
The on-disk shape is produced by JsonMetricResult in src/aiperf/common/models/export_models.py. Fields that are unset are omitted from the JSON output (exclude_none=True), so the field set per metric varies by metric type — this page is the source of truth for which fields to expect where.
The metric type (record / aggregate / derived) is documented per-metric in Metrics Reference. At a glance: latencies and per-request lengths are record; counts and timestamps are aggregate; throughputs and run-level totals are derived.
A run with 20 requests against a streaming chat endpoint produces entries shaped like this:
Note that request_throughput (derived) and request_count (aggregate) carry only unit + avg — no count, no sum, no percentiles. request_latency (record) carries the full set.
In addition to the per-metric stats blocks, profile_export_aiperf.json includes top-level provenance:
run_infoSchema 1.2 introduced run_info to surface the seed and sweep coordinates needed to reproduce a run from the JSON file alone, without consulting the internal run_config.json handoff file. Schema 1.3 extends it with identifiers and the redacted CLI command.
Example for variation 2 of a concurrency grid sweep with --random-seed 42:
The current schema version is exported as the top-level schema_version field on the JSON document. Bump on additive changes; coordinate a major bump for any field rename or removal.
aiperf writes additional JSON files when --num-profile-runs >= 2:
profile_export_aiperf_aggregate.json — confidence aggregation across runs. Per-metric blocks have a different shape (mean, std, cv, se, ci_low, ci_high, t_critical, unit) and own their own schema_version (AggregateConfidenceJsonExporter.SCHEMA_VERSION, currently "1.0").profile_export_aiperf_collated.json — pools per-request values from all runs into a single population, then emits combined percentiles (mean, std, p50, p90, p95, p99, count) under a combined key plus a per_run list of run-level summaries. Uses its own schema_version ("1.0.0").The schema_version documented on this page applies only to profile_export_aiperf.json. The other files evolve on their own cadence.
count is normal; a record-metric block with no count indicates a bug.schema_version to detect compat; ignore unknown fields.unit is authoritative for the value’s interpretation. Do not infer units from the metric tag.