- rewrite README with project purpose, standard workflow, corrected index - add docs/NEW_PLATFORM_GUIDE.md (new GPU onboarding SOP, GLM5.2 reuse) - fix ../../scripts/common -> ../../../scripts/common in 42 experiment scripts - refresh stale docs (EXPERIMENT_GUIDE, H200_QUICKSTART, ADAPTIVE_CONCURRENCY_USAGE, BENCHMARK_WORKFLOW) - remove dead code (dp_proxy.py) and .bak leftovers - add p800 adaptive results (tp4_dp2/tp8_dp1 metrics + summary) - gitignore envs/charts and .tmp_charts
3.5 KiB
3.5 KiB
自适应并发 Benchmark 使用说明
这套脚本对每个固定的 (TP, DP, ISL, OSL) 依次测试
C=1,2,4,8,...,直到 Total TPS 连续两次增长不足 2%,或达到并发上限、
发生 OOM。每个正式测点发送 C * 5 个请求,并先用相同并发 C warm-up。
1. 进入目录
以下路径均相对仓库根目录(如 H200 机器上的 experiments/h200/...)。
vLLM:
cd experiments/h200/dsv4_h200_vllm_tp_dp_matrix
SGLang:
cd experiments/h200/dsv4_h200_sglang_tp_dp_matrix
两个目录的入口都是:
bash run_adaptive_concurrency.sh
2. 先 dry-run
只打印 TP/DP、ISL/OSL 和并发搜索计划,不加载模型:
DRY_RUN=1 bash run_adaptive_concurrency.sh
3. 单组合 smoke
只测 TP=8, DP=1, ISL=1K, OSL=128,并发搜索到 8:
RUN_ID=smoke-$(date +%Y%m%d-%H%M%S) \
TP_LIST="8" \
ISL_LIST="1024" \
OSL_LIST="128" \
GRID_LIMIT=1 \
SEARCH_MAX_CONCURRENCY=8 \
RESULT_BASE="$PWD/adaptive_results/smoke" \
bash run_adaptive_concurrency.sh
4. 正式运行
长任务放进 tmux。以下命令假设在仓库根目录下执行。vLLM 示例:
tmux new-session -d -s vllm-adaptive \
"cd experiments/h200/dsv4_h200_vllm_tp_dp_matrix && \
RUN_ID=vllm-\$(date +%Y%m%d-%H%M%S) \
RESULT_BASE=\$PWD/adaptive_results/vllm \
bash run_adaptive_concurrency.sh"
SGLang 示例:
tmux new-session -d -s sglang-adaptive \
"cd experiments/h200/dsv4_h200_sglang_tp_dp_matrix && \
RUN_ID=sglang-\$(date +%Y%m%d-%H%M%S) \
RESULT_BASE=\$PWD/adaptive_results/sglang \
bash run_adaptive_concurrency.sh"
查看任务:
tmux ls
tmux attach -t vllm-adaptive
tmux attach -t sglang-adaptive
从 tmux 退出但保持任务运行:按 Ctrl-b,松开,再按 d。
5. 常用覆盖参数
无需修改脚本,可以把变量写在命令前:
MODEL_PATH=/path/to/model \
DATASET_PATH=/path/to/ShareGPT.json \
DOCKER_IMAGE=your/server:image \
DOCKER_CLIENT_IMAGE=lmsysorg/sglang:latest \
CUDA_VISIBLE_DEVICES=0,1,2,3,4,5,6,7 \
SEARCH_MAX_CONCURRENCY=512 \
TPS_MIN_GAIN_PCT=2.0 \
PLATEAU_PATIENCE=2 \
bash run_adaptive_concurrency.sh
- vLLM 端口用
VLLM_PORT,SGLang 端口用SGLANG_PORT。 TP_LIST="8"只跑 TP=8;DP 使用config.env中对应的 TP/DP 组合。ISL_LIST="1024 4096"、OSL_LIST="128 256"用来筛选长度。GRID_LIMIT=1表示每组 TP/DP 只跑一个 ISL/OSL shape。BENCH_WARMUP_MAX_REQUESTS=0表示每个测点用完整并发 C warm-up;正数表示上限。- 正式基线保持
BENCH_DATASET_NAME=random和RANDOM_RANGE_RATIO=1.0。 random-ids只用于检查链路,不与正式 ShareGPT-backed 结果混用。
换机器或模型时,至少检查 MODEL_PATH、DATASET_PATH、Docker 镜像、GPU 编号、
端口、模型最大上下文和显存参数。需要永久修改时再编辑对应目录的 config.env。
6. 结果
每次运行在 ${RESULT_BASE}/${RUN_ID}/ 下生成:
adaptive_points.csv 每个并发测点的 TPS、TTFT、TPOT 等
adaptive_summary.csv 每个 ISL/OSL/TP/DP 的饱和并发和最佳 TPS 并发
adaptive_summary.md 可直接阅读的汇总表
run_manifest.json 本次模型、数据集和搜索参数
logs/ 编排与服务日志
tp*_dp*/raw_outputs/ sglang.bench_serving 原始 JSON
tp*_dp*/gpu_logs/ nvidia-smi 采样
快速查看:
column -s, -t adaptive_summary.csv | less -S
tail -f logs/orchestrator.log