diff --git a/README.md b/README.md index 5e3f2af..ec15d57 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,13 @@ # sskj — 多平台大模型推理性能基准测试项目 +> **更新(2026-07-20 17:25:40 +0800)** +> - RTX 6000D 的 SGLang DSV4-Flash 默认传入 `--cuda-graph-max-bs-decode 16`,避免 SM120 sparse MLA 在大 batch CUDA Graph 预捕获时 OOM。该参数仅限制预捕获图的 decode batch 上限,不限制服务的 `max-running-requests` 或 benchmark 并发;其他平台默认不受影响。 +> - H20、RTX 6000D、P800 的配置不再硬编码 sskj 仓库绝对路径:仓库内的环境、数据集、缓存和 P800 patch 均通过共享的 `${ROOT_DIR}` 推导,仓库迁移后无需逐个修改路径。 + > **更新(2026-07-20,PR 自动化测试)** > - 仅用于验证 Gitee 受保护分支的自动 Pull Request 创建与评审流程;不修改实验代码、配置或结果口径。 > **更新(2026-07-20,`903084c`)** -> - RTX 6000D 的 SGLang DSV4-Flash 默认传入 `--cuda-graph-max-bs-decode 16`,避免 SM120 sparse MLA 在大 batch CUDA Graph 预捕获时 OOM。该参数仅限制预捕获图的 decode batch 上限,不限制服务的 `max-running-requests` 或 benchmark 并发;其他平台默认不受影响。 > - H20 / RTX 6000D 的 TPxDP matrix baseline 不再显式限制模型上下文或服务内并发:vLLM 使用默认 `max-model-len` / `max-num-seqs`,SGLang 使用默认 `context-length` / `max-running-requests`。 > - SGLang 固定使用 `--moe-runner-backend marlin`;vLLM 保持框架默认 MoE backend。 > - `run_adaptive_concurrency_add16.sh` 在首点 OOM 时会重启服务并按 `C=16 -> 8 -> 1` 回退;仅 H20 / RTX 6000D matrix 默认开启,H200 / P800 保持原行为。 diff --git a/experiments/h20/dsv4_dspark_h20_sglang_tp_dp_matrix/config.env b/experiments/h20/dsv4_dspark_h20_sglang_tp_dp_matrix/config.env index 7f96f2a..073dbf9 100644 --- a/experiments/h20/dsv4_dspark_h20_sglang_tp_dp_matrix/config.env +++ b/experiments/h20/dsv4_dspark_h20_sglang_tp_dp_matrix/config.env @@ -45,7 +45,7 @@ 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 H20 nodes. -DATASET_PATH="${DATASET_PATH:-/data1/yy/sskj/datasets/ShareGPT_V3_unfiltered_cleaned_split.json}" +DATASET_PATH="${DATASET_PATH:-${ROOT_DIR}/datasets/ShareGPT_V3_unfiltered_cleaned_split.json}" # Matrix and concurrency rules are defined in matrix.json by default. MATRIX_FILE="${MATRIX_FILE:-${SCRIPT_DIR:-.}/matrix.json}" diff --git a/experiments/h20/dsv4_dspark_h20_vllm_tp_dp_matrix/config.env b/experiments/h20/dsv4_dspark_h20_vllm_tp_dp_matrix/config.env index 3477a0c..3791999 100644 --- a/experiments/h20/dsv4_dspark_h20_vllm_tp_dp_matrix/config.env +++ b/experiments/h20/dsv4_dspark_h20_vllm_tp_dp_matrix/config.env @@ -68,7 +68,7 @@ DOCKER_CLIENT_IMAGE="${DOCKER_CLIENT_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 H20 nodes. -DATASET_PATH="${DATASET_PATH:-/data1/yy/sskj/datasets/ShareGPT_V3_unfiltered_cleaned_split.json}" +DATASET_PATH="${DATASET_PATH:-${ROOT_DIR}/datasets/ShareGPT_V3_unfiltered_cleaned_split.json}" # Matrix and concurrency rules are defined in matrix.json by default. MATRIX_FILE="${MATRIX_FILE:-${SCRIPT_DIR:-.}/matrix.json}" diff --git a/experiments/h20/dsv4_h20_sglang_tp_dp_matrix/config.env b/experiments/h20/dsv4_h20_sglang_tp_dp_matrix/config.env index ecda6f8..366fcee 100644 --- a/experiments/h20/dsv4_h20_sglang_tp_dp_matrix/config.env +++ b/experiments/h20/dsv4_h20_sglang_tp_dp_matrix/config.env @@ -14,7 +14,7 @@ SGLANG_PORT="${SGLANG_PORT:-30031}" # Python interpreter for orchestration scripts (parse_backend.py, compare.py, etc.) # and the benchmark client. Defaults to the system python3 if the sglang venv # does not exist on the host. -VENV_CLIENT="${VENV_CLIENT:-/data1/yy/sskj/envs/sglang}" +VENV_CLIENT="${VENV_CLIENT:-${ROOT_DIR}/envs/sglang}" # Run the benchmark client natively (0) or inside Docker (1). USE_DOCKER_CLIENT="${USE_DOCKER_CLIENT:-1}" @@ -44,7 +44,7 @@ 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 H20 nodes. -DATASET_PATH="${DATASET_PATH:-/data1/yy/sskj/datasets/ShareGPT_V3_unfiltered_cleaned_split.json}" +DATASET_PATH="${DATASET_PATH:-${ROOT_DIR}/datasets/ShareGPT_V3_unfiltered_cleaned_split.json}" # Matrix and concurrency rules are defined in matrix.json by default. MATRIX_FILE="${MATRIX_FILE:-${SCRIPT_DIR:-.}/matrix.json}" diff --git a/experiments/h20/dsv4_h20_vllm_tp_dp_matrix/config.env b/experiments/h20/dsv4_h20_vllm_tp_dp_matrix/config.env index 9ab959c..571404a 100644 --- a/experiments/h20/dsv4_h20_vllm_tp_dp_matrix/config.env +++ b/experiments/h20/dsv4_h20_vllm_tp_dp_matrix/config.env @@ -14,7 +14,7 @@ VLLM_PORT="${VLLM_PORT:-30030}" # Python interpreter for orchestration scripts (parse_backend.py, compare.py, etc.) # and the benchmark client. Defaults to the system python3 if the sglang venv # does not exist on the host. -VENV_CLIENT="${VENV_CLIENT:-/data1/yy/sskj/envs/sglang}" +VENV_CLIENT="${VENV_CLIENT:-${ROOT_DIR}/envs/sglang}" # Run the benchmark client natively (0) or inside Docker (1). USE_DOCKER_CLIENT="${USE_DOCKER_CLIENT:-1}" @@ -50,7 +50,7 @@ DOCKER_CLIENT_IMAGE="${DOCKER_CLIENT_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 H20 nodes. -DATASET_PATH="${DATASET_PATH:-/data1/yy/sskj/datasets/ShareGPT_V3_unfiltered_cleaned_split.json}" +DATASET_PATH="${DATASET_PATH:-${ROOT_DIR}/datasets/ShareGPT_V3_unfiltered_cleaned_split.json}" # Matrix and concurrency rules are defined in matrix.json by default. MATRIX_FILE="${MATRIX_FILE:-${SCRIPT_DIR:-.}/matrix.json}" diff --git a/experiments/p800/dsv4_p800_sglang_tp_dp_matrix/config.env b/experiments/p800/dsv4_p800_sglang_tp_dp_matrix/config.env index dda2b23..5a3d8a3 100644 --- a/experiments/p800/dsv4_p800_sglang_tp_dp_matrix/config.env +++ b/experiments/p800/dsv4_p800_sglang_tp_dp_matrix/config.env @@ -59,8 +59,8 @@ DOCKER_IMAGE="${DOCKER_IMAGE:-iregistry.baidu-int.com/xpu/sglang-p800-pd-disagg- # copy (also used by the adaptive search for capacity checks); it is mounted # into the container at CONTAINER_DATASET_PATH, which is what the benchmark # client references. Default matches the H20 experiments; the file is -# gitignored, download it into /data1/yy/sskj/datasets/ first. -DATASET_PATH="${DATASET_PATH:-/data1/yy/sskj/datasets/ShareGPT_V3_unfiltered_cleaned_split.json}" +# gitignored, download it into ${ROOT_DIR}/datasets/ first. +DATASET_PATH="${DATASET_PATH:-${ROOT_DIR}/datasets/ShareGPT_V3_unfiltered_cleaned_split.json}" CONTAINER_DATASET_PATH="${CONTAINER_DATASET_PATH:-/workspace/ShareGPT_V3_unfiltered_cleaned_split.json}" # Matrix and concurrency rules are defined in matrix.json by default. diff --git a/experiments/pro6000/dsv4_pro6000_sglang_tp_dp_matrix/config.env b/experiments/pro6000/dsv4_pro6000_sglang_tp_dp_matrix/config.env index 587e946..58bef1d 100644 --- a/experiments/pro6000/dsv4_pro6000_sglang_tp_dp_matrix/config.env +++ b/experiments/pro6000/dsv4_pro6000_sglang_tp_dp_matrix/config.env @@ -48,9 +48,9 @@ DOCKER_IMAGE="${DOCKER_IMAGE:-sglang-sm120-dsv4:0.5.15.post1-fi0.6.14-sm120fix1} # To use ShareGPT, set BENCH_DATASET_NAME=random and DATASET_PATH explicitly. BENCH_DATASET_NAME="${BENCH_DATASET_NAME:-random}" -DATASET_PATH="${DATASET_PATH:-/data/yy/sskj/dataset/ShareGPT_V3_unfiltered_cleaned_split.json}" +DATASET_PATH="${DATASET_PATH:-${ROOT_DIR}/dataset/ShareGPT_V3_unfiltered_cleaned_split.json}" SGLANG_BENCH_MODULE="${SGLANG_BENCH_MODULE:-sglang.benchmark.serving}" -CACHE_DIR="${CACHE_DIR:-/data/yy/sskj/sglang_sm120_cache}" +CACHE_DIR="${CACHE_DIR:-${ROOT_DIR}/sglang_sm120_cache}" # Matrix and concurrency rules are defined in matrix.json by default. MATRIX_FILE="${MATRIX_FILE:-${SCRIPT_DIR:-.}/matrix.json}" diff --git a/experiments/pro6000/dsv4_pro6000_vllm_tp_dp_matrix/config.env b/experiments/pro6000/dsv4_pro6000_vllm_tp_dp_matrix/config.env index 5540bb5..4585543 100644 --- a/experiments/pro6000/dsv4_pro6000_vllm_tp_dp_matrix/config.env +++ b/experiments/pro6000/dsv4_pro6000_vllm_tp_dp_matrix/config.env @@ -49,9 +49,9 @@ DOCKER_CLIENT_IMAGE="${DOCKER_CLIENT_IMAGE:-sglang-sm120-dsv4:0.5.15.post1-fi0.6 # To use ShareGPT, set BENCH_DATASET_NAME=random and DATASET_PATH explicitly. BENCH_DATASET_NAME="${BENCH_DATASET_NAME:-random}" -DATASET_PATH="${DATASET_PATH:-/data/yy/sskj/dataset/ShareGPT_V3_unfiltered_cleaned_split.json}" +DATASET_PATH="${DATASET_PATH:-${ROOT_DIR}/dataset/ShareGPT_V3_unfiltered_cleaned_split.json}" SGLANG_BENCH_MODULE="${SGLANG_BENCH_MODULE:-sglang.benchmark.serving}" -CACHE_DIR="${CACHE_DIR:-/data/yy/sskj/vllm_sm120_cache}" +CACHE_DIR="${CACHE_DIR:-${ROOT_DIR}/vllm_sm120_cache}" # Matrix and concurrency rules are defined in matrix.json by default. MATRIX_FILE="${MATRIX_FILE:-${SCRIPT_DIR:-.}/matrix.json}" diff --git a/platforms/kunlun_p800.env b/platforms/kunlun_p800.env index 931edb7..f4319ac 100644 --- a/platforms/kunlun_p800.env +++ b/platforms/kunlun_p800.env @@ -24,4 +24,4 @@ CONTAINER_PYTHON="/root/miniconda/envs/python310_torch25_cuda/bin/python" # Host mount points for patches required by the P800 SGLang image # These are baked into the container start command in server_docker.sh. -PATCH_ROOT="${PATCH_ROOT:-/data1/yy/sskj/platforms/patches/kunlun_p800}" +PATCH_ROOT="${PATCH_ROOT:-${ROOT_DIR}/platforms/patches/kunlun_p800}" diff --git a/platforms/nvidia_h20.env b/platforms/nvidia_h20.env index cf635db..ae0fe25 100644 --- a/platforms/nvidia_h20.env +++ b/platforms/nvidia_h20.env @@ -16,9 +16,9 @@ MODEL_ROOT="/data1/hf_models" # Virtual environments on the host (used by native H20 scripts). # Override these if your H20 machine uses different paths. -VENV_VLLM="${VENV_VLLM:-/data1/yy/sskj/envs/vllm}" -VENV_SGLANG="${VENV_SGLANG:-/data1/yy/sskj/envs/sglang}" -VENV_CLIENT="${VENV_CLIENT:-/data1/yy/sskj/envs/sglang}" +VENV_VLLM="${VENV_VLLM:-${ROOT_DIR}/envs/vllm}" +VENV_SGLANG="${VENV_SGLANG:-${ROOT_DIR}/envs/sglang}" +VENV_CLIENT="${VENV_CLIENT:-${ROOT_DIR}/envs/sglang}" # Default server start script for the legacy benchmark grid. SERVER_START_SCRIPT="${SERVER_START_SCRIPT:-${ROOT_DIR}/scripts/start_dsv4_dspark_8card.sh}"