5
数学库
提问帖
新人贴
【K100_AI / gfx928】开源推理引擎 Strata 量化 kernel 路径数值缺陷:backbone 最终残差流精确全零(30 秒复现 + 完整取证)
2026-10-12 15:37:58
69
【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)。 联系:【填你们的联系方式】
全部评论(0)
只看楼主
暂无数据
--
楼主
Level.1
0 帖子
楼主热帖
暂无数据