Files
vllm-omni/benchmarks/edge_harness/results/profile_gate_0.json
T
tzhouamandClaude Opus 5 9264ff81ab Include the baselines, comparisons and study documents, not just the fork
The packaging commit shipped the code and a summary of the numbers. It left out
everything the numbers are measured *against*, which is most of what makes them
checkable.

Added:

  baselines/                 llama.cpp runs (thread sweeps, NUMA sweeps, the
                             interleaved A/B passes behind the headline decode
                             figure) and the quality references: each build
                             against its own bf16 over 12 greedy prompts.
  benchmarks/.../results/    102 artifacts backing the published figures, each
                             with a provenance block naming the model,
                             quantization, thread set and build SHAs.
  docs/engines/              the engine analyses -- llama.cpp, ExecuTorch, MNN,
                             ncnn, vLLM, vLLM-Omni -- and the cross-engine and
                             device-simulation comparisons.
  docs/analysis/             the full study documents the summaries distil.
  docs/edge/comparisons.md   where this fork sits against llama.cpp and why:
                             decode is llama.cpp's, prefill is ours by ~2x, and
                             since neither engine exceeds 39% of the measured
                             222 GB/s ceiling the decode gap is the execution
                             model rather than the kernels.
  docs/edge/environment.md   pins and machine, and the correction below.

On "the modified vllm": there isn't one, and the doc says so plainly because it
is the obvious assumption. The vLLM checkout is clean upstream (0 commits
ahead, 0 uncommitted) and the installed wheel is stock 0.28.0+cpu. This fork
changes vLLM's CPU *behaviour* through vLLM's own extension points at import
time -- three CPU patches in vllm_omni/patch.py, the quantization-config
registry, the IR op registry, platform hooks -- specifically so the changes
survive a wheel upgrade rather than being lost on it. One of those patches is
why "KV sizing is not a memory lever" looked true for months: CpuPlatform
overwrote kv_cache_memory_bytes unconditionally, so the setting had no effect.
There is no patch series to apply; pin the version and let patch.py do the rest.

.gitignore gains explicit exceptions: upstream's blanket `*.json` and `results/`
rules were silently eating the measurement artifacts, which in this fork are the
substance rather than build output. Binary captures stay ignored.

No vLLM or llama.cpp source is redistributed -- only output produced with them.
NOTICE records both.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01L1ax5wYLA6XbqEL1i8L9gZ
2026-09-14 14:01:12 +08:00

224 lines
4.7 KiB
JSON

{
"tag": "bfloat16/None/eager=False",
"wall_step_ms": 17.25,
"tps": 57.97,
"profiled_total_ms_per_step": 16.484,
"buckets_ms_per_step": {
"gemm": 10.661,
"framework": 3.502,
"other_op": 1.165,
"attn": 1.157
},
"top": [
{
"op": "aten::_weight_int4pack_mm_for_cpu",
"bucket": "gemm",
"ms_per_step": 8.8694,
"calls_per_step": 113.0
},
{
"op": "## Call CompiledFxGraph None ##",
"bucket": "framework",
"ms_per_step": 2.7736,
"calls_per_step": 1.0
},
{
"op": "aten::mm",
"bucket": "gemm",
"ms_per_step": 1.1547,
"calls_per_step": 28.0
},
{
"op": "vllm::cpu_int4_linear",
"bucket": "gemm",
"ms_per_step": 0.6367,
"calls_per_step": 113.0
},
{
"op": "vllm::unified_kv_cache_update",
"bucket": "framework",
"ms_per_step": 0.5477,
"calls_per_step": 28.0
},
{
"op": "vllm::unified_attention_with_output",
"bucket": "attn",
"ms_per_step": 0.5346,
"calls_per_step": 28.0
},
{
"op": "_C::cpu_attention_with_kv_cache",
"bucket": "attn",
"ms_per_step": 0.4428,
"calls_per_step": 28.0
},
{
"op": "aten::argmax",
"bucket": "other_op",
"ms_per_step": 0.2687,
"calls_per_step": 1.0
},
{
"op": "_C::cpu_attn_reshape_and_cache",
"bucket": "attn",
"ms_per_step": 0.1792,
"calls_per_step": 28.0
},
{
"op": "aten::slice",
"bucket": "other_op",
"ms_per_step": 0.1786,
"calls_per_step": 230.0
},
{
"op": "Pregraph bytecode",
"bucket": "framework",
"ms_per_step": 0.1727,
"calls_per_step": 1.0
},
{
"op": "aten::narrow",
"bucket": "other_op",
"ms_per_step": 0.1042,
"calls_per_step": 112.0
},
{
"op": "aten::as_strided",
"bucket": "other_op",
"ms_per_step": 0.0839,
"calls_per_step": 234.0
},
{
"op": "aten::copy_",
"bucket": "other_op",
"ms_per_step": 0.0833,
"calls_per_step": 19.0
},
{
"op": "aten::split",
"bucket": "other_op",
"ms_per_step": 0.0712,
"calls_per_step": 56.0
},
{
"op": "aten::chunk",
"bucket": "other_op",
"ms_per_step": 0.07,
"calls_per_step": 56.0
},
{
"op": "aten::view",
"bucket": "other_op",
"ms_per_step": 0.0631,
"calls_per_step": 62.0
},
{
"op": "aten::empty",
"bucket": "other_op",
"ms_per_step": 0.0551,
"calls_per_step": 145.0
},
{
"op": "aten::index",
"bucket": "other_op",
"ms_per_step": 0.0345,
"calls_per_step": 2.0
},
{
"op": "_C::compute_slot_mapping_kernel_impl",
"bucket": "other_op",
"ms_per_step": 0.022,
"calls_per_step": 4.0
},
{
"op": "aten::new_empty",
"bucket": "other_op",
"ms_per_step": 0.0187,
"calls_per_step": 28.0
},
{
"op": "_C::get_scheduler_metadata",
"bucket": "other_op",
"ms_per_step": 0.0184,
"calls_per_step": 4.0
},
{
"op": "aten::_to_copy",
"bucket": "other_op",
"ms_per_step": 0.0168,
"calls_per_step": 5.0
},
{
"op": "aten::add",
"bucket": "other_op",
"ms_per_step": 0.0115,
"calls_per_step": 3.0
},
{
"op": "aten::fill_",
"bucket": "other_op",
"ms_per_step": 0.0112,
"calls_per_step": 12.0
},
{
"op": "aten::resolve_conj",
"bucket": "other_op",
"ms_per_step": 0.0096,
"calls_per_step": 59.0
},
{
"op": "AOTDispatcher Runtime Wrapper Prologue",
"bucket": "framework",
"ms_per_step": 0.0077,
"calls_per_step": 1.0
},
{
"op": "aten::empty_strided",
"bucket": "other_op",
"ms_per_step": 0.0073,
"calls_per_step": 5.0
},
{
"op": "aten::to",
"bucket": "other_op",
"ms_per_step": 0.007,
"calls_per_step": 8.0
},
{
"op": "aten::sub",
"bucket": "other_op",
"ms_per_step": 0.0063,
"calls_per_step": 1.0
},
{
"op": "aten::lt",
"bucket": "other_op",
"ms_per_step": 0.0049,
"calls_per_step": 1.0
},
{
"op": "aten::index_select",
"bucket": "other_op",
"ms_per_step": 0.0043,
"calls_per_step": 1.0
},
{
"op": "aten::detach",
"bucket": "other_op",
"ms_per_step": 0.0037,
"calls_per_step": 2.0
},
{
"op": "aten::reshape",
"bucket": "other_op",
"ms_per_step": 0.0031,
"calls_per_step": 4.0
},
{
"op": "aten::alias",
"bucket": "other_op",
"ms_per_step": 0.0026,
"calls_per_step": 1.0
}
]
}