Files
vllm-omni/benchmarks
tzhouamandClaude Opus 5 3834de3105 Rename the project to edge-infer, and complete the packaging audit
Renamed from vllm-embedding: nothing here is about embeddings, and the name had
come from the parent working directory. edge-infer says what it does. The
GitHub repository is renamed to match; nothing had been pushed yet.

The audit found the packaging was incomplete in two ways.

Scripts: 56 of them produced results that are published in this repo but were
not included, so the numbers could be read and not checked. Added under
benchmarks/edge_harness/experiments/ (one-off drivers: the AI Hub on-device
runs, the 4-bit GEMM microbenchmark, fidelity and parity checks, checkpoint
build and round-trip, activation capture, and the load generator used to prove
the contention guard actually refuses) and benchmarks/edge_harness/runs/ (the
24 shell drivers behind published grids). Both directories carry a README
saying plainly that they are a record of what was run rather than a supported
interface -- most hardcode absolute paths from the machine they ran on. The
supported entry points remain the tools one level up.

One broken relative link fixed (comparison.md is under docs/engines/, not
docs/analysis/). All other links and every script reference in the docs now
resolve inside the repo.

Secret scan: the token in ~/.qai_hub/client.ini is absent from the worktree and
from all 61 commits. Worth noting that an earlier version of my own check
reported a false positive, because `grep -rl ... | head` takes its exit status
from head, which always succeeds -- the same class of mistake as the measurement
errors this project keeps recording. The AI Hub scripts authenticate by reading
that file at runtime and contain no credential.

README reframed for the new name and the wider scope: the repository is the
engine changes, the harness, the raw results, the baselines and the analyses,
not just a patch set.

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

Benchmarks

This directory contains benchmark suites for evaluating different model families and infrastructure components in vLLM-Omni. Each subfolder targets a different benchmark family with its own scripts, configs, and metrics. See the per-subfolder READMEs for detailed usage.

Benchmark families

TTS — Text-to-Speech

Model-agnostic serving benchmarks for TTS models, including Qwen3-TTS and VoxCPM2.

  • Layout: tts/bench_tts.py (serving benchmark driver), tts/model_configs.yaml (model registry), tts/plot_results.py (result plotting)
  • Dataset: Seed-TTS full or text-only datasets, plus bundled smoke/design prompts under build_dataset/
  • Key metrics: TTFP (time to first audio packet), E2E latency, RTF (real-time factor), throughput (audio seconds / wall-clock second)

Diffusion — Image and Video Generation

Online-serving benchmark for diffusion image/video models, sending requests to the configured vLLM serving endpoint (/v1/chat/completions, /v1/images/generations, or /v1/videos, depending on backend/task).

  • Tasks: text-to-image, text-to-video, image-to-image, image-to-video, text+image-to-image, text+image-to-video
  • Datasets: vbench, trace, random
  • Key metrics: request throughput, latency percentiles, optional SLO attainment

GLM-Image — Text-to-Image and Image-to-Image

Benchmarks for GLM-Image performance across HuggingFace baseline, vLLM-Omni offline inference, and vLLM-Omni online serving.

  • Layout: glm_image/huggingface/ (HF baseline), glm_image/vllm-omni/ (offline inference), glm_image/benchmark_glm_image.py (online serving)
  • Tasks: text-to-image and image-to-image
  • Key metrics: request/image throughput, latency percentiles, optional per-stage pipeline timings

LingBot-Video — Dense and MoE Parity

Manual cross-runtime validation for the dense LingBot-Video pipeline and the LingBot-Video MoE transformer.

  • Dense pipeline: decoded-video MAE, MSE, PSNR, latency, and optional steady-state timings
  • MoE transformer: bitwise router, sparse-block, shared-expert, and full-transformer parity

Distributed — RDMA Connector Testing

RDMA environment setup and transfer tests for MooncakeTransferEngineConnector, including pytest-based single-node checks and manual cross-node benchmarks.

  • Transfer modes: copy, zerocopy, gpu (GPUDirect)
  • Supports: single-node pytest suites and manual multi-node/cross-node transfer testing

Accuracy — Image Generation and Editing Quality

Accuracy benchmarks for image generation/editing models, adapting external suites to vLLM-Omni serving and local judge-evaluation flows.

  • Layout: accuracy/text_to_image/ (GEBench), accuracy/image_to_image/ (GEdit-Bench)
  • Method: generation and judge scoring both run through local vllm-omni serve endpoints

Common serving metrics framework

vllm_omni/benchmarks/ extends vllm bench serve --omni with Omni-specific datasets, backends, and multimodal metrics. Key metrics include:

  • Text output: TTFT (time to first token), TPOT (time per output token), ITL (inter-token latency)
  • Audio output: TTFP (time to first audio packet), E2E latency, RTF (real-time factor)
  • Throughput: request throughput, output token throughput, total token throughput, audio throughput

See vllm_omni/benchmarks/serve.py for the vllm bench serve --omni runner wrapper and vllm_omni/benchmarks/metrics/ for Omni metric definitions.

Adding a new benchmark

  1. Create a subfolder under benchmarks/<name>/ with scripts, configs if needed, and a README.md.
  2. If comparing against another runtime, use clear backend subfolders where applicable, such as huggingface/ and vllm-omni/, or follow the shared TTS serving benchmark pattern in tts/.
  3. Add reusable dataset or prompt-building utilities to build_dataset/ if applicable.
  4. Update this README with a link to the new benchmark family.