Files
qwen38-flash-next-dgx-spark/docs/benchmark-method.md
T

51 lines
3.6 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.
# 优化实验方法
固定模型 revision、原始权重、MTP=2、BF16 KV、262144 上下文上限和 GPU memory=0.80。
按 eager 基线 → piecewise CUDA Graph 实验 → eager+前缀缓存逐项比较,不把多项改动的收益混在一起。
候选未通过启动、基准和 smoke test 前不作为默认配置。
`scripts/benchmark.py --label <name>` 在服务容器内运行,使用挂载的 API Key;
输出只包含固定合成问题的回答和计时,不打印密钥或用户数据。
- 预热算术题;3 次固定中文说明;简单代码题。
- 2 和 4 并发的中文说明请求。
- 约 8K / 32K token 的固定伪随机档案,检索中间插入的口令,各重复一次。
- 记录真实 prompt/completion token 数、流式 TTFT、正文首字时间、完成耗时、结束原因。
- 读取 prefix_cache_queries_total / hits_total 的增量,避免仅凭响应变快判断缓存成功。
TTFT 指包含 reasoning 在内的第一个非空 token;正文首字时间另记。
近似 decode tokens/s = (completion_tokens-1)/(最后一块输出时间-第一块输出时间),
受 SSE 合并和 speculative 多 token 提交影响,不等于 GPU 内核吞吐。
并发总吞吐采用所有 completion tokens / 该组请求的墙钟时间(包含 prefill)。
`cold` 标签只代表该轮首次提交,未清空 OS 页缓存,也不保证跨任务没有共享前缀。
因此长输入第一次与重复请求的差异,应结合 prefix hit 计数解释。
温度 0 + seed 固定仍可能有非确定性;完整输出 hash 包含思考过程,hash 不同不自动意味着答案错误。
口令题必须包含期望口令且正常 stop;通用中文题只检查非空,质量需人工审查。
代码题的简单检查仅是 smoke check,不代替完整代码能力测评。
每个候选均保留独立结果。小样本只支持配置选择,不承诺长期性能、全长 262K 或全部任务质量。
当前固定 nightly 在 Qwen4Exp 上选择 runtime breakable CUDA Graph。
单纯设置 splitting_ops 不会拦截自定义 PLE 查表,首次实验在捕获阶段失败。
适配层随后在注册查表 custom op 时使用原生 eager_break_during_capture 装饰器,
并显式设置 VLLM_USE_BREAKABLE_CUDAGRAPH=1。调用者提供固定输出缓冲区,查表原地写入。
小型 GPU 测试验证捕获后 3 组不同输入的重放结果逐字节一致。
这条优化路径应称为 CUDA Graph 加速,不能直接声称启用了 torch.compile/Inductor 融合。
第二轮图捕获发现索引缓冲区在 capture-time 尚未由前置 GPU kernel 填充,
即使 CPU 查表本身是 eager break,也会读到未初始化的索引。
最终候选将原生哈希计算与 mmap 查表合并为 `vllm::spark_ple_lookup`
整个操作由 eager-break 包裹,输出保持原地写入。GPU 测试增加了哈希不在捕获中执行的断言,
并检查后续图内浮点计算在更换输入后仍正确。
图执行候选最终成功启动,但在 32K 重复请求上耗尽 256 个输出 token,未完成完整验收。
这不是已证实的图执行正确性缺陷。由于单流收益仅约 4.3%,没有继续重载该候选;
转为 eager + 前缀缓存的独立实验。长输入预算提高为 1024,并先对 eager 基线重新测试。
图执行实现和独立构建说明保存在 experiments/graph,默认适配层保留原已验证实现。
## 后续 2048 预算复测
上述 CUDA Graph 未完成验收是首次实验的状态。后续 graph+前缀缓存组合已通过三轮复测,
短回答中位速度提升约 4.4%,默认仍保留 eager。详见 [复测报告](cuda-graph-retest.md)。