Script started on 2026-10-30 02:16:12+00:00 [COMMAND="bash -c '     echo "$ amd-smi static -g 0 --limit"; amd-smi static -g 0 --limit | grep -m3 -E "POWER_LIMIT"     echo "$ amd-smi metric -g 0 -p"; amd-smi metric -g 0 -p | grep -E "SOCKET_POWER"     echo "$ lmx --version"; /data1/paiton/bench/tools/lmx version | head -1     echo "$ lmx speed-test matrix run --base-url http://127.0.0.1:8000 --hf-id EliovpAI/Qwen3.8-Flash-Next-W4A8-Paiton-CDNA4 --concurrency 1,16 --contexts 0 --prefill-contexts 8k --duration-seconds 20"     /data1/paiton/bench/tools/lmx speed-test matrix run --base-url http://127.0.0.1:8000 --hf-id EliovpAI/Qwen3.8-Flash-Next-W4A8-Paiton-CDNA4 --quantization W4A8-fp4g128 --engine vllm --engine-version 32d1be77 --concurrency 1,16 --contexts 0 --prefill-contexts 8k --duration-seconds 20     echo "$ amd-smi metric -g 0 -p"; amd-smi metric -g 0 -p | grep -E "SOCKET_POWER"'" <not executed on terminal>]
$ amd-smi static -g 0 --limit
            MAX_POWER_LIMIT: 600 W
            MIN_POWER_LIMIT: 0 W
            SOCKET_POWER_LIMIT: 450 W
$ amd-smi metric -g 0 -p
        SOCKET_POWER: 125 W
$ lmx --version
lmx v0.1.54 (8bb36c3eb8fcd95d363beb44725d1992e80fe404, 2026-10-15T13:47:47Z, linux/amd64)
$ lmx speed-test matrix run --base-url http://127.0.0.1:8000 --hf-id EliovpAI/Qwen3.8-Flash-Next-W4A8-Paiton-CDNA4 --concurrency 1,16 --contexts 0 --prefill-contexts 8k --duration-seconds 20
[localmaxxing] inference_matrix_preflight_ok
  maxModelLen: 262144
  source: /v1/models
  maxTokens: 8192
  contexts: 0
[localmaxxing] inference_matrix_start
  baseUrl: http://127.0.0.1:8000
  maxTokens: 8192
  benchOptions: --prefill-contexts 8k --duration 20
  prefillContexts: 8k
  timedDecodeMinutes: at least 0.7 (2 cells × 20 s, before skipped cells)
  servedModel: fn
  report: inference-matrices/EliovpAI-Qwen3.8-Flash-Next-W4A8-Paiton-CDNA4/matrix-20261030T021613Z.bench.json
  contexts: 0
  concurrency: 1,16
  decodeCells: 2
[91m╭─[0m[91m──────────────────────────────────────────[0m[1;32m NVIDIA P2P Override [0m[91m───────────────────────────────────────────[0m[91m─╮[0m
[91m│[0m Effective: no                                                                                              [91m│[0m
[91m│[0m Configured file: no (/etc/modprobe.d/nvidia-p2p-override.conf)                                             [91m│[0m
[91m│[0m Runtime: ForceP2P=; RMForceP2PType=; RMPcieP2PType=; GrdmaPciTopoCheckOverride=; EnableResizableBar=;      [91m│[0m
[91m│[0m DmaRemapPeerMmio=                                                                                          [91m│[0m
[91m│[0m Suggested modprobe line:                                                                                   [91m│[0m
[91m│[0m options nvidia                                                                                             [91m│[0m
[91m│[0m NVreg_RegistryDwords="ForceP2P=0x11;RMForceP2PType=1;RMPcieP2PType=2;GrdmaPciTopoCheckOverride=1;EnableRes [91m│[0m
[91m│[0m izableBar=1"                                                                                               [91m│[0m
[91m│[0m Apply requires NVIDIA module reload or reboot after stopping GPU workloads.                                [91m│[0m
[91m╰────────────────────────────────────────────────────────────────────────────────────────────────────────────╯[0m
[36m╭─[0m[36m─────────────────────────────────────────────[0m[1;32m Configuration [0m[36m──────────────────────────────────────────────[0m[36m─╮[0m
[36m│[0m [1;92mLLM Inference Benchmark[0m                                                                                    [36m│[0m
[36m│[0m Model: fn @ http://127.0.0.1:8000                                                                          [36m│[0m
[36m│[0m Decode concurrency: [1, 16]                                                                                [36m│[0m
[36m│[0m Decode contexts: ['0']                                                                                     [36m│[0m
[36m│[0m Duration: 20.0s per decode test | Max tokens: 8192                                                         [36m│[0m
[36m│[0m Pre-decode warmup: C=1 max-runnable context for 3s                                                         [36m│[0m
[36m│[0m Exact-loop guard: enabled | Output preview: unavailable in plain mode                                      [36m│[0m
[36m│[0m Prefill: integrated decode scouts | Sustained decode: 2 cells                                              [36m│[0m
[36m╰────────────────────────────────────────────────────────────────────────────────────────────────────────────╯[0m
[32mEngine: vLLM [0m[1;32m0.29[0m[32m.[0m[1;32m0[0m  Models: [1m[[0m[32m'fn'[0m[1m][0m
[36mKV cache budget [0m[1;36m([0m[36mvLLM metrics[0m[1;36m)[0m[36m:[0m [1;36m2[0m,[1;36m190[0m,[1;36m540[0m tokens [1m([0mkv_cache_size_tokens[1m)[0m
[36mModel context length:[0m [1;36m262[0m,[1;36m144[0m tokens
[36mPrefill tests:[0m integrated from decode scout requests [1m[[0m[1m][0m; scout-only extras [1m[[0m[32m'8k'[0m[1m][0m
[1mCalibrating padding text [0m[1m([0m[1;33mrun[0m[1m=[0m[1;35mvpynxitqdytu[0m[1m, up to 8k[0m[1m)[0m[1;33m...[0m
  Token targeting: single-point estimate from 8k [1m([0muse --token-targeting exact for [35m/[0m[95mtokenize[0m binary search[1m)[0m
  Calibrated: [1;36m6.17[0m chars/token [1m([0mcached, [33msource[0m=[35m8k[0m[1m)[0m
  8k: [1;36m50[0m,[1;36m524[0m chars [1m([0m~[1;36m8[0m,[1;36m191[0m tokens[1m)[0m
[32mDone.[0m

[1;33mWARNING:[0m nvidia-smi not found; hardware panel disabled. This usually means the benchmark is not running on the
GPU server/container.


[2mllm-decode-bench v0.[0m[1;2;36m7.7[0m
[1;32mPrefill Speed (scout requests, client ISL / TTFT)                                 [0m
[36m                                                                                  [0m
[36m [0m[1;92m [0m[1;92mContext[0m[1;92m [0m[36m [0m[1;92m [0m[1;92mTokens[0m[1;92m [0m[36m [0m[1;92m [0m[1;92mTTFT (s)[0m[1;92m [0m[36m [0m[1;92m [0m[1;92mClient tok/s[0m[1;92m [0m[36m [0m[1;92m [0m[1;92mServer tok/s[0m[1;92m [0m[36m [0m[1;92m [0m[1;92mPCIe rx/tx avg[0m[1;92m [0m[36m [0m[1;92m [0m[1;92mN[0m[1;92m [0m[36m [0m
[36m ──────────────────────────────────────────────────────────────────────────────── [0m
[36m [0m[1;92m [0m[1;92m8k     [0m[1;92m [0m[36m [0m  8,196 [36m [0m     0.58 [36m [0m       14,243 [36m [0m            — [36m [0m              — [36m [0m 1 [36m [0m
[36m                                                                                  [0m
[2mClient tok/s = prompt_tokens [0m[2;35m/[0m[2m TTFT. Integrated scout rows come from the prefix-cache scout request that [0m
[2mdecode needs anyway. Server tok/s is optional Prometheus validation when the engine exports prefill counters [0m
[2mand the exact counter delta is uncontaminated; for vLLM this uses newly computed KV tokens, not request prompt[0m
[2mtokens.[0m

[36m╭─[0m[36m────────────────────────────────────────────────[0m[1;32m Phase 2 [0m[36m─────────────────────────────────────────────────[0m[36m─╮[0m
[36m│[0m [1mSustained Decode[0m                                                                                           [36m│[0m
[36m│[0m Steady-state decode throughput after the engine has admitted the requested concurrency and passed warmup.  [36m│[0m
[36m│[0m Use this as the main tuning/regression signal for kernels, NCCL, DCP, MTP, and scheduler changes.          [36m│[0m
[36m╰────────────────────────────────────────────────────────────────────────────────────────────────────────────╯[0m
[1;32mAggregate tok/s[0m[1;37m  + TTFT/ITL[0m[1;32m                [0m
[90m╭────────────┬────────────┬───────────────╮[0m
[90m│[0m[1;92m [0m[1;92mctx \ conc[0m[1;92m [0m[90m│[0m[1;92m [0m[1;92m         1[0m[1;92m [0m[90m│[0m[1;92m [0m[1;92m           16[0m[1;92m [0m[90m│[0m
[90m├────────────┼────────────┼───────────────┤[0m
[90m│[0m[1;92m [0m[1;92m0         [0m[1;92m [0m[90m│[0m 262.6 [2m62/4[0m [90m│[0m 1274.3 [2m266/12[0m [90m│[0m
[90m╰────────────┴────────────┴───────────────╯[0m
[2mSustained Decode: aggregate tok/s uses OpenAI stream usage by default [0m[1;2m([0m[2mcontinuous completion_tokens when the [0m
[2mserver supports it[0m[1;2m)[0m[2m. Prometheus is kept as validation/scheduler data.[0m
[2mAggregate [0m[1;2;35msource[0m[1;2m([0m[2ms[0m[1;2m)[0m[2m: openai_continuous_usage[0m
[1;32mPer-Request tok/s            [0m
[90m╭────────────┬───────┬──────╮[0m
[90m│[0m[1;92m [0m[1;92mctx \ conc[0m[1;92m [0m[90m│[0m[1;92m [0m[1;92m    1[0m[1;92m [0m[90m│[0m[1;92m [0m[1;92m  16[0m[1;92m [0m[90m│[0m
[90m├────────────┼───────┼──────┤[0m
[90m│[0m[1;92m [0m[1;92m0         [0m[1;92m [0m[90m│[0m 262.6 [90m│[0m 79.6 [90m│[0m
[90m╰────────────┴───────┴──────╯[0m
[1;32mClient request latency:   [0m
[1;32mp50 / p90 ms              [0m
[90m╭────────────┬─────┬─────╮[0m
[90m│[0m[1;92m [0m[1;92mctx \ conc[0m[1;92m [0m[90m│[0m[1;92m [0m[1;92m  1[0m[1;92m [0m[90m│[0m[1;92m [0m[1;92m 16[0m[1;92m [0m[90m│[0m
[90m├────────────┼─────┼─────┤[0m
[90m│[0m[1;92m [0m[1;92m0         [0m[1;92m [0m[90m│[0m —/— [90m│[0m —/— [90m│[0m
[90m╰────────────┴─────┴─────╯[0m
[2mAggregate cells show dim detail as TTFT ms [0m[2;35m/[0m[2m ITL ms for the same ctx/conc coordinate. ITL is computed from [0m
[2mobserved generated tokens, including streams stopped at the measurement boundary; a missing ITL means no [0m
[2mstream produced at least two measured output tokens. Per-request tok/s and request latency are shown in [0m
[2mseparate per-cell matrices. Completion/sample counts and full request-level distributions remain in JSON under[0m
[2mrequest_samples.[0m
[2mSustained mode: client latency metrics explain request UX variance; aggregate tok/s remains the primary [0m
[2mthroughput signal. [0m[2;33mITL[0m[2m=[0m[1;2m([0m[2mlast_token_time-first_token_time[0m[1;2m)[0m[2;35m/[0m[1;2m([0m[2moutput_tokens-[0m[1;2;36m1[0m[1;2m)[0m[2m, user tok/[0m[2;33ms[0m[2m=[0m[1;2;36m1[0m[2m/ITL.[0m

[90m╭─[0m[90m────────────────────────────────────────────────[0m[1;32m Phase 3 [0m[90m─────────────────────────────────────────────────[0m[90m─╮[0m
[90m│[0m [1mBurst / E2E Decode[0m                                                                                         [90m│[0m
[90m│[0m Not run. Re-run with --run-burst to append a finite client-facing request burst after Sustained Decode.    [90m│[0m
[90m│[0m This is intentionally disabled by default because it adds another full decode matrix.                      [90m│[0m
[90m╰────────────────────────────────────────────────────────────────────────────────────────────────────────────╯[0m

[36m╭─[0m[36m────────────────────────────────────────────[0m[1;32m Primary Summary [0m[36m─────────────────────────────────────────────[0m[36m─╮[0m
[36m│[0m Primary matrices repeated last so the important numbers are visible without scrolling back through         [36m│[0m
[36m│[0m diagnostics.                                                                                               [36m│[0m
[36m╰────────────────────────────────────────────────────────────────────────────────────────────────────────────╯[0m
[1;32mPrefill tok/s                         [0m[1;32mAggregate decode tok/s         [0m
[90m╭─────┬────────┬────────┬────────┬───╮[0m[90m╭────────────┬───────┬────────╮[0m
[90m│[0m[1;92m [0m[1;92mctx[0m[1;92m [0m[90m│[0m[1;92m [0m[1;92mtokens[0m[1;92m [0m[90m│[0m[1;92m [0m[1;92mTTFT s[0m[1;92m [0m[90m│[0m[1;92m [0m[1;92m tok/s[0m[1;92m [0m[90m│[0m[1;92m [0m[1;92mN[0m[1;92m [0m[90m│[0m[90m│[0m[1;92m [0m[1;92mctx \ conc[0m[1;92m [0m[90m│[0m[1;92m [0m[1;92m    1[0m[1;92m [0m[90m│[0m[1;92m [0m[1;92m    16[0m[1;92m [0m[90m│[0m
[90m├─────┼────────┼────────┼────────┼───┤[0m[90m├────────────┼───────┼────────┤[0m
[90m│[0m[1;92m [0m[1;92m8k [0m[1;92m [0m[90m│[0m  8,196 [90m│[0m   0.58 [90m│[0m 14,243 [90m│[0m 1 [90m│[0m[90m│[0m[1;92m [0m[1;92m0         [0m[1;92m [0m[90m│[0m 262.6 [90m│[0m 1274.3 [90m│[0m
[90m╰─────┴────────┴────────┴────────┴───╯[0m[90m╰────────────┴───────┴────────╯[0m
[1;32mMTP-normalized decode[0m[1;37m steps/s (accept len)[0m[1;32m   [0m
[90m╭────────────┬──────────────┬───────────────╮[0m
[90m│[0m[1;92m [0m[1;92mctx \ conc[0m[1;92m [0m[90m│[0m[1;92m [0m[1;92m           1[0m[1;92m [0m[90m│[0m[1;92m [0m[1;92m           16[0m[1;92m [0m[90m│[0m
[90m├────────────┼──────────────┼───────────────┤[0m
[90m│[0m[1;92m [0m[1;92m0         [0m[1;92m [0m[90m│[0m 108.4 (2.42) [90m│[0m 1274.3 (1.00) [90m│[0m
[90m╰────────────┴──────────────┴───────────────╯[0m
[2msteps/s = tok/s ÷ accept_len: engine forward passes per second, independent of MTP acceptance, so runs with [0m
[2mdifferent acceptance are directly comparable. [0m[1;2m([0m[2maccept len[0m[1;2m)[0m[2m = tokens emitted per engine step.[0m

[32mResults saved to [0m
[32minference-matrices/EliovpAI-Qwen3.[0m[1;32m8[0m[32m-Flash-Next-W4A8-Paiton-CDNA4/matrix-20261030T021613Z.bench.json[0m
[localmaxxing] inference_matrix_saved
  quantization: W4A8-fp4g128
  engine: vllm
  benchVersion: 0.7.7
  prefillCells: 1
  path: inference-matrices/EliovpAI-Qwen3.8-Flash-Next-W4A8-Paiton-CDNA4/matrix-20261030T021613Z.json
  hfId: EliovpAI/Qwen3.8-Flash-Next-W4A8-Paiton-CDNA4
  engineVersion: 32d1be77
  decodeCells: 2
  burstCells: 0
Next:
  lmx speed-test matrix dry-run inference-matrices/EliovpAI-Qwen3.8-Flash-Next-W4A8-Paiton-CDNA4/matrix-20261030T021613Z.json
  lmx speed-test matrix submit inference-matrices/EliovpAI-Qwen3.8-Flash-Next-W4A8-Paiton-CDNA4/matrix-20261030T021613Z.json
$ amd-smi metric -g 0 -p
        SOCKET_POWER: 124 W

Script done on 2026-10-30 02:17:22+00:00 [COMMAND_EXIT_CODE="0"]
