Repository navigation
feat(w4): 完整 Qwen3 外置权重、多 hart 执行与验证优化 - #104
Conversation
Add bounded external weight bundles, full-model memory layout, Tensor-C lowering, segmented bare-metal QEMU loading and strict retained-array verification. Include Linux QMP shutdown and virtualenv launch fixes, regression coverage, CI entry points and public reproduction contracts. Linux full_seed_0 evidence: all 38,895,616 logits compared, max_abs 8.58306884765625e-5 < 1e-3. W4 regression selection: 1017 passed, one platform-specific skip. Preserve the actual execution SHAs and pending remote validation and independent team acceptance.
🤖 AI Code Review
📁
|
…ndencies Sync upstream/main at 8f72650. W3 was squash-merged with the same content already present in W4; retain every existing W4 code and workflow change. Update the W4 dependency baseline without changing historical validation evidence.
Preserve W3 virtualenv and Linux reproduction fixes while adding optional 1/2/4/auto harts, doorbell/WFI waits, Softmax row execution and finite checks, MatMul tile and column-panel options, and bounded UART/QMP event handling. Keep single-hart and original-layout defaults. Reduce redundant CI coverage without dropping real RV64 gates. Preserve the completed numeric comparisons; validate the final high-FD wait and installation-documentation fixes locally.
Integrate upstream ScratchV-Compiler#114 (5171b59) for hosted Ubuntu test/benchmark runners and complete-history checkout. Preserve W4 small-QEMU acceptance, explicit full-model gates, and delegated generic coverage. Validation: 172 workflow/routing checks passed; no model execution.
完整 Qwen3 的权重和激活超出小图内嵌常量路径。本 PR 提供外置权重与完整 RV64/QEMU 前向链,并增加可选多 hart 和算子优化;默认运行方式保持单 hart。
范围:FP32、batch=1、L=256、28 层、无 KV cache;Ubuntu 24.04 / Python 3.12,目标 RV64GC/LP64D、QEMU virt 裸机。W3 修复与 W4 优化在同一 PR 交付,已标记为 Ready for review,尚不代表团队验收或真实硬件性能。
基线与改动
ed901438(整合主干40ba477),再通过6a9c714d同步 ci: 测试与 benchmark 迁回 GitHub 托管 runner #114 /5171b59的 GitHub 托管 runner 迁移;保留本轮 CI 去重及必要执行门槛。python -m pip install -v -e ".[llm-deploy]"。软仿优化
围绕 QEMU 软仿的计算并行、数据布局、运行器开销和验证链路进行优化,具体包括:
--harts 1/2/4/auto,最多 4;门铃通知与 WFI 等待;MatMul 和独立 Softmax 行并行、同形状回调复用及写回融合有限性检查,保留计算顺序、错误传播和工作区复用。--matmul-tile 1x4/2x4/1x8;--matmul-rhs-layout column-panel用于符合条件的常量 RHS/转置链;共享或动态 RHS 保留原布局。两缓冲two-buffer-pad-4k仍是 QEMU 实验选项。RVV 负收益候选未纳入正式实现。nodelay,保留 stop 后帧复核、转储、quit 和异常清理;高 FD 等待改用poll(),失效 FD/等待错误明确传播。默认值不变:
1 hart / sequential / 1x4 / original / padding none。auto 只在启动/构建时按进程可用 CPU 选择 1/2/4,不是动态调度;已构建 ELF 的 hart 数不会静默改变。对应报告已随本 PR 归档,可直接在 GitHub 阅读:
同配置完整模型前向 1384.65 s → 410.53 s(3.373×),CPU 总时间增加 5.46%,38,895,616 个输出逐位一致;完整指标见下文。这是已有候选的单次配对结果,不是当前 PR HEAD 的完整重测,不能与小图收益连乘。
本地完整诊断 HTML、大 JSON、原始数组和采样仍保存在被 Git 忽略的 output/;公开报告列出相对来源索引,不发布个人机器路径。
AI 审查修复与全部文件复核(2026-10-22)
本轮提交
069d4c86edbafabc4ccef83ebe2bc24fd0545304修复审查工具,未改变模型代码、默认 hart 或 WSL 配置:changed_files、唯一文件名和 head,避免仅取首 30 个。pull_request_target的可信 base checkout,不执行 PR head 代码。workflow_dispatch增加pr_number输入。本对话此前按 CI/文档、代码生成、运行时、W3、W4、新审查工具六批,对
069d4c8的 89/89 文件完成差异与上下文审查(原有 86 + 新增 3),没有漏审文件;这与 SenseNova 远端结果分开记录,也不构成团队批准。此前确认的 P2 已在
b77e45f修复: Host C 受监督编译器与 worker 共享外层拥有的进程组;外层超时、取消或 worker 退出时统一清理,包含 worker 被暂停及编译器孙进程场景。独立编译仍使用隔离组。内层异常时管道排空有界,保留原始超时/错误和部分日志。新增真实进程回归只用 Python 替身,未执行模型或真实 C 编译;PR 当前已标记为 Ready for review。另修正 1 项 P3:
W4/evolution.md对已修复绑定优先级的陈旧说明。旧 AI 评论中关于单测丢失、缺失 W4 gate、未固定资产、W3 必需 flags、padding 采样等指摘已用完整上下文核对,未形成这些问题的有效证据,不放宽数值阈值。远端验证限制:
pull_request_target本次仍执行上游main的旧工作流,因此新提交的旧 AI check 即使绿色,也不是新版分页/分批实现的验收。当前账号无上游 dispatch 权限、fork 无该审查密钥;需修复进入可信上游后,由维护者完成新版真实 SenseNova 集成验证。没有把这项限制计成已完成。验证摘要
以下为分阶段记录,存在重叠,不累加成唯一测试总数:
4 项跳过为 3 个需单独导出制品的优化检查及 1 个 Linux 不适用的 Windows junction 检查。首次集成 pytest 通过后,旧参数化名称使后置门槛报错;修正门槛后,对同一保留 JUnit 的 13 个必跑节点重新检查,均实际执行且无 skip/failure/error。失败及修正历史保留;这不是另一次模型执行。
本次发布没有重跑完整模型,也没有修改 WSL 配置。
已有完整模型对照(2026-10-22)
固定
full_seed_0,两边均使用blocked_fma / 2x4 / column-panel / padding none,单/四 hart 各一次;相同模型、输入与数值配置,38,895,616 个 FP32 输出逐位一致。两侧对 ORT 最大绝对误差均8.58306884765625e-05 < 0.001(rtol=0),数值检查、12 项 FMA 检查和保留数组审计通过。同配置并行加速 3.373×、耗时减少 70.35%,CPU 总时间增加 5.46%。前向从 QEMU 启动计到 UART 完成帧确认;CPU 含整个 QEMU 生命周期。RSS 两边均有少量采样缺失,内存只能称基本持平。
这些完整运行早于最终宿主高 FD 修复,不是最终推送 HEAD 的重新执行或重测。原始报告与数组保留在本地;不以旧异常计时或历史 Actions 记录计算本次倍数。不同形状的小图微内核/面板收益不能与 3.373×直接相乘。单次配对也不代表所有模型、真实 RISC-V 或 NPU。
远端 CI 记录
本次报告发布提交
234e1147e173f5f0721608842fc158dac8558fa9仅变更 5 个文档文件;3 篇 Markdown、1 个 Bash 块语法、9 个本地链接、JSON 数值一致性及路径脱敏检查通过。下方为此前代码提交的 CI 记录,不作为本次文档 HEAD 的新 CI 结论。本次未手动触发或重跑 CI/AI 审查,未重跑完整模型,未修改 CI 或 WSL 配置。此前代码提交
b77e45fc2a508dded0e0efd182187cd924fbea9b的 CI #39734573941 全部通过,包括最终 CI acceptance。本地相关验证 36 passed / 0 skipped;远端 W4 小图及通用检查通过,4 个完整模型相关任务全部按预期跳过。未重跑完整模型,未修改 CI 或 WSL 配置。新增 Host 清理 9 项和运行器边界 5 项在通用 test 作业逐项实际通过,无跳过。通用 5521 passed / 79 skipped,另 7 项 simulator 通过;W4 显式集合 1528 passed / 4 skipped。新 Host 测试文件由通用作业覆盖。
此前 Host C 修复发布时未主动触发 AI 审查;仓库在该次推送后自动触发旧 AI 工作流,取消请求当时被上游权限限制拒绝(HTTP 403)。这是该次发布的历史记录;本次不追加 AI 审查。新版 AI 真实集成仍待可信上游部署。
边界与待验收事项
复现接口:运行合同、Linux 复现、验证与优化选项。