Conversation
There was a problem hiding this comment.
AI Review
⚪ 审查未完成
部分内容未完成审查,当前结论不代表全部改动。
变更概览
本次变更主要包含:
- 新增环境开关 VLLM_HCU_ENABLE_LINEAR_GATE_PCP_SHARD 与 PCPShardedGateLinear 类,在 PCP 维度按输入维 K 分片 gated MLA 的 linear_gate 权重(要求 TP=1 且 PCP>1),并加入分片可整除、量化支持与权重元素数的校验。
- 为 HY V4 attention 的 linear_gate 增加按 PCP rank 的输入列分片:权重加载时从完整检查点权重切出本 rank 的输入列,前向计算仅取本地 K 切片并输出完整 gate 维度结果,同时按 PCP 配置记录一次性分片日志。
- 在 attention.py 中新增 PCPShardedGateLinear:启用开关时将 hy_v4 注意力的 linear_gate 替换为跨 PCP 分片实现,经 all_to_all 分发输入切片、本地部分 GEMM 后 reduce_scatter 聚合;未启用时沿用原 ColumnParallelLinear。
- 本批将 _require_hyv4_pcp_mtp_contract 中对 PP2 加精确 native MTP3 的契约校验整段注释,该函数不再对不匹配的 speculative 配置抛出 ValueError,函数主体变为无实际检查。
文件审查摘要
| 文件 | 变更 | 审查结果 |
|---|---|---|
vllm_hcu/models/hy_v4/attention.py |
修改 · +180/-8 | — |
vllm_hcu/patch/platform/core_fix/patch_vllm_config.py |
修改 · +8/-8 | — |
审查信息
- 变更统计:2 个文件,+188/-16。
- 覆盖情况:共 2 个文件,已完整审查 1 个,部分审查 1 个。
- 候选问题:1 项;证据复核过滤:1 项;发布前敏感信息保护:0 项。
- 未完成原因:候选复核:模型调用失败(1 批)
- 本服务只审查 GitHub 提供的 PR diff,未执行代码或重跑测试;结论仍需维护者核验。
AI CI 失败分析工作流:HCU PR CI 总结
与本次改动的关系相关:Run SHA 与 PR SHA 相同;报错文件正是被修改文件,且修改点恰为被注释的 ValueError raise;8 个失败用例均针对 MTP3/PCP 契约,日志中未抛 ValueError 与被注释的校验构成可核对触发路径。 建议处理
|
1. P1:PP1 放行方式扩大了配置支持面PR 描述中的意图是“不再强制 PP=2”,但当前实现直接注释了整个 guard:
这个问题已经被当前 GitHub CI 实际触发:Static gate and test selection 失败,自动分析显示共 8 个相关失败,其中包括:
建议将契约改成两个独立维度: PP1/PP2 的支持范围则由拓扑校验单独表达。测试侧应该:
2. P2:新实现降低权重常驻显存,但显著放大运行时峰值激活分片权重本身是有效的:每个 PCP rank 只保留 因此相对于旧实现,临时 gate 输出从: 变成: 此外还有以下同时存活的张量:
以仓库中的 HYV4 配置计算:
每 rank 的 local tokens | 旧 gate 输出 | 新 partial
-- | -- | --
4,096 | 64 MiB | 512 MiB
16,384 | 256 MiB | 2 GiB
32,768 | 512 MiB | 4 GiB
这不一定会在所有批次中抵消跨全部层累计节省的权重显存,但当前实现没有限制单步 token 数;在 PR 最关注的长上下文场景里,峰值显存并非单调改善。尤其 vLLM 的 KV Cache 容量取决于模型运行时峰值,额外的几 GiB 临时张量可能直接减少可分配 block 数。 可选修复方向:
这不一定会在所有批次中抵消跨全部层累计节省的权重显存,但当前实现没有限制单步 token 数;在 PR 最关注的长上下文场景里,峰值显存并非单调改善。尤其 vLLM 的 KV Cache 容量取决于模型运行时峰值,额外的几 GiB 临时张量可能直接减少可分配 block 数。
|
HYV4 PCP Linear Gate 分片支持
1. 背景
在 HYV4 模型启用 PCP 时,linear_gate 默认仍使用完整输入维度权重。对于长序列和 PCP 多卡场景,这会导致每张卡保留较大的权重和中间激活,增加显存占用,并限制可用 KV Cache 空间。
本次修改将 linear_gate 按 PCP 维度进行切分,使其与 PCP 的输入 token 分片方式匹配。
2. 主要修改
新增 PCPShardedGateLinear:
当 PCP=8 时,每个 rank 的 linear_gate 输入权重维度为原来的 1/8。
仅保留以下环境变量:
export VLLM_HCU_ENABLE_LINEAR_GATE_PCP_SHARD=1
行为说明:
已移除旧的 mode 和 overlap 相关环境变量。
更新 patch_vllm_config.py:
3. 精度结果