diff --git a/benchmarks/single_node/agentic/minimaxm3_fp8_h100_mtp.sh b/benchmarks/single_node/agentic/minimaxm3_fp8_h100_mtp.sh index 9e5f8fc8d6..7f6f50f070 100755 --- a/benchmarks/single_node/agentic/minimaxm3_fp8_h100_mtp.sh +++ b/benchmarks/single_node/agentic/minimaxm3_fp8_h100_mtp.sh @@ -116,7 +116,20 @@ else SPEC_CONFIG="{\"method\": \"eagle3\", \"model\": \"$DRAFT_MODEL\", \"num_speculative_tokens\": $NUM_SPEC_TOKENS, \"attention_backend\": \"FLASH_ATTN\", \"rejection_sample_method\": \"synthetic\", \"synthetic_acceptance_length\": $SYNTHETIC_ACCEPT_LEN}" fi -MAX_NUM_SEQS=$((2 * CONC)) +# Eval-only runs replay GSM8K through lm_eval at CONC parallel requests +# (benchmark_lib run_eval: num_concurrent = EVAL_CONCURRENT_REQUESTS or CONC). +# At CONC 1-3 that is 1319 sequential-ish requests at ~7 s each on H100 and +# the eval overran the launcher's 180-minute allocation ("CANCELLED ... DUE TO +# TIME LIMIT" at 96-98%, run 34174431989), while the recipe's previously +# merged sweep only ever ran the eval at c8 (195 min). Accuracy does not depend +# on client concurrency, so floor it at 8 for eval-only runs and size +# --max-num-seqs to admit that many; throughput runs keep 2*CONC. +EVAL_CONC=$CONC +if [ "$EVAL_ONLY" = "true" ] && [ "$CONC" -lt 8 ]; then + EVAL_CONC=8 + export EVAL_CONCURRENT_REQUESTS="${EVAL_CONCURRENT_REQUESTS:-$EVAL_CONC}" +fi +MAX_NUM_SEQS=$((2 * EVAL_CONC)) # MTP verifies four tokens per sequence, so CUDA graph capture is token-sized. MAX_CUDAGRAPH_CAPTURE_SIZE=$((MAX_NUM_SEQS * TOKENS_PER_SEQ)) diff --git a/configs/nvidia-master.yaml b/configs/nvidia-master.yaml index 0cbe0e8c8f..333b523a25 100644 --- a/configs/nvidia-master.yaml +++ b/configs/nvidia-master.yaml @@ -7514,7 +7514,7 @@ qwen3.5-fp4-b200-trt-mtp: - { tp: 8, ep: 8, dp-attn: true, spec-decoding: "mtp", conc-list: [128, 256, 1024] } minimaxm3-fp8-h100-vllm-agentic-mtp: - image: vllm/vllm-openai:v0.27.1 + image: vllm/vllm-openai:nightly-d9105ea8001e0a6d77a96327d17515bb5791fb36 model: MiniMaxAI/MiniMax-M3-MXFP8 model-prefix: minimaxm3 runner: cluster:h100-dgxc diff --git a/perf-changelog.yaml b/perf-changelog.yaml index 4fcd229bfb..a54962b272 100644 --- a/perf-changelog.yaml +++ b/perf-changelog.yaml @@ -6958,3 +6958,12 @@ - "Expand the TP8 and TP4/EP1 sweep coverage through concurrency 640." pr-link: https://github.com/SemiAnalysisAI/InferenceX/pull/2866 + +- config-keys: + - minimaxm3-fp8-h100-vllm-agentic-mtp + scenario-type: + - agentic-coding + description: + - "Update vLLM image from vllm/vllm-openai:v0.27.1 (v0.27.1 release) to vllm/vllm-openai:nightly-d9105ea8001e0a6d77a96327d17515bb5791fb36 (2026-09-07 upstream nightly, digest sha256:254eebf919e8b7b0d530d97fccc606c36f380ff6724d64bc190951bec1aee838, tag commit vllm-project/vllm@d9105ea8; Docker Hub last pushed 2026-09-07T06:16:01Z), the same tag the B200 MiniMax-M3 AgentX recipe moved to in #2860 and the ROCm counterpart of the MI325X/MI300X bumps in #2872/#2873. benchmarks/single_node/agentic/minimaxm3_fp8_h100_mtp.sh is unchanged: TRITON_ATTN attention, fp8 KV, EAGLE3 with the Inferact MiniMax-M3 EAGLE3-GQA draft pinned to FLASH_ATTN and the committed golden synthetic acceptance length 2.78, Mooncake 0.3.11.post1 DRAM offload on the host-tier arm; the resident TP8 c1-c5 and Mooncake DRAM offload c6/c8 grid is unchanged." + - "Floor the eval-only client concurrency at 8 (EVAL_CONCURRENT_REQUESTS) and size --max-num-seqs to admit it: the eval matrix now runs GSM8K at every sweep concurrency, and at c1-c3 the H100 eval ran 1319 requests nearly serially at ~7 s each and overran the launcher's 180-minute Slurm allocation (run 34174431989: CANCELLED DUE TO TIME LIMIT at 96-98%; c4/c5 finished in 119-124 min). The previously merged sweep only ran the eval at c8 (195 min on v0.27.1), so this is not an image regression. Eval accuracy is independent of client concurrency; throughput runs keep max-num-seqs 2*CONC." + pr-link: https://github.com/SemiAnalysisAI/InferenceX/pull/2874