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')}"
|
RUN_ID="${RUN_ID:-$(date '+%Y%m%d-%H%M%S')}"
|
||||||
RESULT_BASE="${SCRIPT_DIR}/results"
|
RESULT_BASE="${SCRIPT_DIR}/results"
|
||||||
MATRIX_FILE="${MATRIX_FILE:-${SCRIPT_DIR}/matrix.json}"
|
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}"
|
SCENARIO_TIMEOUT_S="${SCENARIO_TIMEOUT_S:-1800}"
|
||||||
GPU_MEM_SAMPLE_INTERVAL_S="${GPU_MEM_SAMPLE_INTERVAL_S:-1}"
|
GPU_MEM_SAMPLE_INTERVAL_S="${GPU_MEM_SAMPLE_INTERVAL_S:-1}"
|
||||||
|
|
||||||
@ -72,22 +72,14 @@ stop_server() {
|
|||||||
build_server_args() {
|
build_server_args() {
|
||||||
local tp="$1"
|
local tp="$1"
|
||||||
local dp="$2"
|
local dp="$2"
|
||||||
local max_model_len="$3"
|
|
||||||
local max_num_seqs="$4"
|
|
||||||
|
|
||||||
local args=(
|
local args=(
|
||||||
"vllm serve" "$MODEL_PATH"
|
"vllm serve" "$MODEL_PATH"
|
||||||
--trust-remote-code
|
--trust-remote-code
|
||||||
--tensor-parallel-size "$tp"
|
|
||||||
--kv-cache-dtype fp8
|
--kv-cache-dtype fp8
|
||||||
--max-model-len "$max_model_len"
|
|
||||||
--max-num-seqs "$max_num_seqs"
|
|
||||||
--block-size 256
|
--block-size 256
|
||||||
--gpu-memory-utilization 0.90
|
--tensor-parallel-size "$tp"
|
||||||
--tokenizer-mode deepseek_v4
|
--no-enable-flashinfer-autotune
|
||||||
--reasoning-parser deepseek_v4
|
|
||||||
--no-disable-hybrid-kv-cache-manager
|
|
||||||
--disable-uvicorn-access-log
|
|
||||||
--port "$VLLM_PORT"
|
--port "$VLLM_PORT"
|
||||||
)
|
)
|
||||||
if [[ "$dp" -gt 1 ]]; then
|
if [[ "$dp" -gt 1 ]]; then
|
||||||
@ -103,11 +95,9 @@ build_server_args() {
|
|||||||
start_server() {
|
start_server() {
|
||||||
local tp="$1"
|
local tp="$1"
|
||||||
local dp="$2"
|
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}"
|
log "starting vllm server tp=${tp} dp=${dp}"
|
||||||
bash "${SCRIPT_DIR}/start_vllm_dp.sh" "$tp" "$dp" "$max_model_len" "$max_num_seqs" \
|
bash "${SCRIPT_DIR}/start_vllm_dp.sh" "$tp" "$dp" \
|
||||||
>> "${log_dir_global}/vllm_tp${tp}_dp${dp}.server.outer.log" 2>&1
|
>> "${log_dir_global}/vllm_tp${tp}_dp${dp}.server.outer.log" 2>&1
|
||||||
|
|
||||||
local hport
|
local hport
|
||||||
@ -244,22 +234,23 @@ run_parallel_config() {
|
|||||||
"$VENV_VLLM" \
|
"$VENV_VLLM" \
|
||||||
"H200 vLLM TP×DP matrix for DeepSeek-V4-Flash"
|
"H200 vLLM TP×DP matrix for DeepSeek-V4-Flash"
|
||||||
|
|
||||||
# Embed static config now; server_args will be updated per ISL group.
|
# Embed static config and the exact server command line used.
|
||||||
jq --arg tp "$tp" --arg dp "$dp" --arg cuda "$CUDA_VISIBLE_DEVICES" \
|
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 = {
|
'.config = {
|
||||||
"tp": ($tp | tonumber),
|
"tp": ($tp | tonumber),
|
||||||
"dp": ($dp | tonumber),
|
"dp": ($dp | tonumber),
|
||||||
"cuda_visible_devices": $cuda,
|
"cuda_visible_devices": $cuda,
|
||||||
"backend": "vllm",
|
"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" && \
|
}' "${result_root}/results.json" > "${result_root}/results.json.tmp" && \
|
||||||
mv "${result_root}/results.json.tmp" "${result_root}/results.json"
|
mv "${result_root}/results.json.tmp" "${result_root}/results.json"
|
||||||
|
|
||||||
# Group scenarios by input_len. We start one server per input_len with a
|
# Group scenarios by input_len. We restart the server for each ISL to keep
|
||||||
# max_model_len large enough for the biggest output_len in that group.
|
# memory state isolated and to warm up per context length.
|
||||||
local current_isl=""
|
local current_isl=""
|
||||||
local max_dsl_for_isl=0
|
|
||||||
local max_conc_for_isl=0
|
|
||||||
local group_started=false
|
local group_started=false
|
||||||
|
|
||||||
tail -n +2 "$scenario_tsv" | while IFS=$'\t' read -r mark isl dsl conc num; do
|
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"
|
stop_server "$tp" "$dp"
|
||||||
fi
|
fi
|
||||||
current_isl="$isl"
|
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"
|
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"
|
log "ERROR: ${config_label} failed to start for ISL=${isl}; skipping this group"
|
||||||
group_started=false
|
group_started=false
|
||||||
continue
|
continue
|
||||||
fi
|
fi
|
||||||
group_started=true
|
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.
|
# Warmup with the shortest output for this ISL.
|
||||||
run_warmup "$tp" "$dp" "$isl" 128
|
run_warmup "$tp" "$dp" "$isl" 128
|
||||||
fi
|
fi
|
||||||
|
|||||||
@ -1,12 +1,18 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
# Start vLLM server for a given TP×DP configuration.
|
# 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
|
set -e
|
||||||
|
|
||||||
TP="${1}"
|
TP="${1}"
|
||||||
DP="${2}"
|
DP="${2}"
|
||||||
MAX_MODEL_LEN="${3}"
|
|
||||||
MAX_NUM_SEQS="${4}"
|
|
||||||
|
|
||||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
# shellcheck source=/dev/null
|
# shellcheck source=/dev/null
|
||||||
@ -26,20 +32,13 @@ PID_FILE="/data/user1/yy/${EXPERIMENT}_vllm_tp${TP}_dp${DP}.pid"
|
|||||||
|
|
||||||
rm -f "$PID_FILE"
|
rm -f "$PID_FILE"
|
||||||
|
|
||||||
# Build the base command as an array.
|
|
||||||
SERVER_ARGS=(
|
SERVER_ARGS=(
|
||||||
vllm serve "$MODEL_PATH"
|
vllm serve "$MODEL_PATH"
|
||||||
--trust-remote-code
|
--trust-remote-code
|
||||||
--tensor-parallel-size "$TP"
|
|
||||||
--kv-cache-dtype fp8
|
--kv-cache-dtype fp8
|
||||||
--max-model-len "$MAX_MODEL_LEN"
|
|
||||||
--max-num-seqs "$MAX_NUM_SEQS"
|
|
||||||
--block-size 256
|
--block-size 256
|
||||||
--gpu-memory-utilization 0.90
|
--tensor-parallel-size "$TP"
|
||||||
--tokenizer-mode deepseek_v4
|
--no-enable-flashinfer-autotune
|
||||||
--reasoning-parser deepseek_v4
|
|
||||||
--no-disable-hybrid-kv-cache-manager
|
|
||||||
--disable-uvicorn-access-log
|
|
||||||
--port "$VLLM_PORT"
|
--port "$VLLM_PORT"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -49,9 +48,7 @@ if [[ "$DP" -gt 1 ]]; then
|
|||||||
--data-parallel-size-local "$DP"
|
--data-parallel-size-local "$DP"
|
||||||
--data-parallel-multi-port-external-lb
|
--data-parallel-multi-port-external-lb
|
||||||
)
|
)
|
||||||
# vLLM 0.24.0 hard-codes the DP supervisor port to 9256 in
|
# vLLM 0.24.0 hard-codes the DP supervisor port to 9256.
|
||||||
# entrypoints/openai/cli_args.py. The bench client and health checks must
|
|
||||||
# target that port when DP > 1.
|
|
||||||
HEALTH_PORT="$VLLM_DP_SUPERVISOR_PORT"
|
HEALTH_PORT="$VLLM_DP_SUPERVISOR_PORT"
|
||||||
else
|
else
|
||||||
HEALTH_PORT="$VLLM_PORT"
|
HEALTH_PORT="$VLLM_PORT"
|
||||||
@ -59,7 +56,7 @@ fi
|
|||||||
|
|
||||||
SERVER_ARGS_STR="${SERVER_ARGS[*]}"
|
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 "Model: $MODEL_PATH"
|
||||||
echo "Health port: $HEALTH_PORT"
|
echo "Health port: $HEALTH_PORT"
|
||||||
echo "Command: $SERVER_ARGS_STR"
|
echo "Command: $SERVER_ARGS_STR"
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user