sglang tp_dp_matrix: run SGLang server/client in Docker on H200
- config.env: switch to /data/models/DeepSeek-V4-Flash, USE_DOCKER=1, CONTEXT_LENGTH=1M, CONCURRENCY_SAMPLES=2, add DATASET_PATH. - start_sglang_docker.sh: add --ipc host --shm-size 16g for NCCL. - start_sglang_dp.sh: use --model-path for Docker CLI. - run_bench.sh: mount dataset into client container and pass --dataset-path to avoid HF download on offline nodes.
This commit is contained in:
parent
db419e17b8
commit
7852dd2040
@ -1,4 +1,4 @@
|
||||
# TP×DP matrix experiment for DeepSeek-V4-Flash on H200 (8 GPUs) using SGLang Docker.
|
||||
# TP×DP matrix experiment for DeepSeek-V4-Flash on H200 (8 GPUs) using SGLang.
|
||||
# Tests SGLang with three parallel configurations:
|
||||
# TP=2, DP=4 -> 2 GPUs per replica, 4 replicas
|
||||
# TP=4, DP=2 -> 4 GPUs per replica, 2 replicas
|
||||
@ -6,7 +6,7 @@
|
||||
|
||||
EXPERIMENT="dsv4_h200_sglang_tp_dp_matrix"
|
||||
MODEL_NAME="DeepSeek-V4-Flash"
|
||||
MODEL_PATH="/data3/hf_models/DeepSeek-V4-Flash"
|
||||
MODEL_PATH="/data/models/DeepSeek-V4-Flash"
|
||||
SERVED_MODEL_NAME="deepseek-v4-flash"
|
||||
|
||||
SGLANG_PORT="${SGLANG_PORT:-30031}"
|
||||
@ -16,9 +16,7 @@ SGLANG_PORT="${SGLANG_PORT:-30031}"
|
||||
# does not exist on the host.
|
||||
VENV_CLIENT="${VENV_CLIENT:-/data/user1/yy/envs/sglang}"
|
||||
|
||||
# When USE_DOCKER_CLIENT=1, the benchmark client (sglang.bench_serving) is run
|
||||
# inside the same SGLang Docker image used for the server. This avoids requiring
|
||||
# a native sglang installation on the host.
|
||||
# Run the benchmark client natively (0) or inside Docker (1).
|
||||
USE_DOCKER_CLIENT="${USE_DOCKER_CLIENT:-1}"
|
||||
|
||||
export CUDA_VISIBLE_DEVICES="${CUDA_VISIBLE_DEVICES:-0,1,2,3,4,5,6,7}"
|
||||
@ -35,22 +33,28 @@ declare -a PARALLEL_CONFIGS=(
|
||||
)
|
||||
|
||||
# SGLang server settings
|
||||
CONTEXT_LENGTH="${CONTEXT_LENGTH:-65536}"
|
||||
MAX_RUNNING_REQUESTS="${MAX_RUNNING_REQUESTS:-64}"
|
||||
CONTEXT_LENGTH="${CONTEXT_LENGTH:-1048576}"
|
||||
MAX_RUNNING_REQUESTS="${MAX_RUNNING_REQUESTS:-128}"
|
||||
MEM_FRACTION_STATIC="${MEM_FRACTION_STATIC:-0.88}"
|
||||
MOE_RUNNER_BACKEND="${MOE_RUNNER_BACKEND:-marlin}"
|
||||
|
||||
# Docker deployment switch. SGLang is launched via Docker using the image below.
|
||||
# Deployment switch. 0 = native sglang venv, 1 = Docker.
|
||||
USE_DOCKER="${USE_DOCKER:-1}"
|
||||
DOCKER_IMAGE="${DOCKER_IMAGE:-lmsysorg/sglang:latest}"
|
||||
|
||||
# Dataset used by sglang.bench_serving --dataset-name random.
|
||||
# The random sampler needs a ShareGPT-style JSON file locally; it falls back to
|
||||
# downloading from HuggingFace, which usually fails on offline H200 nodes.
|
||||
DATASET_PATH="${DATASET_PATH:-/data/user1/yy/datasets/ShareGPT_V4.3_unfiltered_cleaned_split.json}"
|
||||
|
||||
# Matrix and concurrency rules are defined in matrix.json by default.
|
||||
MATRIX_FILE="${MATRIX_FILE:-${SCRIPT_DIR:-.}/matrix.json}"
|
||||
MATRIX_MODE="${MATRIX_MODE:-Y}"
|
||||
|
||||
# Sampling density for concurrency. 0 means use the default heuristic in
|
||||
# generate_scenarios.py (6-8 points, or all integers when range is small).
|
||||
CONCURRENCY_SAMPLES="${CONCURRENCY_SAMPLES:-0}"
|
||||
# Sampling density for concurrency.
|
||||
# 0 = use the default heuristic in generate_scenarios.py (6-8 points).
|
||||
# 2 = only test the low and high endpoints.
|
||||
export CONCURRENCY_SAMPLES="${CONCURRENCY_SAMPLES:-2}"
|
||||
|
||||
# Per-scenario timeout to avoid hangs (seconds).
|
||||
SCENARIO_TIMEOUT_S="${SCENARIO_TIMEOUT_S:-1800}"
|
||||
|
||||
@ -123,6 +123,7 @@ run_bench_serving() {
|
||||
docker run --rm \
|
||||
--network host \
|
||||
-v "${MODEL_PATH}:${MODEL_PATH}:ro" \
|
||||
-v "${DATASET_PATH}:${DATASET_PATH}:ro" \
|
||||
-v "${RESULT_BASE}:${RESULT_BASE}" \
|
||||
-e PYTHONUNBUFFERED=1 \
|
||||
"${DOCKER_IMAGE}" \
|
||||
@ -142,6 +143,7 @@ run_warmup() {
|
||||
--host 127.0.0.1 \
|
||||
--port "$SGLANG_PORT" \
|
||||
--dataset-name random \
|
||||
--dataset-path "$DATASET_PATH" \
|
||||
--random-input-len "$input_len" \
|
||||
--random-output-len "$output_len" \
|
||||
--num-prompts 1 \
|
||||
@ -419,6 +421,7 @@ run_parallel_config() {
|
||||
--host 127.0.0.1 \
|
||||
--port "$SGLANG_PORT" \
|
||||
--dataset-name random \
|
||||
--dataset-path "$DATASET_PATH" \
|
||||
--random-input-len "$isl" \
|
||||
--random-output-len "$dsl" \
|
||||
--num-prompts "$num" \
|
||||
|
||||
@ -28,7 +28,8 @@ rm -f "$PID_FILE"
|
||||
docker rm -f "$NAME" >/dev/null 2>&1 || true
|
||||
|
||||
SERVER_ARGS=(
|
||||
serve "$MODEL_PATH"
|
||||
serve
|
||||
--model-path "$MODEL_PATH"
|
||||
--trust-remote-code
|
||||
--tp-size "$TP"
|
||||
--moe-runner-backend "$MOE_RUNNER_BACKEND"
|
||||
@ -61,6 +62,8 @@ echo "Log: $LOG"
|
||||
nohup docker run --rm \
|
||||
--name "$NAME" \
|
||||
--gpus all \
|
||||
--ipc host \
|
||||
--shm-size 16g \
|
||||
--entrypoint sglang \
|
||||
-p "${PORT}:${PORT}" \
|
||||
-v "${MODEL_PATH}:${MODEL_PATH}:ro" \
|
||||
|
||||
@ -33,7 +33,8 @@ PID_FILE="${RUNTIME_BASE}/${EXPERIMENT}_sglang_tp${TP}_dp${DP}.pid"
|
||||
rm -f "$PID_FILE"
|
||||
|
||||
SERVER_ARGS=(
|
||||
sglang serve "$MODEL_PATH"
|
||||
sglang serve
|
||||
--model-path "$MODEL_PATH"
|
||||
--trust-remote-code
|
||||
--tp-size "$TP"
|
||||
--moe-runner-backend "$MOE_RUNNER_BACKEND"
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user