sskj/experiments/ADAPTIVE_CONCURRENCY_USAGE.md
2026-07-11 06:11:40 +00:00

129 lines
3.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 自适应并发 Benchmark 使用说明
这套脚本对每个固定的 `(TP, DP, ISL, DSL)` 依次测试
`C=1,2,4,8,...`,直到 Total TPS 连续两次增长不足 2%,或达到并发上限、
发生 OOM。每个正式测点发送 `C * 5` 个请求,并先用相同并发 C warm-up。
## 1. 进入目录
vLLM
```bash
cd /data3/yy/sskj/experiments/dsv4_h200_vllm_tp_dp_matrix
```
SGLang
```bash
cd /data3/yy/sskj/experiments/dsv4_h200_sglang_tp_dp_matrix
```
两个目录的入口都是:
```bash
bash run_adaptive_concurrency.sh
```
## 2. 先 dry-run
只打印 TP/DP、ISL/DSL 和并发搜索计划,不加载模型:
```bash
DRY_RUN=1 bash run_adaptive_concurrency.sh
```
## 3. 单组合 smoke
只测 `TP=8, DP=1, ISL=1K, DSL=128`,并发搜索到 8
```bash
RUN_ID=smoke-$(date +%Y%m%d-%H%M%S) \
TP_LIST="8" \
ISL_LIST="1024" \
DSL_LIST="128" \
GRID_LIMIT=1 \
SEARCH_MAX_CONCURRENCY=8 \
RESULT_BASE=/data3/yy/sskj_adaptive_results/smoke \
bash run_adaptive_concurrency.sh
```
## 4. 正式运行
长任务放进 tmux。vLLM 示例:
```bash
tmux new-session -d -s vllm-adaptive \
"cd /data3/yy/sskj/experiments/dsv4_h200_vllm_tp_dp_matrix && \
RUN_ID=vllm-\$(date +%Y%m%d-%H%M%S) \
RESULT_BASE=/data3/yy/sskj_adaptive_results/vllm \
bash run_adaptive_concurrency.sh"
```
SGLang 示例:
```bash
tmux new-session -d -s sglang-adaptive \
"cd /data3/yy/sskj/experiments/dsv4_h200_sglang_tp_dp_matrix && \
RUN_ID=sglang-\$(date +%Y%m%d-%H%M%S) \
RESULT_BASE=/data3/yy/sskj_adaptive_results/sglang \
bash run_adaptive_concurrency.sh"
```
查看任务:
```bash
tmux ls
tmux attach -t vllm-adaptive
tmux attach -t sglang-adaptive
```
从 tmux 退出但保持任务运行:按 `Ctrl-b`,松开,再按 `d`
## 5. 常用覆盖参数
无需修改脚本,可以把变量写在命令前:
```bash
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=8DP 使用 `config.env` 中对应的 TP/DP 组合。
- `ISL_LIST="1024 4096"``DSL_LIST="128 256"` 用来筛选长度。
- `GRID_LIMIT=1` 表示每组 TP/DP 只跑一个 ISL/DSL 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}/` 下生成:
```text
adaptive_points.csv 每个并发测点的 TPS、TTFT、TPOT 等
adaptive_summary.csv 每个 ISL/DSL/TP/DP 的饱和并发和最佳 TPS 并发
adaptive_summary.md 可直接阅读的汇总表
run_manifest.json 本次模型、数据集和搜索参数
logs/ 编排与服务日志
tp*_dp*/raw_outputs/ sglang.bench_serving 原始 JSON
tp*_dp*/gpu_logs/ nvidia-smi 采样
```
快速查看:
```bash
column -s, -t adaptive_summary.csv | less -S
tail -f logs/orchestrator.log
```