Repository navigation
[W1/W2] 分块评审、独立复现与阶段收尾 #92
Description
更新日期:2026-10-06。W1 收尾与 W2 分块验收统一在本 Issue 跟踪;使用“待验收内容”清单,代码评审、独立复现与团队签认分别记录。W3 验收暂不纳入。
目的与使用方式
把 W1 收尾与 W2 分块验收集中到一个入口,方便维护者按模块核对待验收内容。W1/W2 的源码、PR、数值证据和阶段结论仍分别记录;合并跟踪事项不等于合并代码或已经验收。
先看“当前状态”和“待验收内容”,再阅读对应分块的详细要求。模块评审者检查实现及对应测试;另由独立执行者提供完整复现结果,避免每个人重复跑全部流程。已有作者验证、CI 成功、第二人实际执行、团队签认是不同证据。
当前状态与固定版本
本次整理已核对关联 Issue 与下列 PR 状态;数值结果引用已有记录,没有重新运行模型或逐项重验历史产物。
| 工作 | 代码与已有证据 | 仍需完成 |
|---|---|---|
| W1 原技术交付 | PR #91 已合并;合并提交 3bb88e81498d6d9293aed70e25a4e5a2104465d0;已有两层 IR/QEMU、MatMul、完整 ONNX 导出与 ORT 证据 |
接口/风险决议、完整 ONNX 第二人验证、阶段签认 |
| W1 两层报告与源码身份修复 | PR #93 已合并;修复提交 9224494b80d967da345fda7ff6ad2da9f2643bbc,合并提交 faab6a81562710e105d87265dafd2dc769a67c72 |
最新修复范围的独立复验 |
| W1 完整 ONNX 报告修复 | #92 记录于 PR #96 的共享修复提交 1d33dcb3afd63c9cc8b66377dd99ddd88fb827a8;不是 #93 已合并的内容,也不是 #96 当前 HEAD 的声明 |
明确该小范围修复的交付版本、评审和复验 |
| W2 技术交付 | PR #94 待评审合并;固定 HEAD 2d07ccc42936dcfde19d552bca02a324cd33821c;作者重新执行七项验收通过,对应 CI 成功 |
四块代码评审、第二人完整七项复现、合并与阶段签认 |
历史复现范围: Mastttttter 的报告对应 df18b02f,覆盖合成图、7 项 MatMul、两层 IR 和 28 次 QEMU;未覆盖完整 Qwen3-0.6B,也不自动覆盖后来的 PR #91 修复、#93、#94 或 #96 中相关修复。本机新源码副本和作者重跑不计作第二人复现。
W2 的比较基线为 PR #91 合并提交 3bb88e8,与 #93 最初独立交付。不能因为 W2 七项通过,就认为已执行 #93 的失败注入回归或 W1 完整 ONNX 的两组 ORT 前向。
待验收内容
下表汇总仍需核对或确认的事项;“待验收”不表示相关实现尚未完成。各项以对应证据和明确结论为准,详细范围见后续分块说明。
| 编号 | 待验收内容 | 完成依据 | 当前状态 |
|---|---|---|---|
| W1-A | 接口 D1–D8、风险与 Plan B | 接口版本、错误语义决议及风险处置记录明确 | 待团队确认 |
| W1-B | 完整 ONNX 的第二人验证 | 资产哈希、结构及两组 ORT 实际执行通过,有本人记录 | 待独立验证 |
| W1-C | 报告可靠性与源码身份修复 | 最新修复回归与两层复验通过;完整 ONNX 报告修复的交付可追溯 | 待复验及交付确认 |
| W2-A | 完整 28 层前端解析与审计 | 代码评审完成,结构、节点、权重绑定及 verifier 证据核对通过 | 待评审与证据核对 |
| W2-B | 四类前端模式与基础后端 | 22 项模式测试、32 次 QEMU 及 Linux 清理证据核对通过 | 待评审与证据核对 |
| W2-C | Host 运行时与单步集成 | Tokenizer、输入/mask、采样及小模型单步集成证据核对通过 | 待评审与证据核对 |
| W2-D | 统一验收入口与 CI | 失败/跳过/缺失的拒绝逻辑正确,固定提交的实际 CI 证据齐全 | 待评审与证据核对 |
| W2 整体 | 第二人完整七项复现 | 独立环境实际执行得到 PASS/0,源码、资产及报告可追溯 | 待独立复现 |
| 阶段收尾 | W1、W2 分别形成验收结论 | 维护者确认阶段出口,记录最终交付及遗留事项处理方式 | 待阶段签认 |
W1 分块验收
W1-A:接口、风险与 Plan B
阅读入口: 接口候选 D1–D8、风险清单。链接固定在 W2 HEAD,包含后续候选扩展;团队需明确最终冻结版本,不能把 W2 辅助接口自动视为 W1 已冻结接口。
- 逐项记录 D1–D8 的同意、异议或待补证据,确认 tensor-c → Zig/LLVM → RV64 裸机路线、输入指针数组、INT64 IDs、非重入和 UART 传输边界。
- 风险清单逐项确认实际负责人、触发条件、Plan B 与处理阶段。
- 单独决定 D8/R21:未使用的除零在无优化时可能报错,被 DCE 删除后可能成功。明确是否保留错误,或接受纯结果语义,并据此安排 DCE/LICM/常量折叠规则与回归。
- 完整权重装载和内存布局另行设计;签署小模型接口不等于批准完整模型部署方案。
完成依据: 有版本、确认人、日期和决议链接。D8 暂缓时明确当前限制及后续任务,不宣称各优化等级的错误行为已经等价。
W1-B:完整 ONNX 第二人验证
阅读入口: 固定模型 Release、W1 复现指南、probes/w1_qwen3_export/run.py 及其 manifest.json。执行者先记录实际源码 SHA 和是否包含 W1-C 的完整 ONNX 报告修复。
- 非原执行者验证真实 ONNX 与三个外置权重分片的哈希,排除 LFS 指针或缺失文件。
- 实际执行 ONNX 检查和约定的两组 ORT 输入;输出均为 FP32、有限值、形状
[1,256,151936]。 - 保存资产身份、依赖、命令、退出码、输入及输出指纹、报告,并由执行者确认。
完成依据: 本人实际执行记录。该项验证已有导出,不自动要求重新导出;也不证明重新完成了 PyTorch 全张量对照。已有 padding 位置差异继续保留,不能用 ORT 可执行或有效位置一致替代全位置一致。
W1-C:报告可靠性与源码身份修复
阅读入口: #93 修复说明与命令;probes/w2_qwen3_small/{run,riscv}.py 及 tests/test_qwen3_small_{gate,riscv_gate}.py、tests/test_onnx_{qwen_numeric_ops,shape_ops}.py。完整 ONNX 报告修复另看 #96 中 probes/w1_qwen3_export/run.py、tests/test_w1_qwen3_export.py 的相关差异。
- 核对 fix(w1): 修复两层探测报告与源码归属,兼容固定 ORT 验证 #93 已合并的行为:Markdown/HTML 可读报告先保存、成功 JSON 最后原子发布;失败不残留成功报告,保留主错误;源码副本不误认父仓库;QEMU 当前环境与导出环境分开记录。
- 非原执行者复验故障注入及受影响的真实两层 IR/QEMU;三个固定 ORT 不支持的参考路径仍实际执行 parser/IR,使用官方 ReferenceEvaluator 的范围明确。
- 跟踪完整 ONNX 报告写入修复:Markdown 失败、JSON 发布失败及复用目录的旧 PASS 不能被误判成功。明确最终交付版本、相关测试与 CI,不能归入 fix(w1): 修复两层探测报告与源码归属,兼容固定 ORT 验证 #93 的已合并证据。
完成依据: 修复已有明确交付,相关回归及独立复验有记录。#96 中这一 W1 修复可由维护者决定沿原 PR 交付或单独回补;本 Issue 跟踪该修复的交付,不要求先验收整个 W3。报告异常问题不据此推翻已有完整保存并核对的数值结果。
W2 分块验收
以下路径相对 W2 固定源码根目录;每块将实现、对应测试和 README 一起审阅。当前 45 个修改文件按四块分工,前三块可以并行评审,统一验收最后汇总。
W2-A:完整前端解析与审计
入口: probes/w2_qwen3_parse/{validation,audit,run}.py;测试 tests/test_qwen3_full_{structure,audit,parse}.py。
重点: 真实数据流的 28 层结构、缺节点/错误残差、同形状权重替换、绑定审计是否能独立发现 parser 错误;资产、verifier、失败上下文与报告发布是否可靠。
- 代码与相关测试通过评审;
full-parse实际完成固定完整模型解析,逐节点/权重绑定审计与 verifier 通过。
边界: 完整解析不是完整预训练模型 IR 数值或 QEMU 前向通过。
W2-B:四模式与基础后端
入口: probes/w2_backend_ops/{cases,run}.py、scratchv/backend/tensor_c_codegen.py、scratchv/runtime/riscv_tensor.py;测试 tests/test_qwen3_frontend_patterns.py、tests/test_w2_backend_ops_gate.py、tests/test_tensor_c_codegen.py、tests/test_riscv_tensor_runtime.py。
重点: RMSNorm/RoPE/SwiGLU/GQA 公式与反例、优化前后计算、标量常量绑定不能被覆盖、主错误保留,以及取消时自有进程清理。
-
frontend22 项与 16 小图 ×none/all共 32 次实际 QEMU 通过;QEMU 对 ORT 和独立 NumPy 两种参考均满足max_abs < 1e-5、rtol=0。 - Linux 取消和嵌套会话清理有实际执行证据;mock、Windows 跳过项均不代替 Linux 实跑。
前端模式测试直接导入 backend probe,保留同组评审。该组只覆盖基础小图,不证明完整模型目标端容量或性能。
W2-C:Host 运行时与单步集成
入口: scratchv/runtime/{qwen3_tokenizer,llm_inputs}.py、probes/w2_runtime/、probes/w2_runtime_model/、可选依赖声明;测试 tests/test_{qwen3_tokenizer,llm_inputs}.py、tests/test_w2_runtime_{gate,metadata,reporting,model}.py。
重点: 官方配置、token ID 与模型词表宽度、特殊 token/规范化、空/超长输入、mask、最后有效位置、greedy 平局与停止原因。单步模型依赖运行时探测,留在本组。
- 官方 20 组语料/480 编解码对照、5 个输入与采样场景通过;原始 ID 不裁剪,完整词表两层小配置的 2 文本/8 次调用通过单步集成,数值满足既定
<1e-5门槛。
边界: Tokenizer 按官方规范化语义验收,不要求任意原始文本字节级往返。单步集成为随机小模型,不是完整预训练模型、完整词表 QEMU 或多步生成。
W2-D:统一验收与 CI
入口: scripts/{run_w2_acceptance,check_w2_ci_results}.py、.github/workflows/llm-deploy.yml 及交付文档;测试 tests/test_w2_acceptance.py、tests/test_w2_ci_results.py。
重点: 零退出但缺报告、NaN、skip、旧目录、源码中途变化都不能误判成功;取消须清理自有进程并保存失败/未执行项;CI 汇总拒绝失败、取消、跳过和缺失。
- 相关回归及固定 SHA 的实际 CI 证据核对完成;完整解析确实进入必跑任务,七项总结果来源一致。
- 文档区分历史证据、最新修复、平台跳过及作者/他人执行;W1-C 的修复与 W2 的进程清理各自可追溯。
本组最终验证依赖 W2-A/B/C;取消回归还依赖 W2-B 的 SIGTERM 清理协议。分块检查可使用 --gates,子集成功为 PARTIAL/2;只有七项实际通过才是 PASS/0,失败为 FAIL/1,取消另记录实际非零退出码。
独立执行与证据要求
W1-B、W1-C、W2 整体可以由同一位符合独立性要求的执行者承担,也可分工;每项分别给结论。完整七项 W2 结果不能省略 W1 的完整 ONNX ORT 验证或报告修复回归。
| 执行项 | 入口与必须保留的范围 |
|---|---|
| W1 完整 ONNX | probes/w1_qwen3_export/run.py --mode verify;固定资产哈希、结构、两组 ORT、输出 shape/dtype/有限性 |
| W1 修复复验 | 按 #93 修复说明执行对应测试、重新导出两层并跑 IR/QEMU;完整 ONNX 报告修复按最终选定版本补相关回归 |
| W2 完整七项 | scripts/run_w2_acceptance.py;frontend/backend/runtime/runtime-model/small-ir/small-qemu/full-parse 均实际通过 |
W2 原计划技术出口为小模型 IR max_abs < 1e-5、rtol=0,完整 28 层解析无缺失,固定提交 CI 成功。两层复现须覆盖 small-ir 的 7 输入、29 检查点及不变性/优化对照,small-qemu 的普通/诊断图 × none/all 共 28 次实际执行。第二人复现是本次交接要求,不能把缺复现记录误写成缺算子实现。
环境与资产步骤见 W1 指南、W2 指南。使用固定 Python 3.12 CPU 依赖、Zig 0.14.1 与 QEMU RV64。各入口在选定源码根目录执行,先记录完整 SHA 和工作区改动。无 .git 的源码包须将 Git 身份标为未知,附与固定 SHA 的文件清单核对,不能继承父仓库身份。模型目录包含 ONNX 与真实权重分片;Tokenizer 使用固定官方资产。每次使用全新输出目录。
W2 完整入口示例(路径全部替换为执行者环境):
Set-Location '<W2 固定 SHA 的源码目录>'
git rev-parse HEAD
git status --short
$w2Python = '<固定环境的 python.exe>'
& $w2Python -B -X utf8 scripts/run_w2_acceptance.py `
--python $w2Python --output-dir '<不存在的新输出目录>' `
--tokenizer-dir '<官方 Tokenizer 目录>' --tokenizer-mode verify `
--model-dir '<完整 ONNX 与分片目录>' --model-mode verify `
--cc '<Zig 路径>' --qemu '<QEMU RV64 路径>'
$LASTEXITCODE保存总报告、子报告、日志、实际命令/退出码、源码与资产指纹、环境、误差、仿真用时及跳过原因。按 W2 指南预留完整解析与模型文件的内存/磁盘空间;改变超时或资源预算需记录,不改变模型、覆盖或精度门槛。首次失败也保留,附原因、修复版本与复验结果。只需分享团队可访问的证据位置,不把大型模型/数组重复提交到源码库。
已有证据入口: W1 历史复现见 报告,#93 作者验证与 CI 见 PR;W2 当前提交的 CI、LLM Deploy、Topic06 成功记录,以及作者七项 7/7 重验见 PR #94。这些证据可供审阅,但不预填本表的独立复现与团队签认。
统一回复模板
验收编号与记录类型:W1-A/B/C、W2-A/B/C/D、W2整体;代码评审/执行/签认
人员与日期:
完整 SHA、工作区改动、模型/资产身份:
已审阅文件与测试范围:
执行环境、完整命令、退出码、通过/失败/跳过及原因:
报告、日志、原始证据或 CI 链接:
发现的问题、影响块、处置与复验:
结论:待补证据/需修复/本块通过/本项独立复现通过
未覆盖范围、团队决议或延期安排:
阶段出口与关闭条件
- W1-A 接口/风险有明确决议;未决项有适用限制、负责人和后续任务。
- W1-B 完整 ONNX 独立验证、W1-C 修复交付与独立复验有结论;fix(w1): 修复两层探测报告与源码归属,兼容固定 ORT 验证 #93 已合并事实保留,不重复列为待开发。
- W2 四块代码评审与对应执行证据核对完成,阻断问题已处理;第二人完整七项结果为 PASS/0。
- PR feat(w2): 完整 Qwen3 前端解析、基础后端与运行时验收 #94 与必要共享修复完成评审并合并,或由维护者明确批准替代交付;记录最终提交及 CI。合并改变执行源码时复验受影响范围,不直接继承旧分支结果。
- 维护者分别记录 W1、W2 的验收结论,更新文档及证据链接。CI 不代签接口,跟踪事项合并不代替阶段验收。
- 若允许延期或转交,记录负责人、期限、验收条件和链接;转交后的阶段项仍标未完成,不写成全部验收通过。
本 Issue 可以在事项完成或被维护者明确交接后关闭,但必须注明哪种情况。完整模型 IR 数值、完整 RISC-V/QEMU 前向及生成循环属于其他阶段;本次不纳入 W3 验收或 Nightly 待办。
Activity
[-]W1 收尾与 W2 交接跟踪[/-][+]W1/W2 验收收尾与团队复现跟踪[/+][-]W1/W2 验收收尾与团队复现跟踪[/-][+][W1/W2] 分块评审、独立复现与阶段收尾[/+]