【K100_AI / gfx928】开源推理引擎 Strata 量化 kernel 路径数值缺陷:backbone 最终残差流精确全零(30 秒复现 + 完整取证)
一、结论摘要
在 K100_AI(gfx928, 64GB HBM)上,开源引擎 Strata(v0.1.42, MIT, github.com/Niko1221/Strata)
经 DTK 26.04 编译后部署、性能、256K 上下文、多模态管线全部正常,但生成输出恒为 token 0:
--dump-residual 显示 backbone 最终残差流精确为零(nonfinite=0, mean|R|=0, max|R|=0),
logits 平坦 → argmax ≡ 0。属"某 kernel 静默输出全零"类缺陷,非数值漂移。
同模型文件在社区 NVIDIA/AMD 机器上输出正常。同一台机器的厂商 sglang 生产栈
(Qwen3.8-27B-INT8,卡4-7,8066 端口)长期正常运行——平台基础栈(DTK/HSA/驱动)健康,
问题集中在引擎被编译后的特定量化 kernel 路径。
二、环境与构建(零源码改动,纯构建层适配)
- 硬件:8× K100_AI(gfx928, 64GB, 400W),本次仅用单卡(HCU0, renderD128 物理隔离挂载)
- 系统:Ubuntu 22.04, kernel 6.8.0-138
- 工具链:DTK 26.04(/opt/dtk 软链 /opt/dtk-26.04;hipcc 被拒后用 /opt/dtk/llvm/bin/clang 直连;
ROCM_PATH=/opt/dtk 必须)
- 构建参数:cmake -B build -DSTRATA_HIP_GFX906=ON -DCMAKE_HIP_ARCHITECTURES=gfx928(wave64 compat 路径)
- 容器备注:DTK 树内有 5 条指向 /opt/hyhal 的绝对符号链接(hsa 头文件/运行时等),
容器内必须加挂 -v /opt/hyhal:/opt/hyhal,否则 find_path(HSA_HEADER) 失败——建议镜像侧修复。
- 引擎版本 0.1.42;模型 Qwen3.8-Flash-Next-GSQ-RCO-IQ3_S(社区已验证分片,hash 对账一致)。
- 性能参考(证明执行链路大体健康):PCIe probe 28.3 GB/s;experts 46.84 GiB 全驻 HBM;
decode 最高 37.0 tok/s(kv int8 + spec4 配置);prefill 320~511 tok/s;256K 上下文与视觉管线验证通过。
三、缺陷现象与证据(全部可 30 秒内复放)
| # | 配置 | 结果 |
| - | -------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------- |
| 1 | 默认(expert cache auto) | 48/48 个生成 token 全为 0 |
| 2 | --dump-residual | final R(4×2560):nonfinite=0, mean\|R\|=0, max\|R\|=0(residual.bin 全零) |
| 3 | --expert-cache 0(强制 CPU experts) | HSA VMFault,故障 kernel:mul_mat_q(workgroup 64×8, grid 7680×8) |
| 4 | 6 组 fast-path A/B(--no-fused-gr / --no-fast-attn / --no-fused-gdn / --no-fast-select / --no-publish-kernel) | 5 组仍全零;--no-token-graph 宿主 segfault + GPU fault |
| 5 | --dump-layers(逐层 oracle) | VMFault(staging D2H 路径中断) |
| 6 | --keep-canonical | 引擎拒绝(native pack 不支持,设计如此) |
四、定位线索(供内核工程师参考)
1. 引擎自带检查网(PCIe probe / expert slot verify 24576/24576 / host-copy bit-for-bit)全部通过,
说明自检未覆盖此路径;缺陷在检查网之外。
2. "精确为零"(非 NaN/未初始化)指向某 kernel 被静默编译成输出全零,或某激活缓冲恒零。
3. 最可疑区域:native 张量读取路径——(a) IQ4_XS token embedding 从 mapped host memory 的
device 反解;(b) Q4_K/Q5_K/Q6_K attention 投影的 GGUF 格式 device 直读;二者任一为零,
从第一步起整条残差流即为零,与观测完全吻合。
4. 交叉参照(Strata 上游 issue,均为近一周):
- #1929:Hygon DCU Z100(gfx906) 构建失败——gr_upmix_kernel 的 __bf16/WMMA 路径在 gfx906
不支持。gfx928(C86) 支持这些指令所以编译通过,但 WMMA/bf16 类 kernel 在 gfx928 上的
运行正确性未见任何验证记录;
- #1474 / #1540:同类"反解 kernel 输出零"缺陷(Q2_0 符号零),根因是 arch 门控的 workaround
不覆盖新架构,官方修复方向是去掉门控——gfx928 落在所有现有门之外。
建议排查时以 #1474 的修复模式为模板,系统性检查 iq_kernels.cu / mul_mat_q 家族中所有
__gfxXXXX__ 条件分支在 gfx928 上的取值。
五、30 秒复现(单命令,无需 server)
./build-c/strata --pack packs/iq3_s --native --ple-gguf
--expert-profile data/expert-profile.bin --spec 4 --prefill auto
--tokens-file prompt_ids.txt --max-new 48 --dump-residual
# 观察:生成 token 全 0;residual.bin 全零(对照:社区验证机型上 max|R| 应非零)
六、请求海光支持
1. 用上述复现命令在贵方 gfx928 环境验证,协助定位产生全零的 kernel(怀疑 mul_mat_q /
iq4/iq 系列反解 kernel / embedding 路径;--expert-cache 0 触发的 VMFault 同族)。
2. 若定位为编译器/指令选择问题,请给出规避编译选项;若为 kernel 语义问题,请告知修复计划。
3. 顺带给出 DTK 容器镜像 hsa 符号链接(/opt/hyhal 依赖)的修复建议。
七、附件(可打包提供)
residual.bin(全零取证)、layers.bin(中断产物)、6 组 A/B 日志、build-log、
引擎侧逐请求计时日志、复现 prompt(prompt_ids.txt)。
联系:【填你们的联系方式】