diff --git a/benchmarks/single_node/fixed_seq_len/kimik2.5_fp4_b200.sh b/benchmarks/single_node/fixed_seq_len/kimik2.5_fp4_b200.sh index 6c413137a..793bf2553 100644 --- a/benchmarks/single_node/fixed_seq_len/kimik2.5_fp4_b200.sh +++ b/benchmarks/single_node/fixed_seq_len/kimik2.5_fp4_b200.sh @@ -12,6 +12,20 @@ check_env_vars \ RANDOM_RANGE_RATIO \ RESULT_FILENAME +PARALLEL_ARGS=(--tensor-parallel-size "$TP" --data-parallel-size 1) +GMU=0.90 +PREFILL_SCHEDULE_ARGS=() +if [ "${DP_ATTENTION:-false}" = "true" ]; then + PARALLEL_ARGS=(--tensor-parallel-size 1 --data-parallel-size "$TP") + GMU=0.80 + PREFILL_SCHEDULE_ARGS=(--prefill-schedule-interval 4) +fi + +EP_ARGS=() +if [ "${EP_SIZE:-1}" -gt 1 ]; then + EP_ARGS=(--enable-expert-parallel) +fi + if [[ -n "$SLURM_JOB_ID" ]]; then echo "JOB $SLURM_JOB_ID running on $SLURMD_NODENAME" fi @@ -22,6 +36,8 @@ nvidia-smi export TORCH_CUDA_ARCH_LIST="10.0" export PYTHONNOUSERSITE=1 +export VLLM_USE_V2_MODEL_RUNNER=0 +export VLLM_FLASHINFER_AUTOTUNE_SKIP_OPS="" SERVER_LOG=/workspace/server.log @@ -41,17 +57,21 @@ export VLLM_MEMORY_PROFILER_ESTIMATE_CUDAGRAPHS=0 set -x vllm serve $MODEL --host 0.0.0.0 --port $PORT \ ---tensor-parallel-size=$TP \ ---gpu-memory-utilization 0.90 \ +"${PARALLEL_ARGS[@]}" \ +"${EP_ARGS[@]}" \ +"${PREFILL_SCHEDULE_ARGS[@]}" \ +--gpu-memory-utilization "$GMU" \ --max-model-len $MAX_MODEL_LEN \ --max-num-seqs $CONC \ --reasoning-parser kimi_k2 \ --tool-call-parser kimi_k2 \ --compilation_config.pass_config.fuse_allreduce_rms true \ --kv-cache-dtype fp8 \ ---max-cudagraph-capture-size 2048 \ ---max-num-batched-tokens "$((ISL * 2 ))" \ ---stream-interval 20 --no-enable-prefix-caching \ +--max-cudagraph-capture-size "$((CONC * 2))" \ +--stream-interval 32 \ +--attention-config '{"mla_prefill_backend":"FLASHINFER","use_prefill_query_quantization":true}' \ +--linear-backend flashinfer_cutlass \ +--no-enable-prefix-caching \ --trust-remote-code > $SERVER_LOG 2>&1 & SERVER_PID=$! diff --git a/configs/nvidia-master.yaml b/configs/nvidia-master.yaml index 51a650397..ac60822d5 100644 --- a/configs/nvidia-master.yaml +++ b/configs/nvidia-master.yaml @@ -1416,7 +1416,7 @@ kimik2.5-int4-h200-vllm: # Kimi-K2.5 FP4 B200 vLLM recipe as-is until B300-specific tuning is available. kimik2.5-fp4-b200-vllm: - image: vllm/vllm-openai:v0.22.0 + image: vllm/vllm-openai:nightly-e2fa28594f7baad142a426b0b6a2cfe2c79201c7 model: nvidia/Kimi-K2.5-NVFP4 model-prefix: kimik2.5 runner: b200 @@ -1428,8 +1428,31 @@ kimik2.5-fp4-b200-vllm: - isl: 8192 osl: 1024 search-space: - - { tp: 8, ep: 1, conc-start: 1, conc-end: 4 } - - { tp: 4, ep: 1, conc-start: 1, conc-end: 128 } + - { tp: 8, ep: 1, conc-start: 1, conc-end: 512 } + - { tp: 4, ep: 1, conc-start: 1, conc-end: 512 } + - { tp: 8, ep: 8, dp-attn: false, conc-start: 1, conc-end: 512 } + - { tp: 4, ep: 4, dp-attn: false, conc-start: 1, conc-end: 512 } + - { tp: 8, ep: 8, dp-attn: true, conc-list: [512, 1024] } + +# NOTE: At the time of submission, https://docs.vllm.ai/projects/recipes/en/latest/moonshotai/Kimi-K2.5.html +# does not have a B300-specific recipe, so this config reuses the existing +# Kimi-K2.5 FP4 B200 vLLM recipe as-is until B300-specific tuning is available. +m: + image: vllm/vllm-openai:nightly-e2fa28594f7baad142a426b0b6a2cfe2c79201c7 + model: nvidia/Kimi-K2.5-NVFP4 + model-prefix: kimik2.5 + runner: b200 + precision: fp4 + framework: vllm + multinode: false + scenarios: + fixed-seq-len: + - isl: 8192 + osl: 1024 + search-space: + - { tp: 8, ep: 1, conc-start: 1, conc-end: 512 } + - { tp: 4, ep: 1, conc-start: 1, conc-end: 512 } + - { tp: 8, ep: 8, dp-attn: true, conc-list: [512, 1024] } # NOTE: At the time of submission, https://docs.vllm.ai/projects/recipes/en/latest/moonshotai/Kimi-K2.5.html # does not have a B300-specific recipe, so this config reuses the existing diff --git a/perf-changelog.yaml b/perf-changelog.yaml index c855c972c..a892d7e6d 100644 --- a/perf-changelog.yaml +++ b/perf-changelog.yaml @@ -5449,3 +5449,9 @@ - "Enable prefill-only INT4 quick-reduce: set VLLM_ROCM_QUICK_REDUCE_QUANTIZATION=INT4 and VLLM_ROCM_QUICK_REDUCE_MAX_SIZE_BYTES_MB=2048 on the prefill workers via a new prefill_env channel (mirrors the existing decode_env path in server_vllm.sh)." - "Cap the 1P1D TP4 concurrency sweep at 256 (was 512); drop the 2P1D TP4 layout (128/256/512) as it is CI-flaky with negligible curve impact." pr-link: https://github.com/SemiAnalysisAI/InferenceX/pull/1943 + +- config-keys: + - kimik2.5-fp4-b200-vllm + description: + - "Kimi K2.5 NVFP4 B200 vLLM: nightly image, extend sweep space with TP/DEP arms, DEP gmu 0.80" + pr-link: https://github.com/SemiAnalysisAI/InferenceX/pull/2443