# Qwen3-235B-A22B · Kunlun P800 · SGLang TP=8 在 p800.2(8× 昆仑芯 P800 XPU,每卡 96GB)上用 SGLang 以 **TP=8** 部署 `Qwen3-235B-A22B`,并用 `sglang.bench_serving` 跑 **输入 2048 / 输出 2048 / 并发 16** 的吞吐基准,输出吞吐、TTFT、TPOT、ITL、E2E 等指标。 ## 关键设计 本实验借鉴仓库里已验证可用的 **qwen3-8b TP=1** 启动命令(同一昆仑 P800 sglang 镜像), 仅做以下适配: | 项 | qwen3-8b (TP=1) | 本实验 (TP=8) | |---|---|---| | 容器 XPU | 仅 `/dev/xpu0` | `/dev/xpu0..7`(新容器) | | `--tp-size` | 1 | 8 | | `XPU_VISIBLE_DEVICES` | 0 | 0,1,2,3,4,5,6,7 | | `--model-path` | Qwen3-8B | Qwen3-235B-A22B | | `--context-length` | 4096 | 8192(8b 用 4096 在 2k+2k 下截断了 2 条输出) | | 其余启动参数 | — | 完全一致 | 不变的 Qwen3 专用配置(与 DSV4 实验不同): - `--attention-backend kunlun`(非 DSV4 的 `nsa`) - XPU 环境变量:`XSGL_INTERTYPE_BFP16=1`、`XSGL_FAST_SWIGLU=1`、 `XMLIR_FORCE_USE_XPU_GRAPH=1`、`XSGL_FUSE_SPLIT_NORM_ROPE_NEOX=1` - `--dtype float16`、`--disable-radix-cache`、`--chunked-prefill-size -1`、 `--page-size 64`、`--mem-fraction-static 0.9`、`--cuda-graph-bs 1..16` - 无 DSV4 专用变量(`IS_DSV4`/`SGLANG_DSV4_MODE` 等)、无 reasoning/tool-call parser 显存预算:235B FP16 权重 ~470GB,TP=8 每卡 ~59GB;每卡 96GB,0.9 静态占比留 ~27GB/卡 给 KV+激活+cuda graph,2k+2k 上下文 KV 极小,充裕。 > 注意:框架 `scripts/common/server_docker.sh` 里的 `docker_server_start` 是 > DeepSeek-V4 硬编码的(NSA attention、`IS_DSV4=1`、deepseekv4 parser), > **不能**用于 Qwen3,因此本实验自带独立的 `start_server.sh`。 ## 文件 - `config.env` — 实验参数唯一来源 - `start_server.sh` — 起 8-XPU 容器 + 容器内启动 sglang + 健康检查 - `run_bench.sh` — 编排入口(写元数据 → 起服务 → warmup+bench → 解析) - `parse_results.py` — 解析 `sglang.bench_serving` 输出(复用自 dsv4_p800_sglang) - `results//` — 自动生成:`raw_outputs/*.jsonl`、`logs/`、`results.json`、`report.md` ## 用法 ```bash cd /data1/yy/sskj/experiments/p800/qwen3_235b_p800_sglang_tp8 # 一键跑(起服务 + 基准 + 解析) bash run_bench.sh # 或分步:先起服务(便于排查),再复用服务跑基准 bash start_server.sh SKIP_MANAGE_SERVER=1 bash run_bench.sh ``` 服务启动加载 235B 权重(~470GB)+ 捕获 16 个 batch size 的 cuda graph 较慢, 健康检查超时设为 1200s。结果在 `results//report.md`。 ## 输出指标(report.md) 每个 scenario 给出:Success/Failed、Req/s、Input/Output/Total tok/s、 TTFT(mean/p50/p90/p99)、TPOT(mean/p50/p90/p99)、E2E(p99)等。