Skip to content

fix(hcu): avoid full-vocabulary top-k during sampler profiling - #41

Draft
alexanderbin123 wants to merge 3 commits into
v0.25.1from
split/hcu-dummy-sampler-v0251
Draft

alexanderbin123 wants to merge 3 commits into
v0.25.1from
split/hcu-dummy-sampler-v0251

Conversation

@alexanderbin123

Copy link
Copy Markdown
Contributor

Summary

该 MR 从 #38 拆出,仅讨论 HCU dummy sampler 的大词表启动 profile 策略,不包含 SlimQuant W4A8、AITER、DeepEP 或 DeepGEMM 修改。

背景

官方及 HYGON v0.25.1_dummy_sampler_run() 中使用 top_k=vocab_size-1top_p=0.9。在 DeepSeek-V4 大词表、max_num_seqs=8、HCU 自定义 Top-K/Top-P sampler 场景中,该 profile 调用曾出现长时间卡顿/高开销。

当前草案:

  • 第一次 dummy sampler 调用使用 greedy fast path 和 top_k=0,避开首次 full-vocabulary Top-K。
  • 第二次使用带 generator 的 random metadata 和 top_k=vocab_size,进入 native random sampler;vocab_size 是 vLLM native sampler 表示禁用 Top-K 的内部值。
  • 覆盖 raw_logprobsprocessed_logitsprocessed_logprobs 三种模式。
  • 不修改真实请求的 sampler metadata、Top-K/Top-P 归一化或采样概率分布。

Draft 原因 / 已知风险

该实现尚不具备合入条件:

  1. 第一次调用走 greedy,第二次带 generator 强制走 native,因此 HCU LightOp Top-K/Top-P 路径可能没有被 profile/warmup;真实首请求可能产生额外编译、workspace 或 OOM 风险。
  2. dummy_metadata 改成 all-greedy 后,DSpark rejection sampler 会复用它,可能只预热 greedy specialization,而没有覆盖原来的 mixed/random specialization。
  3. processed logprobs 模式无条件增加第二次 native random 调用,与官方跳过该调用的显存策略不一致,可能提高启动峰值。
  4. 第二次仍保留 top_p=0.9,native 路径仍可能进行全词表排序;本修改只规避首个 HCU custom Top-K 的异常开销,不等于消除所有全词表 sampler 开销。

合入前需要重新设计并验证:分别覆盖 LightOp custom、native seeded random、DSpark mixed 与 all-greedy,同时给出 DeepSeek-V4 实机启动、峰值显存及首请求证据。

Verification

  • Sampler 专项:7 passed, 14 warnings in 23.12s
  • 干净 worktree 完整 runtime:857 passed, 1 failed, 14 warnings in 219.87s
  • 唯一失败为仓库测试读取未纳入 Git 的生成文件 vllm_hcu/csrc/hcu_cache_kernel.hip 时触发 FileNotFoundError,与本 MR 的 sampler diff 无关;该文件被仓库 *.hip ignore 规则排除。
  • 作者与提交者:zhangzbb <1414695739@qq.com>

Scope

修改文件仅有:

  • vllm_hcu/v1/hcu_model_runner.py
  • tests/runtime_patch/test_hcu_sampler.py

@alexanderbin123 alexanderbin123 added the ready-hcu Authorize this PR to run HCU hardware tests label Sep 2, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ready-hcu Authorize this PR to run HCU hardware tests

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant