Setup
SkillMonitoring & opsDownload and analyze InferenceX ML inference benchmark data — GPU performance metrics across hardware, frameworks, and models. Use when asked to analyze inference benchmarks, compare GPUs, plot pareto frontiers, or work with InferenceX data.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the Setup skill
What this skill tells your AI
The instructions your AI receives, as published by semianalysisai/inferencex-app in .claude/skills/inferencex-data/SKILL.md and read by ahel’s review.
Download the latest database dump from GitHub releases. It is xz-compressed and split into
one or more .tar.xz.part* files; reassemble them by piping cat through xz (requires xz):
gh release download --repo SemiAnalysisAI/InferenceX-app --pattern 'inferencex-dump-*.tar.xz.part*' --dir .
cat inferencex-dump-*.tar.xz.part* | xz -d -T0 | tar -x
Data
Each .json file corresponds to one database table.
| File | Description |
|---|---|
configs.json | Serving deployment configs: hardware + framework + model + precision + parallelism |
workflow_runs.json | GitHub Actions workflow run metadata |
server_logs.json | Raw benchmark server logs (~140KB per row, very large — avoid loading entirely) |
benchmark_results.json | Performance metrics per config/concurrency/sequence-length/date |
run_stats.json | Per-hardware reliability stats (n_success / total) |
eval_results.json | LM evaluation accuracy results (e.g. gsm8k) |
availability.json | Denormalized date x config availability |
changelog_entries.json | PR/change descriptions per workflow run |
Relationships
benchmark_results[].config_id->configs[].idbenchmark_results[].workflow_run_id->workflow_runs[].idbenchmark_results[].server_log_id->server_logs[].id(nullable)eval_results[].config_id->configs[].ideval_results[].workflow_run_id->workflow_runs[].idrun_stats[].workflow_run_id->workflow_runs[].idchangelog_entries[].workflow_run_id->workflow_runs[].id
Config Fields
Each config is a unique serving deployment:
id, hardware, framework, model, precision, spec_method, disagg, is_multinode,
prefill_tp, prefill_ep, prefill_dp_attention, prefill_num_workers,
decode_tp, decode_ep, decode_dp_attention, decode_num_workers,
num_prefill_gpu, num_decode_gpu
tp: tensor parallelism,ep: expert parallelism,dp_attention: data parallel attention,num_workers: pipeline parallel workersspec_method: speculative decoding method.mtp= multi-token prediction,none= standard autoregressivedisagg=truemeans prefill and decode run on separate GPU pools (disaggregated serving). Whendisagg=false, prefill and decode fields are identical- Total GPU count =
num_prefill_gpu + num_decode_gpufor disagg, or justnum_prefill_gpufor non-disagg. When not explicitly set, defaults totp * ep
Benchmark Result Fields
id, workflow_run_id, config_id, benchmark_type, date, isl, osl, conc,
image, metrics, error, server_log_id
benchmark_type: currently alwayssingle_turndate: ISO 8601 timestamp string (e.g.2025-10-12T00:00:00.000Z)isl/osl: input/output sequence length in tokensconc: concurrency levelimage: Docker image used for the serving framework (e.g.lmsysorg/sglang:v0.5.8.post1-cu130), null for runs before 2025-12-08error: null means successmetrics: nested JSON object — access asrow["metrics"]["tput_per_gpu"], not as top-level fields
Metrics Keys
All latency values in seconds. tput_per_gpu is total throughput (input+output tokens) per second per GPU.
Throughput: tput_per_gpu, output_tput_per_gpu (optional), input_tput_per_gpu (optional)
TTFT (time to first token): median_ttft, mean_ttft, p99_ttft, std_ttft
TPOT (time per output token): median_tpot, mean_tpot, p99_tpot, std_tpot
ITL (inter-token latency): median_itl, mean_itl, p99_itl, std_itl
E2EL (end-to-end latency): median_e2el, mean_e2el, p99_e2el, std_e2el
Interactivity: median_intvty, mean_intvty, p99_intvty, std_intvty
New numeric metrics may appear in future dumps without schema changes — the ETL auto-captures any numeric field not reserved for config dimensions.
Eval Result Fields
id, workflow_run_id, config_id, task, date, isl, osl, conc, lm_eval_version, metrics
task: evaluation task name (e.g.gsm8k)metrics: nested object withn_eff,em_strict,em_flexible,em_strict_se,em_flexible_se
Workflow Run Fields
id, github_run_id, run_attempt, name, status, conclusion, head_sha,
head_branch, html_url, created_at, run_started_at, date
run_attempt: re-runs of the samegithub_run_idget incrementing attempts. When computing latest results, first filter to the highestrun_attemptpergithub_run_id.conclusion:success,failure, orcancelledhtml_url: link to the GitHub Actions run
Run Stats Fields
id, workflow_run_id, date, hardware, n_success, total
- Reliability rate =
n_success / totalper hardware per run
Availability Fields
Denormalized table for fast date-picker lookups — one row per (model, isl, osl, precision, hardware, framework, spec_method, disagg, date) combination. Not joined by config_id; uses the raw text keys directly.
model, isl, osl, precision, hardware, framework, spec_method, disagg, date
Changelog Entry Fields
id, workflow_run_id, date, base_ref, head_ref, config_keys, description, pr_link
config_keys: array of strings like["dsr1-fp8-mi355x-mori-sglang"]identifying which configs changedpr_link: GitHub PR URL (nullable)
ETL Normalization
Framework names are normalized during ingest: dynamo-trtllm -> dynamo-trt, sglang-disagg -> mori-sglang. The dump contains already-normalized values.
Enum Values
hardware: h100, h200, b200, b300, gb200, gb300, mi300x, mi325x, mi355x model: dsr1=DeepSeek-R1-0528, gptoss120b=gpt-oss-120b, llama70b=Llama-3.3-70B-Instruct-FP8, qwen3.5=Qwen-3.5-397B-A17B, kimik2.5=Kimi-K2.5, minimaxm2.5=MiniMax-M2.5, glm5=GLM-5 framework: atom, dynamo-sglang, dynamo-trt, mori-sglang, sglang, trt, vllm precision: bf16, fp4, fp8, int4 spec_method: mtp, none
Analysis Recipes
- Load data: Parse
configs.jsonandbenchmark_results.json, join onconfig_id, filter out rows whereerroris not null. - Latest per config: First filter
workflow_runsto the highestrun_attemptpergithub_run_id, then join tobenchmark_results. For each unique(config_id, conc, isl, osl), keep only the row with the latestdate. - Pareto frontier (chip vs chip): Fix a model/concurrency/sequence length. Plot throughput (x) vs median TTFT (y) per hardware. The pareto frontier connects points that dominate all others (higher throughput AND lower latency). Sort by descending throughput, greedily collect points with improving latency.
- Pareto frontier (date vs date): Fix a hardware/model/concurrency/sequence length. Plot throughput and latency over time to see how performance evolves across benchmark dates.
Signals
- GitHub stars
- 45
- Forks
- 19
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
inferencex-data- Source
- github.com/semianalysisai/inferencex-app