dsv4_h200_vllm_tp_dp_matrix: use minimal official vLLM args, no EP, Y-only, exclude 1M
This commit is contained in:
parent
04a384b265
commit
15b5489535
@ -0,0 +1,29 @@
|
||||
{
|
||||
"metadata": {
|
||||
"experiment": "dsv4_h200_vllm_tp_dp_matrix_tp2_dp4",
|
||||
"run_id": "20260709-095536_smoke",
|
||||
"timestamp": "2026-07-09T09:55:43+00:00",
|
||||
"model": "/data/models/DeepSeek-V4-Flash",
|
||||
"backend": "vllm",
|
||||
"engine": "vllm",
|
||||
"hardware": "8x NVIDIA H200 143GB",
|
||||
"accelerator": "NVIDIA H200",
|
||||
"chip": "nvidia_h200",
|
||||
"script": "experiments/dsv4_h200_vllm_tp_dp_matrix/run_bench.sh",
|
||||
"env": "/data/user1/yy/envs/vllm",
|
||||
"git_commit": "ec85ef1",
|
||||
"git_dirty": "dirty",
|
||||
"description": "H200 vLLM TP×DP matrix for DeepSeek-V4-Flash"
|
||||
},
|
||||
"config": {
|
||||
"tp": 2,
|
||||
"dp": 4,
|
||||
"cuda_visible_devices": "0,1,2,3,4,5,6,7",
|
||||
"backend": "vllm",
|
||||
"server_start_script": "experiments/dsv4_h200_vllm_tp_dp_matrix/start_vllm_dp.sh",
|
||||
"server_args_per_isl": {
|
||||
"1024": "vllm serve /data/models/DeepSeek-V4-Flash --trust-remote-code --tensor-parallel-size 2 --kv-cache-dtype fp8 --max-model-len 5184 --max-num-seqs 136 --block-size 256 --gpu-memory-utilization 0.90 --tokenizer-mode deepseek_v4 --reasoning-parser deepseek_v4 --no-disable-hybrid-kv-cache-manager --disable-uvicorn-access-log --port 30030 --data-parallel-size 4 --data-parallel-size-local 4 --data-parallel-multi-port-external-lb "
|
||||
}
|
||||
},
|
||||
"scenarios": []
|
||||
}
|
||||
@ -0,0 +1,166 @@
|
||||
mark input_len output_len concurrency num_prompts
|
||||
Y 1024 128 1 5
|
||||
Y 1024 128 22 110
|
||||
Y 1024 128 43 215
|
||||
Y 1024 128 65 325
|
||||
Y 1024 128 86 430
|
||||
Y 1024 128 107 535
|
||||
Y 1024 128 128 640
|
||||
Y 1024 256 1 5
|
||||
Y 1024 256 22 110
|
||||
Y 1024 256 43 215
|
||||
Y 1024 256 65 325
|
||||
Y 1024 256 86 430
|
||||
Y 1024 256 107 535
|
||||
Y 1024 256 128 640
|
||||
Y 1024 512 1 5
|
||||
Y 1024 512 22 110
|
||||
Y 1024 512 43 215
|
||||
Y 1024 512 65 325
|
||||
Y 1024 512 86 430
|
||||
Y 1024 512 107 535
|
||||
Y 1024 512 128 640
|
||||
Y 1024 1024 1 5
|
||||
Y 1024 1024 22 110
|
||||
Y 1024 1024 43 215
|
||||
Y 1024 1024 65 325
|
||||
Y 1024 1024 86 430
|
||||
Y 1024 1024 107 535
|
||||
Y 1024 1024 128 640
|
||||
Y 1024 2048 1 5
|
||||
Y 1024 2048 22 110
|
||||
Y 1024 2048 43 215
|
||||
Y 1024 2048 65 325
|
||||
Y 1024 2048 86 430
|
||||
Y 1024 2048 107 535
|
||||
Y 1024 2048 128 640
|
||||
Y 1024 4096 1 5
|
||||
Y 1024 4096 22 110
|
||||
Y 1024 4096 43 215
|
||||
Y 1024 4096 65 325
|
||||
Y 1024 4096 86 430
|
||||
Y 1024 4096 107 535
|
||||
Y 1024 4096 128 640
|
||||
Y 4096 128 1 5
|
||||
Y 4096 128 11 55
|
||||
Y 4096 128 22 110
|
||||
Y 4096 128 33 165
|
||||
Y 4096 128 43 215
|
||||
Y 4096 128 53 265
|
||||
Y 4096 128 64 320
|
||||
Y 4096 256 1 5
|
||||
Y 4096 256 11 55
|
||||
Y 4096 256 22 110
|
||||
Y 4096 256 33 165
|
||||
Y 4096 256 43 215
|
||||
Y 4096 256 53 265
|
||||
Y 4096 256 64 320
|
||||
Y 4096 512 1 5
|
||||
Y 4096 512 11 55
|
||||
Y 4096 512 22 110
|
||||
Y 4096 512 33 165
|
||||
Y 4096 512 43 215
|
||||
Y 4096 512 53 265
|
||||
Y 4096 512 64 320
|
||||
Y 4096 1024 1 5
|
||||
Y 4096 1024 11 55
|
||||
Y 4096 1024 22 110
|
||||
Y 4096 1024 33 165
|
||||
Y 4096 1024 43 215
|
||||
Y 4096 1024 53 265
|
||||
Y 4096 1024 64 320
|
||||
Y 4096 2048 1 5
|
||||
Y 4096 2048 11 55
|
||||
Y 4096 2048 22 110
|
||||
Y 4096 2048 33 165
|
||||
Y 4096 2048 43 215
|
||||
Y 4096 2048 53 265
|
||||
Y 4096 2048 64 320
|
||||
Y 4096 4096 1 5
|
||||
Y 4096 4096 11 55
|
||||
Y 4096 4096 22 110
|
||||
Y 4096 4096 33 165
|
||||
Y 4096 4096 43 215
|
||||
Y 4096 4096 53 265
|
||||
Y 4096 4096 64 320
|
||||
Y 16384 128 1 5
|
||||
Y 16384 128 6 30
|
||||
Y 16384 128 11 55
|
||||
Y 16384 128 17 85
|
||||
Y 16384 128 22 110
|
||||
Y 16384 128 27 135
|
||||
Y 16384 128 32 160
|
||||
Y 16384 256 1 5
|
||||
Y 16384 256 6 30
|
||||
Y 16384 256 11 55
|
||||
Y 16384 256 17 85
|
||||
Y 16384 256 22 110
|
||||
Y 16384 256 27 135
|
||||
Y 16384 256 32 160
|
||||
Y 16384 512 1 5
|
||||
Y 16384 512 6 30
|
||||
Y 16384 512 11 55
|
||||
Y 16384 512 17 85
|
||||
Y 16384 512 22 110
|
||||
Y 16384 512 27 135
|
||||
Y 16384 512 32 160
|
||||
Y 16384 1024 1 5
|
||||
Y 16384 1024 6 30
|
||||
Y 16384 1024 11 55
|
||||
Y 16384 1024 17 85
|
||||
Y 16384 1024 22 110
|
||||
Y 16384 1024 27 135
|
||||
Y 16384 1024 32 160
|
||||
Y 16384 2048 1 5
|
||||
Y 16384 2048 6 30
|
||||
Y 16384 2048 11 55
|
||||
Y 16384 2048 17 85
|
||||
Y 16384 2048 22 110
|
||||
Y 16384 2048 27 135
|
||||
Y 16384 2048 32 160
|
||||
Y 65536 128 1 5
|
||||
Y 65536 128 2 10
|
||||
Y 65536 128 3 15
|
||||
Y 65536 128 5 25
|
||||
Y 65536 128 6 30
|
||||
Y 65536 128 7 35
|
||||
Y 65536 128 8 40
|
||||
Y 65536 256 1 5
|
||||
Y 65536 256 2 10
|
||||
Y 65536 256 3 15
|
||||
Y 65536 256 5 25
|
||||
Y 65536 256 6 30
|
||||
Y 65536 256 7 35
|
||||
Y 65536 256 8 40
|
||||
Y 65536 512 1 5
|
||||
Y 65536 512 2 10
|
||||
Y 65536 512 3 15
|
||||
Y 65536 512 5 25
|
||||
Y 65536 512 6 30
|
||||
Y 65536 512 7 35
|
||||
Y 65536 512 8 40
|
||||
Y 65536 1024 1 5
|
||||
Y 65536 1024 2 10
|
||||
Y 65536 1024 3 15
|
||||
Y 65536 1024 5 25
|
||||
Y 65536 1024 6 30
|
||||
Y 65536 1024 7 35
|
||||
Y 65536 1024 8 40
|
||||
Y 131072 128 1 5
|
||||
Y 131072 128 2 10
|
||||
Y 131072 128 3 15
|
||||
Y 131072 128 4 20
|
||||
Y 131072 256 1 5
|
||||
Y 131072 256 2 10
|
||||
Y 131072 256 3 15
|
||||
Y 131072 256 4 20
|
||||
Y 131072 512 1 5
|
||||
Y 131072 512 2 10
|
||||
Y 131072 512 3 15
|
||||
Y 131072 512 4 20
|
||||
Y 262144 128 1 5
|
||||
Y 262144 128 2 10
|
||||
Y 262144 256 1 5
|
||||
Y 262144 256 2 10
|
||||
Y 524288 128 1 5
|
||||
Y 524288 128 2 10
|
||||
|
@ -15,7 +15,7 @@ source "${SCRIPT_DIR}/config.env"
|
||||
RUN_ID="${RUN_ID:-$(date '+%Y%m%d-%H%M%S')}"
|
||||
RESULT_BASE="${SCRIPT_DIR}/results"
|
||||
MATRIX_FILE="${MATRIX_FILE:-${SCRIPT_DIR}/matrix.json}"
|
||||
MATRIX_MODE="${MATRIX_MODE:-Y+P}"
|
||||
MATRIX_MODE="${MATRIX_MODE:-Y}"
|
||||
SCENARIO_TIMEOUT_S="${SCENARIO_TIMEOUT_S:-1800}"
|
||||
GPU_MEM_SAMPLE_INTERVAL_S="${GPU_MEM_SAMPLE_INTERVAL_S:-1}"
|
||||
|
||||
@ -72,22 +72,14 @@ stop_server() {
|
||||
build_server_args() {
|
||||
local tp="$1"
|
||||
local dp="$2"
|
||||
local max_model_len="$3"
|
||||
local max_num_seqs="$4"
|
||||
|
||||
local args=(
|
||||
"vllm serve" "$MODEL_PATH"
|
||||
--trust-remote-code
|
||||
--tensor-parallel-size "$tp"
|
||||
--kv-cache-dtype fp8
|
||||
--max-model-len "$max_model_len"
|
||||
--max-num-seqs "$max_num_seqs"
|
||||
--block-size 256
|
||||
--gpu-memory-utilization 0.90
|
||||
--tokenizer-mode deepseek_v4
|
||||
--reasoning-parser deepseek_v4
|
||||
--no-disable-hybrid-kv-cache-manager
|
||||
--disable-uvicorn-access-log
|
||||
--tensor-parallel-size "$tp"
|
||||
--no-enable-flashinfer-autotune
|
||||
--port "$VLLM_PORT"
|
||||
)
|
||||
if [[ "$dp" -gt 1 ]]; then
|
||||
@ -103,11 +95,9 @@ build_server_args() {
|
||||
start_server() {
|
||||
local tp="$1"
|
||||
local dp="$2"
|
||||
local max_model_len="$3"
|
||||
local max_num_seqs="$4"
|
||||
|
||||
log "starting vllm server tp=${tp} dp=${dp} max_model_len=${max_model_len} max_num_seqs=${max_num_seqs}"
|
||||
bash "${SCRIPT_DIR}/start_vllm_dp.sh" "$tp" "$dp" "$max_model_len" "$max_num_seqs" \
|
||||
log "starting vllm server tp=${tp} dp=${dp}"
|
||||
bash "${SCRIPT_DIR}/start_vllm_dp.sh" "$tp" "$dp" \
|
||||
>> "${log_dir_global}/vllm_tp${tp}_dp${dp}.server.outer.log" 2>&1
|
||||
|
||||
local hport
|
||||
@ -244,22 +234,23 @@ run_parallel_config() {
|
||||
"$VENV_VLLM" \
|
||||
"H200 vLLM TP×DP matrix for DeepSeek-V4-Flash"
|
||||
|
||||
# Embed static config now; server_args will be updated per ISL group.
|
||||
jq --arg tp "$tp" --arg dp "$dp" --arg cuda "$CUDA_VISIBLE_DEVICES" \
|
||||
# Embed static config and the exact server command line used.
|
||||
local server_args_str
|
||||
server_args_str="$(build_server_args "$tp" "$dp")"
|
||||
jq --arg tp "$tp" --arg dp "$dp" --arg cuda "$CUDA_VISIBLE_DEVICES" --arg args "$server_args_str" \
|
||||
'.config = {
|
||||
"tp": ($tp | tonumber),
|
||||
"dp": ($dp | tonumber),
|
||||
"cuda_visible_devices": $cuda,
|
||||
"backend": "vllm",
|
||||
"server_start_script": "experiments/'${EXPERIMENT_NAME}'/start_vllm_dp.sh"
|
||||
"server_start_script": "experiments/'${EXPERIMENT_NAME}'/start_vllm_dp.sh",
|
||||
"server_args": $args
|
||||
}' "${result_root}/results.json" > "${result_root}/results.json.tmp" && \
|
||||
mv "${result_root}/results.json.tmp" "${result_root}/results.json"
|
||||
|
||||
# Group scenarios by input_len. We start one server per input_len with a
|
||||
# max_model_len large enough for the biggest output_len in that group.
|
||||
# Group scenarios by input_len. We restart the server for each ISL to keep
|
||||
# memory state isolated and to warm up per context length.
|
||||
local current_isl=""
|
||||
local max_dsl_for_isl=0
|
||||
local max_conc_for_isl=0
|
||||
local group_started=false
|
||||
|
||||
tail -n +2 "$scenario_tsv" | while IFS=$'\t' read -r mark isl dsl conc num; do
|
||||
@ -269,28 +260,15 @@ run_parallel_config() {
|
||||
stop_server "$tp" "$dp"
|
||||
fi
|
||||
current_isl="$isl"
|
||||
max_dsl_for_isl="$(awk -F'\t' -v isl="$isl" '$2==isl {if($3>max) max=$3} END{print max+0}' "$scenario_tsv")"
|
||||
max_conc_for_isl="$(awk -F'\t' -v isl="$isl" '$2==isl {if($4>max) max=$4} END{print max+0}' "$scenario_tsv")"
|
||||
|
||||
local max_model_len=$((isl + max_dsl_for_isl + 64))
|
||||
local max_num_seqs=$((max_conc_for_isl + 8))
|
||||
|
||||
stop_server "$tp" "$dp"
|
||||
if ! start_server "$tp" "$dp" "$max_model_len" "$max_num_seqs"; then
|
||||
if ! start_server "$tp" "$dp"; then
|
||||
log "ERROR: ${config_label} failed to start for ISL=${isl}; skipping this group"
|
||||
group_started=false
|
||||
continue
|
||||
fi
|
||||
group_started=true
|
||||
|
||||
# Update metadata with the actual server args for this ISL group.
|
||||
local server_args_str
|
||||
server_args_str="$(build_server_args "$tp" "$dp" "$max_model_len" "$max_num_seqs")"
|
||||
jq --arg isl "$isl" --arg args "$server_args_str" \
|
||||
'.config.server_args_per_isl += {($isl): $args}' \
|
||||
"${result_root}/results.json" > "${result_root}/results.json.tmp" && \
|
||||
mv "${result_root}/results.json.tmp" "${result_root}/results.json"
|
||||
|
||||
# Warmup with the shortest output for this ISL.
|
||||
run_warmup "$tp" "$dp" "$isl" 128
|
||||
fi
|
||||
|
||||
@ -1,12 +1,18 @@
|
||||
#!/usr/bin/env bash
|
||||
# Start vLLM server for a given TP×DP configuration.
|
||||
# Usage: start_vllm_dp.sh <TP> <DP> <max_model_len> <max_num_seqs>
|
||||
# Usage: start_vllm_dp.sh <TP> <DP>
|
||||
#
|
||||
# Uses the minimal argument set from the official DeepSeek-V4-Flash recipe:
|
||||
# --trust-remote-code
|
||||
# --kv-cache-dtype fp8
|
||||
# --block-size 256
|
||||
# --tensor-parallel-size <TP>
|
||||
# --no-enable-flashinfer-autotune
|
||||
# plus DP-related flags when DP > 1.
|
||||
set -e
|
||||
|
||||
TP="${1}"
|
||||
DP="${2}"
|
||||
MAX_MODEL_LEN="${3}"
|
||||
MAX_NUM_SEQS="${4}"
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
# shellcheck source=/dev/null
|
||||
@ -26,20 +32,13 @@ PID_FILE="/data/user1/yy/${EXPERIMENT}_vllm_tp${TP}_dp${DP}.pid"
|
||||
|
||||
rm -f "$PID_FILE"
|
||||
|
||||
# Build the base command as an array.
|
||||
SERVER_ARGS=(
|
||||
vllm serve "$MODEL_PATH"
|
||||
--trust-remote-code
|
||||
--tensor-parallel-size "$TP"
|
||||
--kv-cache-dtype fp8
|
||||
--max-model-len "$MAX_MODEL_LEN"
|
||||
--max-num-seqs "$MAX_NUM_SEQS"
|
||||
--block-size 256
|
||||
--gpu-memory-utilization 0.90
|
||||
--tokenizer-mode deepseek_v4
|
||||
--reasoning-parser deepseek_v4
|
||||
--no-disable-hybrid-kv-cache-manager
|
||||
--disable-uvicorn-access-log
|
||||
--tensor-parallel-size "$TP"
|
||||
--no-enable-flashinfer-autotune
|
||||
--port "$VLLM_PORT"
|
||||
)
|
||||
|
||||
@ -49,9 +48,7 @@ if [[ "$DP" -gt 1 ]]; then
|
||||
--data-parallel-size-local "$DP"
|
||||
--data-parallel-multi-port-external-lb
|
||||
)
|
||||
# vLLM 0.24.0 hard-codes the DP supervisor port to 9256 in
|
||||
# entrypoints/openai/cli_args.py. The bench client and health checks must
|
||||
# target that port when DP > 1.
|
||||
# vLLM 0.24.0 hard-codes the DP supervisor port to 9256.
|
||||
HEALTH_PORT="$VLLM_DP_SUPERVISOR_PORT"
|
||||
else
|
||||
HEALTH_PORT="$VLLM_PORT"
|
||||
@ -59,7 +56,7 @@ fi
|
||||
|
||||
SERVER_ARGS_STR="${SERVER_ARGS[*]}"
|
||||
|
||||
echo "=== Starting vLLM server (TP=${TP}, DP=${DP}, max_model_len=${MAX_MODEL_LEN}, max_num_seqs=${MAX_NUM_SEQS}) ==="
|
||||
echo "=== Starting vLLM server (TP=${TP}, DP=${DP}) ==="
|
||||
echo "Model: $MODEL_PATH"
|
||||
echo "Health port: $HEALTH_PORT"
|
||||
echo "Command: $SERVER_ARGS_STR"
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user