qwen38-mtp-bench
收藏资源简介:
# Qwen3.8-27B W8A8 MTP 推测解码加速实验(昇腾 910C) > 复现包:部署 + 受控实验 + LiveCodeBench 真实负载 + 并发扫描 + pass@1 + 确定性分析 ## 摘要 本文基于双卡昇腾 910C(TP=2)+ vLLM-Ascend 0.23.0 部署 Qwen3.8-27B W8A8 量化模型,围绕其原生 MTP(Multi-Token Prediction)推测解码能力开展系统实验。在受控负载(2048→1024,单并发)下,MTP4 将输出吞吐提升 **2.71×**,TPOT 从 109 ms 降至 40 ms;在真实代码生成负载(LiveCodeBench v1~v6 全量合并去重后按难度抽取 100 题,16 并发)下,端到端延迟中位加速 **2.49×**;并发 4/8/16 扫描显示加速比稳定在 2.3~2.9×。pass@1 正确性验证无系统性差异(baseline 46.0% vs mtp4 44.0%)。本数据集收录全部可复现材料:复现脚本、LiveCodeBench 数据集、基准测试结果、分析图表与文章全文。 ## 目录结构 ``` qwen38-mtp-bench/ ├── article/ │ ├── article_qwen38_mtp.md # 最终技术文章(md) │ ├── experiment_log.md # 实验日志(部署/各实验关键过程与结果) │ ├── article_plan.md # 文章大纲与实验计划 │ └── MTP.png # MTP 原理示意图(图源见文章 1.3 节) ├── scripts/ │ ├── run_mtp_bench.sh # 受控实验(baseline + mtp1~4,2048→1024,并发 1) │ ├── run_lcb_bench.sh # 真实负载(LCB 100 题,baseline vs mtp4,并发 16) │ ├── run_conc_sweep.sh # 并发扫描(4/8/16 × baseline/mtp4) │ ├── run_lcb_pass1.sh # pass@1 专用重跑(max output 12288) │ ├── prepare_lcb_full.py # 下载 v1~v6 parquet 合并去重 → lcb_full.jsonl │ ├── prepare_lcb.py # seed=42 按难度抽 100 题 → lcb_100.jsonl │ ├── analyze_lcb.py # 分析:逐请求表 + 四张图 │ ├── pass1_eval.py # pass@1 评估(剥离 think → 编译运行测试用例) │ ├── det_conc.py # 并发确定性测试客户端 │ ├── serial_conc1.py # 串行(并发1)一致性测试客户端 │ ├── benchmark_qwen38.py # 单请求延迟基准脚本 │ └── dl_all.sh # 下载 LiveCodeBench v1~v6 parquet 的辅助脚本 ├── data/ │ ├── lcb_100.jsonl # 100 题(easy 30 / medium 50 / hard 20,seed=42) │ └── lcb_full.jsonl # v1~v6 合并去重 1055 题 └── results/ ├── bench_results/ # 受控实验:baseline + mtp1~4 JSON ├── lcb_results/ # 真实负载:baseline.json + mtp4.json(含逐请求明细) ├── lcb_analysis/ # fig1~fig4 + per_request_table.csv + summary ├── lcb_conc_results/ # 并发扫描 6 组 JSON + summary.csv └── lcb_pass1_results/ # baseline/mtp4 pass@1 逐题结果 ``` ## 核心结论 | 实验 | 结果 | |---|---| | 受控(2048→1024,单并发) | MTP4 = **2.71×**,TPOT 109→40 ms | | LCB 100 题(16 并发) | Median **2.49×**(E2E 295 s → 120.5 s) | | 并发扫描 4/8/16 | **2.29~2.86×**,并发 8 最优 | | pass@1 | baseline 46.0% vs mtp4 44.0%(无系统性差异) | ## 快速复现 ```bash # 1) 环境:hidevlab 昇腾云,镜像 quay.io/ascend/vllm-ascend:qwen3.8-a3(910C A3 机型) # 2) 模型:使用平台预置的 /workspace/Qwen3.8-27B-w8a8(W8A8 量化,非本文工作) # 3) 受控实验(约 1.5 小时) ./scripts/run_mtp_bench.sh # 4) 真实负载(baseline + mtp4,每轮约 15~30 分钟 @16 并发) ./scripts/run_lcb_bench.sh python3 scripts/analyze_lcb.py # 出图到 lcb_analysis/ # 5) pass@1 评估 ./scripts/run_lcb_pass1.sh # max output 12288 重跑两轮 python3 scripts/pass1_eval.py results/lcb_pass1_results/baseline.json python3 scripts/pass1_eval.py results/lcb_pass1_results/mtp4.json ``` > 注意:脚本中模型路径默认为 `/workspace/Qwen3.8-27B-w8a8`,如环境不同请按需修改;`prepare_lcb_*.py` 依赖从 ModelScope `evalscope/livecodebench_code_generation_lite_parquet` 下载的 v1~v6 parquet(结果集 `data/` 已直接提供,可跳过)。 ## 引用 本数据集对应的文章与实验日志见 `article/`。如引用请注明出处与图源(MTP 原理图源于知乎《Qwen3-MTP 原理详解》,链接见文章 1.3 节)。 License: Apache-2.0



