Skip to content

[W1/W2] 分块评审、独立复现与阶段收尾 #92

Open

Description

@yuki-328

更新日期: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 的相关差异。

完成依据: 修复已有明确交付,相关回归及独立复验有记录。#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 公式与反例、优化前后计算、标量常量绑定不能被覆盖、主错误保留,以及取消时自有进程清理。

  • frontend 22 项与 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

  1. changed the title [-]W1 收尾与 W2 交接跟踪[/-] [+]W1/W2 验收收尾与团队复现跟踪[/+] on Oct 3, 2026
  2. changed the title [-]W1/W2 验收收尾与团队复现跟踪[/-] [+][W1/W2] 分块评审、独立复现与阶段收尾[/+] on Oct 6, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions