Skip to content

Commit e694aff

Browse files
committed
modify benchmark compare skill
1 parent cd54e1c commit e694aff

3 files changed

Lines changed: 51 additions & 14 deletions

File tree

.claude/skills/benchmark-compare/README.md

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
模型:<path_to_model>
1616
数据集:<path_to_dataset>
1717
并发:64,512
18-
量化:不量化(BF16),FP8
18+
量化:不量化(BF16),FP8(Block-Wise)
1919
使用GPU5和GPU6
2020
```
2121

@@ -26,9 +26,11 @@
2626
| 模型路径 || 模型权重目录的完整路径 | `/path/to/GLM-4.7-Flash` |
2727
| 数据集 | 否(有默认值) | JSONL 格式的测试数据集 | `/path/to/data.jsonl` |
2828
| 并发 | 否(默认 32) | 一个或多个并发数,逗号分隔 | `64,512` |
29-
| 量化 | 否(默认 BF16) | 一种或多种量化方式 | `不量化(BF16),FP8` |
30-
| GPU | 否(自动选空闲卡) | 指定使用哪些 GPU | `使用GPU5和GPU6` |
29+
| 量化 | 否(默认 BF16) | 一种或多种量化方式,FD 使用 Block-Wise FP8,SG 使用 Per-Tensor FP8 | `不量化(BF16),FP8` |
30+
| GPU | 否(自动选空闲卡) | 指定使用哪些 GPU | `使用GPU0-7` |
3131
| TP | 否(默认 1) | tensor-parallel 大小 | `TP=4` |
32+
| DP | 否(默认 1) | data-parallel 大小 | `DP=2` |
33+
| EP | 否(默认不启用) | expert-parallel 大小,MoE 模型专用 | `EP=8` |
3234

3335
### 使用示例
3436

@@ -42,9 +44,14 @@
4244
帮我跑 benchmark,模型用 /path/to/Qwen2.5-72B,TP=4,并发 64
4345
```
4446

47+
**TP+DP+EP 组合**(MoE 模型 8 卡全并行):
48+
```
49+
对比测试 GLM-4.7-Flash,TP=4,DP=2,EP=8,并发 64 和 512,量化 BF16 和 FP8
50+
```
51+
4552
**多场景对比**(多种量化 × 多种并发):
4653
```
47-
对比测试 GLM-4.7-Flash,并发 64 和 512,量化 BF16 和 FP8
54+
对比测试 GLM-4.7-Flash,并发 64 和 512,量化 BF16 和 FP8(Block-Wise)
4855
```
4956

5057
**仅生成报告**(已有测试数据):
@@ -74,7 +81,7 @@ Agent 会自动执行以下步骤:
7481
## 输出结果
7582

7683
- **HTML 报告**`benchmark_results/benchmark_report.html`
77-
- 支持量化方式切换(BF16 / FP8)
84+
- 支持量化方式切换(BF16 / FP8 Block-Wise
7885
- 支持并发数切换(64 / 512 等)
7986
- 明暗主题切换
8087
- Chart.js 可视化图表
@@ -105,6 +112,7 @@ benchmark-compare/
105112
|------|------|----------|----------|
106113
| single | 单卡部署,FD 和 SG 各一张 | 2 张 | TP=1(默认) |
107114
| tp | 多卡 Tensor Parallel | 2 × TP 张 | TP > 1 |
115+
| tp_dp_ep | TP + DP + EP 全并行(MoE 模型) | TP × DP 张(两框架共用同批卡) | TP > 1 且 DP > 1 且 EP > 0 |
108116
| pd | PD 分离(仅 FD),SG 标准模式 | TP + 1 + TP 张 | 用户指定 pd |
109117
| multi-node | 多机部署 | 用户指定 | 用户提供节点 IP |
110118

@@ -117,6 +125,10 @@ benchmark-compare/
117125

118126
## 注意事项
119127

128+
- **EP 并行映射差异**
129+
- FastDeploy:`--enable-expert-parallel` 为 flag,EP size 隐式等于 TP × DP
130+
- SGLang:`--ep-size N` 为显式数值参数
131+
- 典型配置:TP=4, DP=2, EP=8 表示 8 卡全部参与 expert 并行
120132
- **FP8 量化类型**:用户说"FP8"时,实际对应两种不同实现:
121133
- FastDeploy 使用 `--quantization block_wise_fp8`(Block-Wise FP8,按 block 粒度量化,精度损失更小)
122134
- SGLang 使用 `--quantization fp8`(Per-Tensor FP8,粗粒度量化)

.claude/skills/benchmark-compare/SKILL.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,9 @@ user_invocable: true
4444
| 是否量化 | `QUANTIZATION` | `none` | `none` / `block_wise_fp8`(FD) + `fp8`(SG) / `wint4` / `wint8`。注意:用户说"FP8"时,FD 实际使用 Block-Wise FP8(`--quantization block_wise_fp8`),SG 使用 per-tensor FP8(`--quantization fp8`),两者量化粒度不同,报告中需明确标注 |
4545
| 数据集路径 | `DATASET_PATH` | `<path_to_dataset>` | JSONL 格式 |
4646
| TP 大小 | `TP_SIZE` | `1` | tensor-parallel-size |
47-
| DP 大小 | `DP_SIZE` | `1` | data-parallel-size(仅 FD 支持) |
48-
| 部署模式 | `DEPLOY_MODE` | `single` | `single` / `tp` / `pd` / `multi-node` |
47+
| DP 大小 | `DP_SIZE` | `1` | data-parallel-size |
48+
| EP 大小 | `EP_SIZE` | `0` | expert-parallel-size,MoE 模型专用。FD 映射为 `--enable-expert-parallel`(EP size 隐式=TP×DP),SG 映射为 `--ep-size N` |
49+
| 部署模式 | `DEPLOY_MODE` | `single` | `single` / `tp` / `tp_dp_ep` / `pd` / `multi-node` |
4950
| FD 端口 | `FD_PORT` | `8180` | FastDeploy 服务端口 |
5051
| SG 端口 | `SG_PORT` | `8280` | SGLang 服务端口 |
5152
| GPU 列表 | `GPU_LIST` | 自动选择空闲卡 | 逗号分隔,如 `0,1,2,3` |

.claude/skills/benchmark-compare/scripts/launch_service.sh

Lines changed: 31 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#!/usr/bin/env bash
22
# launch_service.sh — 通用推理框架服务启动脚本
3-
# 支持 FastDeploy / SGLang,支持单卡/多卡 TP/PD 分离模式
3+
# 支持 FastDeploy / SGLang,支持单卡/多卡 TP/DP/EP/PD 分离模式
44
set -euo pipefail
55

66
# ============================================================
@@ -12,6 +12,7 @@ PORT=""
1212
GPUS=""
1313
TP=1
1414
DP=1
15+
EP=0
1516
CONCURRENCY=32
1617
MAX_MODEL_LEN=65536
1718
QUANTIZATION="none"
@@ -30,12 +31,15 @@ usage() {
3031
--framework <fd|sg> 推理框架 (fd=FastDeploy, sg=SGLang)
3132
--model <PATH> 模型权重路径
3233
--port <PORT> 服务端口
33-
--gpus <DEVICES> CUDA_VISIBLE_DEVICES (如 "0" 或 "0,1,2,3")
34+
--gpus <DEVICES> CUDA_VISIBLE_DEVICES (如 "0" 或 "0,1,2,3,4,5,6,7")
3435
--venv <PATH> 虚拟环境路径 (.venv 目录)
3536
3637
可选参数:
3738
--tp <N> tensor-parallel-size (默认: 1)
38-
--dp <N> data-parallel-size, 仅 FD (默认: 1)
39+
--dp <N> data-parallel-size (默认: 1)
40+
--ep <N> expert-parallel-size, MoE 模型专用 (默认: 0, 不启用)
41+
FD: 映射为 --enable-expert-parallel (EP=TP×DP 隐式)
42+
SG: 映射为 --ep-size N
3943
--concurrency <N> max-num-seqs / max-running-requests (默认: 32)
4044
--max-model-len <N> 最大序列长度 (默认: 65536)
4145
--quantization <TYPE> 量化方式: none|block_wise_fp8|fp8|wint4|wint8 (默认: none)
@@ -50,9 +54,13 @@ usage() {
5054
bash launch_service.sh --framework fd --model /path/to/model --port 8180 \
5155
--gpus 0 --venv /path/to/FastDeploy/.venv
5256
53-
# 多卡 TP=4 启动 SGLang
57+
# TP=4 + DP=2 + EP=8 启动 FastDeploy (MoE, 8卡)
58+
bash launch_service.sh --framework fd --model /path/to/model --port 8180 \
59+
--gpus 0,1,2,3,4,5,6,7 --tp 4 --dp 2 --ep 8 --venv /path/to/FastDeploy/.venv
60+
61+
# TP=4 + DP=2 + EP=8 启动 SGLang (MoE, 8卡)
5462
bash launch_service.sh --framework sg --model /path/to/model --port 8280 \
55-
--gpus 0,1,2,3 --tp 4 --venv /path/to/sglang_env/.venv
63+
--gpus 0,1,2,3,4,5,6,7 --tp 4 --dp 2 --ep 8 --venv /path/to/sglang_env/.venv
5664
EOF
5765
exit "${1:-0}"
5866
}
@@ -65,6 +73,7 @@ while [[ $# -gt 0 ]]; do
6573
--gpus) GPUS="$2"; shift 2 ;;
6674
--tp) TP="$2"; shift 2 ;;
6775
--dp) DP="$2"; shift 2 ;;
76+
--ep) EP="$2"; shift 2 ;;
6877
--concurrency) CONCURRENCY="$2"; shift 2 ;;
6978
--max-model-len) MAX_MODEL_LEN="$2"; shift 2 ;;
7079
--quantization) QUANTIZATION="$2"; shift 2 ;;
@@ -111,7 +120,7 @@ launch_fastdeploy() {
111120
echo "[INFO] 启动 FastDeploy 服务..."
112121
echo " 模型: $MODEL"
113122
echo " 端口: $PORT"
114-
echo " GPU: $GPUS (TP=$TP, DP=$DP)"
123+
echo " GPU: $GPUS (TP=$TP, DP=$DP, EP=$EP)"
115124
echo " 并发: $CONCURRENCY"
116125
echo " 量化: $QUANTIZATION"
117126
echo " 日志: $LOG_FILE"
@@ -156,6 +165,11 @@ else:
156165
CMD+=" --data-parallel-size $DP"
157166
fi
158167

168+
# EP (expert parallelism) — FD 只有 flag,EP size 隐式 = TP×DP
169+
if [[ "$EP" -gt 0 ]]; then
170+
CMD+=" --enable-expert-parallel"
171+
fi
172+
159173
# 量化
160174
if [[ "$QUANTIZATION" != "none" ]]; then
161175
CMD+=" --quantization $QUANTIZATION"
@@ -184,7 +198,7 @@ launch_sglang() {
184198
echo "[INFO] 启动 SGLang 服务..."
185199
echo " 模型: $MODEL"
186200
echo " 端口: $PORT"
187-
echo " GPU: $GPUS (TP=$TP)"
201+
echo " GPU: $GPUS (TP=$TP, DP=$DP, EP=$EP)"
188202
echo " 并发: $CONCURRENCY"
189203
echo " 量化: $QUANTIZATION"
190204
echo " 日志: $LOG_FILE"
@@ -208,6 +222,16 @@ launch_sglang() {
208222
CMD+=" --max-running-requests $CONCURRENCY"
209223
CMD+=" --attention-backend $ATTENTION_BACKEND"
210224

225+
# DP (data parallelism)
226+
if [[ "$DP" -gt 1 ]]; then
227+
CMD+=" --dp-size $DP"
228+
fi
229+
230+
# EP (expert parallelism) — SG 使用显式 --ep-size
231+
if [[ "$EP" -gt 0 ]]; then
232+
CMD+=" --ep-size $EP"
233+
fi
234+
211235
# 量化
212236
if [[ "$QUANTIZATION" != "none" ]]; then
213237
local SG_QUANT="$QUANTIZATION"

0 commit comments

Comments
 (0)