Files
2026-09-30 17:57:02 +08:00

19 KiB
Raw Permalink Blame History

Phase 4AN GPU 工程验证门草案

状态:未注册 DRAFT;不是执行授权,尚未运行本门。 日期:2026-09-30。

本门只验证新的轻记录执行器和连续状态接口是否保存冻结 D18 动力学。它不是 conditioning、retention 学习结论,也不产生 learned candidate。AM 是否已正式完成、其最终状态和 seal SHA,必须在本门预注册时从真实证据核验,本文不代填成功状态或哈希。

1. 固定范围与最小库存

只使用一个 AM 已准备的 100 ms 全脑输入,分别安装其原有 zero 与 static25 固定 overlay。选择规则先于本门任何新 GPU 输出:从 AM protocol/preregistered.json 的原 planned 顺序取第一条 repeat == 0 的记录,保存其完整行、序号、case 路径及 SHA;不得按活动强弱、旧 static25 效果或运行快慢挑 case。其原始 case 实际位于 AK cases/<cohort>/<name>;AM run_suite.py 没有另造一套 case。若预注册者希望改变此规则,应先修订草案并锁定,不得在看新输出后换输入。

每个 overlay 固定以下库存,所有行均使用同一原始 1000 tick 请求序列或其精确前缀/分段:

行组 固定执行内容 新执行调用数/overlay
Fresh 对照 完整 1000 tick reference r0、light r0、light r1 3
连续链 reference、light 各一条,段长 [5, 13, 1, 481, 500] 10
切点前缀 从初态独立运行 reference 至绝对 tick 数 18、19、500 3

合计 32 次短执行,11,074 个全脑 tick,即累计 1.1074 生物秒;不是 68,000 个训练 epoch。两条链的第一段均为 fresh 5 tick,其中 reference 第一段兼作第一个切点的前缀参照,不重复运行。切点为累计 tick 数 5、18、19、500,终点为 1000:覆盖短于 18 tick 的父/子段、在绝对 tick 18 的首次合法延迟到达、19-slot 环的相位,以及较晚的活动边界。不得把部分库存完成称作完整门通过。

固定参数:166,700 neurons、25,582,938 edges、dt_ms=0.1、18 tick synaptic delay、19 行 spike ring、18 行 graded-APL ring、LIF float64 SI 状态与旧 APL float32 操作。保留 14,232 mask、5845 fast-APL 出边置零规则及原 APL 全形矩阵。static25 是 AM 原 float32-mV 候选基值的固定 -0.25 * base overlay,经原 SI bridge 安装;不是声称 float64 原权重每项恰减 25%。两条 overlay 分别与自己的 AM 参照比较,不能要求 zero 与 static25 相等。

禁止:weight updates、eligibility 推进/应用、eta 改动、DAN/US 新请求、odor/seed 新抽样、动力学调参、训练、额外 tail ticks。这里的连续链只检验工程续接,不检验记忆保留。

2. 当前真实接口与输入派生

以下是底层 Python API;本门的独立 coordinator 使用它们,不改旧模块 globals:

runtime_light.run_light(case_dir, out_dir, build_root, overlay_file, overlay_manifest)
runtime_light.run_reference(case_dir, out_dir, build_root, overlay_file, overlay_manifest)
runtime_continuation.seal_checkpoint(checkpoint_dir)
runtime_continuation.load_checkpoint(checkpoint_dir, expected_sha)
runtime_continuation.run_continued(
    case_dir, out_dir, build_root, overlay_file, overlay_manifest,
    checkpoint_dir, mode='light'  # 或 'reference'
)

本门的 comparator、有限库存 coordinator、预注册/执行 receipt 已在独立 engineering 模块实现;必须在服务器通过纯合成测试、完成只读代码审查并锁定全部源码后,才能注册执行。现有 AM comparator 对 AM adapter/provenance 和完整 1000 tick 有硬 schema 约束,不应直接冒充 AN comparator 或修改其旧 globals。

在新的独占输入目录派生 spec,不改 AK/AM 原文件。完整 fresh case 保留原 name、model、APL、图、系数和请求;增加显式 max_steps=1000,仅调整新的输出预算根及已列明的非科学标签。要求 record_history=False。新旧 spec 的逐字段差异必须列入 receipt,不能用“大致相同”或整类忽略代替。

前缀保留原请求中 tick < end 的行。分段 [start, stop) 只保留该区间原请求,局部 tick 精确减 start;全局 neuron_idx 不变。每段 steps=stop-start、duration_ms=steps*0.1、max_steps=1000。将各段请求恢复绝对 tick 后拼接,必须与原请求两个 int32 数组逐位相同、顺序相同、无丢失/重复;不能重抽随机输入。NPZ 容器 SHA 可以因新文件而不同,但数组语义必须 exact,并同时保留文件 SHA。

第一段完成后立即 seal_checkpoint;外部 coordinator 把返回的实际 manifest SHA 绑定到下一段新 spec 的 parent_checkpoint_manifest_sha256,可同时写准确 global_tick_offset。此 SHA 是运行后产出的数据依赖,预注册应锁定派生规则而不是预造值。后续 run_continued 自身会产生并封存 checkpoint;父 SHA 仍须外部绑定。fresh seal 是 state.npz 的首次新增封存绑定,不能声称它追溯证明 seal 前文件未改:应在同一受控流程中立即比较、封存,保存前后 inventory,期间不允许第三方写入。

AN overlay manifest 使用现有 phase4an-overlay-v1 精确键:schema, overlay_name, overlay_sha256, mask_path, mask_sha256, base_candidate_path, base_candidate_sha256, aj_model_dir, am_overlay_path, am_overlay_sha256。复用 AM 原 overlay 数组字节及实际 SHA,仅新建 manifest;不能把 AM 原 manifest 的额外字段直接塞给 AN,也不使用 learned 模式。

3. 预注册必须完整绑定的证据

在任何本门 GPU 执行前,保存不可覆盖的 input/source inventory 与其外部 SHA。至少包括:

  • AM 最终状态、model/experiment seal、protocol/preregistered.json、prepared-hashes.json、所选原 case spec/requests,以及 gpu/zero/<name>-r0、gpu/static25/<name>-r0 的完整 output-hashes.json、comparison、adapter provenance 与全部待比较 artifact。核验完整 AM seal,而非只相信单个 pass_all。
  • 图的 nodes/edge_id/src/dst/ptr/signed_raw/weights.npy 全部文件;APL input_matrix/output_matrix/kc_globals/apl_globals.npy;AF 原 coefficients.json;AM protocol/base-candidate.float32-mV.npy、两个 overlay NPZ/manifest、原 H mask。图和 bundle 的所有 SHA 来自外部锚定的 AM prereg inputs,不是仅由 AN 本次读入后自报。
  • AN runtime_light.py、runtime_continuation.py、对应 tests、即将实现的本门 coordinator/comparator/tests,以及本草案最终注册版。固定其实际 SHA 和源 AST 审计;不得在跑到一半后修改源代码继续使用同一 prereg。
  • runtime_light.PINS 的整个依赖链:AJ GPU/timing queue、AG-r2 GPU/legacy APL worker、AE backend/C++/CUDA、AF queue helper,以及 AM_OVERLAY_SHA 对应原 overlay.py。记录 runtime_continuation.LIGHT_SHA 与实际 light 文件一致。运行前后都重验旧来源与静态输入,不依赖时间戳缓存来替代字节哈希。
  • 新输入每份 spec/requests/manifest 的 SHA,原始记录到前缀/分段的确定性映射,以及库版本、科学 Python 原 venv 入口、GPU UUID/driver/CUDA/Torch/NumPy、编译标志和 extension 来源。Python 用 -B;不可通过 resolve venv executable 改变包环境。Torch import 前完成 GPU/CUDA 环境设置;仅记录并核对原 TF32/CuBLAS/确定性配置,不为追求一致或速度偷偷改默认值。

AM 已完成封存并取得小证据下载包;该下载包不含全部大型轨迹,因此预注册仍必须在服务器完整校验 AM 两个 seal。实际 case 名与 seal SHA 依照上述确定规则写入预注册,不以本文代填。缺失 authority、旧输入变化或 AM 不完整时停止,不进入 GPU 门。

4. Exact 比较,不把摘要布尔当证明

所有浮点比较按原 dtype 的连续 little-endian raw bits,包括正负零;禁止 tolerance、round、只比均值或把压缩 NPZ 文件字节相等误作数组相等。所有状态要求 finite,事件、计数和请求库存必须完整。

Fresh light/reference ↔ 同 overlay AM

逐数组比 state.npz 六键:step/neuron_idx/counts/ref 为 int32,v/g 为 float64;全部 N 个末态和全部稀疏事件相同,events 自身排序唯一且 bincount 等于 counts。light 与 reference 都保留 requests.csv,其五字段 tick, neuron_idx, attempted, accepted, rejected 必须与 AM 原输出逐行 exact;不能只比较请求总数。reference 另比每 tick v_sha256/g_sha256/ref_sha256、全部 APL drive/state/generated inhibition/applied h float32、pending tail 和每 tick queue。来源标签、新 spec SHA、记录范围和计时等确有差异的字段须显式白名单,不能整份忽略 provenance。

AN 新 terminal-queues.npz 没有对应 AM 原文件时,只从 AM 已记录事实独立重建:1000 tick 最后 19 tick 的全局 sparse events 决定 raw spike ring;末行 apl-state.float32.npy 决定 APL state;原 apl-pending-tail.float32.npy 决定 chronological pending。比较全部数组及 next_tick=1000,不补跑 AM。

light 没有全 APL trace、逐 tick V/g/ref hash 或 queue.jsonl;不能把这些缺文件当空记录、不能称 light 已做这些逐 tick 对照。但 ReportingOnly.visit_With 只移除 queue/hash 的两个 context item,留下 request_output,也保留 writer.writerows 和请求接受判定的 GPU→CPU 拷贝。因此 light 的门包括完整 events/counts/终态、逐行五字段请求接受记录、APL state、完整两种 pending queue、有限值覆盖、总到达/接受计数及固定权重身份与 reference exact;不能把它描述为完全无逐请求记录或完全无逐 tick CPU 同步。reference 承担完整逐 tick 状态/队列观测。light r1 要与 r0 的科学数组、请求 CSV、终态队列及有限值/总量一致,计时不是 exact 字段。

Monolithic ↔ segmented

每个 overlay、每种模式分别比自己的完整 1000 tick fresh 基线,不跨 overlay 借结果。拼接所有段的 sparse events,并按 receipt offset 恢复绝对 tick;逐段 counts 用 int64 求和、验证范围后与单体 counts exact。末态 V/g/ref、最终 APL state/pending、effective weights raw SHA 必须一致;每个中间切点还与相同绝对长度的 fresh reference 前缀末态对照。切点 5 使用已记录的首段 reference,切点 18/19/500 使用预定前缀,终点使用完整基线。

spike ring 不能直接比较物理行号:各自按 terminal.next_tick % 19 转成“下一写 slot 起”的 19 行顺序后逐位比较;continued 的 next_tick 是本段局部相位,绝对时间来自 receipt。APL pending 已按下一次应用顺序保存,直接逐位比较;不得把它当未来脑活动或继续衰减的完整尾迹。短段未覆盖的 spike slots 和未消费 APL prefix 还须精确等于父 carry。

reference 的全部逐 tick 状态 hashes 和 APL 四种 trace 按全局时间拼接后与 monolithic 对照;不重复/跳过边界 tick。queue.jsonl 的 joint_sha256 编码了局部 tick,不能直接跨段相等比较:按全局 tick 对齐,精确比较 count, accepted_count, ordered_edge_sha256, accepted_mask_sha256;用完整事件、原 CSR、原 ref 规则独立重建原 source-order queue,并分别验证每份文件自己的 local-header joint hash。不能对 queue 重新按 target 排序后才声称原队列相同。light 和 reference 两条链的请求 CSV 均须按 offset 还原 tick、保持其余四字段和行序,拼接后与各自 monolithic CSV 逐行 exact;同时与预定请求库存对应,不能漏掉拒收请求。

上述门可证明 reference 完整记录和 light 已记录状态的一致;不能据此声称不可观测的 light 每 tick 内部 V/g bits 已被直接逐项比较。 若正式注册要求这一更强结论,须先单独批准新只读观测器和相应 source pin,而不是运行后扩大结论。

5. 防真空和故障门

每个 overlay 都必须从当前 reference 实际记录证明:事件非空;generated 与 applied APL h 至少有非零样本;至少一个预定内部切点同时出现非空 spike carry 和非零 APL pending。还须保存至少一个真实跨边界 synaptic witness:源 spike 在边界之前、arrival_tick=source_spike_tick+18 位于边界之后且小于 1000;其真实 canonical edge 权重非零、到达被接受,并包含在原队列哈希重建中。记录 boundary、source/target、edge_id、spike/arrival tick、接受标志及权重,不把这个工程 witness 解释为单一生物学原因。

这些仅是“确实测试过 live carry”的覆盖条件,不是调参阈值。不得强迫所有边界都有活动,也不得用空队列 exact 当作 live-carry PASS。固定 case/切点不满足时,结果为 coverage INCOMPLETE,保存全部输出;不可临时加 pulse、选另一个效果强的 case 或后移边界救场。任何扩展需新草案修订及新 prereg,明确看过既有结果。

故障检查以纯临时合成测试完成:错误外部 SHA、祖先 state 篡改、局部/绝对时钟错配、未写 ring slot 或未消费 APL prefix 改值、输入数组 dtype/NaN/Inf、重复/遗漏事件、拒收被错算接受、输出/编译目录越入任一祖先或冻结输入、已有目录重用。不要故意破坏 AM 或 GPU 正式输出来造负例。

6. 计时、压缩与磁盘预算

建议注册一个独立新实验输出根,新增 artifact/build 合计硬上限 8 GiB,启动前另保留 10 GiB 空闲余量;这是待批准的工程资源上限,不是神经科学门。所有图/APL/旧输出仅只读引用,不复制大型图或全脑 dense history。每次运行前后核实已写字节和剩余空间;不足则停止并保留 partial,不删证据续跑,也不缩短注册 tick 数。

32 次调用共享新的 extension build cache,但不共享可变神经/APL状态,只有声明的父 checkpoint 传状态。记录每次 wall time、已有 diagnostic_simulation_seconds、build/cache 时间、完整校验/压缩在 wall 中的费用及峰值 VRAM。reference r0 先行、light r0/r1 随后;明确首次编译/文件缓存顺序造成的影响,不能把一次差值称为普适性能 benchmark。可报告实测 100 ms trial 的耗时/压缩字节,不以此承诺 conditioning 大库存的总成本。

压缩格式按实际来源逐项核对:当前固定 SHA 的 AJ gpu_timing.py::run_gpu 写 state.npz 的语句是 np.savez_compressed(target, **state),不是 np.savez;AN 的 light/reference AST 派生没有替换该语句。terminal-queues.npz 则由 AN _Runtime.finish 明确使用 np.savez_compressed。记录各数组 uncompressed nbytes、这两种 NPZ 的实际压缩 bytes、全部 JSONL/CSV/NPY 及 build bytes,并在执行 receipt 核验各 NPZ entry 的实际压缩方式;不得仅凭 .npz 扩展名判断。不能只按 NPZ 小体积漏掉 reference APL 原始 .npy。reference 四种 APL trace 的主体约为每 tick 32,528 bytes;完整 1000 tick 约 32.528 MB,尚未含事件/末态/队列/头部。所有估计与最终实际 inventory 同报,不预称已节省多少磁盘;不改原输出格式或移除证据以追求预算。

7. 执行 receipt 与停止结论

新 coordinator 须 exclusive 写每行执行 receipt 和全门 inventory:注册 SHA、行 ID/overlay/mode/repeat/区间、case/requests/代码输入 SHA、进程退出码、完整 stdout/stderr、开始/结束记录、实际 completed ticks、原始 output inventory SHA、独立 comparator 结果/输入 SHA、finite coverage、weight identity、父 checkpoint 路径/外部 SHA、全局时钟、计时及磁盘字节。单独的 summary.complete/pass_all 不足:它可能先于 wrapper 后置核验失败写出;必须有完整 runtime provenance、无 error/failure marker,并重新验证 input/old integrity。

checkpoint manifest、continuation receipt 和外部执行 inventory 各自按现有排除自身的规则封存,不能自哈希循环。新比较报告和 coordinator receipt 放在被封存 checkpoint 目录之外,避免为加报告改坏父链。恢复只可跳过经完整库存/输入/独立比较重验的已完成行;存在 partial、故障 marker 或不完整祖先则停止,不覆盖、不自动科学重试。

全部库存、exact 比较、live-carry 覆盖和前后 integrity 均通过时,最高结论仅为“固定 zero/static25 的 GPU 记录模式与连续状态工程等价门通过”;learning_pass_claimed=False、candidate_generated=False、weights_updated_during_run=False。数值不一致为 FAIL;缺证据、预算中断或 live-carry 未覆盖为 INCOMPLETE;不把未执行项记 PASS。任何结果都不自动授权 conditioning,后续训练协议、独立输入/种子/控制与科学门仍需另行审定。

8. 未来可另行注册的补充,不属于当前库存

以下来自独立审查者的工程提案,不自动追加到本门、不授权执行,也不是当前 32 次调用的 PASS 条件。需要分别固定新输入、代码/比较器、父 checkpoint 来源和资源预算后重新审定;不可把本草案悄然扩为 90 次调用。

第一项是独立全图 synthetic live-carry 短矩阵。可从冻结 mask 的最低 canonical KC source 及其最低 global edge ID 的真实 MBON target 定义 K、M;从冻结 APL input matrix 的非零列按预定 canonical 规则选 Q,不按新输出选人。拟定 80 tick 的两种请求表:K 在 0/1/22/44/66;必要时 Q 在 0;另一表额外 M 在 18,以覆盖到达接收/不应期拒收、child local tick 0 请求及 tick 84 尚未到期的 spike tail。Q 的实际身份和非零列须静态核验,不能仅凭前缀猜 PN/KC;预期 live/accept/reject 条件也须由实际记录证明。zero/static25 × 两表,各比 reference monolithic 与 reference/light 分段 [5,12,1,1,18,43],提案合计 52 次短调用、960 tick(0.096 生物秒)。它测试人工工程请求,不是新增 odor conditioning;本门固定 AM case 的覆盖不足不能未经新注册就用该矩阵救成 PASS。

第二项是在上述另注册短矩阵通过并得到明确绑定的 active checkpoint 后,再注册较长的连续 idle 工程门:zero/static25 各比较 light 一段 100,000 tick 与连续 10,000 + 90,000 tick,均零新输入、零权重更新,提案合计 6 次 continuation 调用。比较全部 sparse events、分段 counts 总和、终态 V/g/ref/APL state 及规范化 queues;不记录 10 秒逐 tick CPU hash 时,不能宣称逐 tick 浮点状态已独立对照。1 秒 checkpoint 沿同一 idle 主链续到 10 秒;任何测试 probe 必须另 fork,不能把 probe 插入主轨迹,其调用数和预算另列。所有祖先 manifest 在 fork 前后不变。即使通过,也仅证明较长时钟/状态接口,不是记忆保持或 learning PASS。

源码依据:本目录 runtime_light.py 的 validate_spec/load_overlay/derive_ast/_Runtime.finish/_run;runtime_continuation.py 的 rotate_spike_ring/validate_state/load_checkpoint/run_continued/audit_carried_sequence;封存 AM prepare.py/run_suite.py/adapter.py/comparison.py;封存 AJ gpu_timing.py 与 AF oracle_full.py::queue_summary。本文只读这些来源,未运行 GPU、未注册或修改其内容。