Source: docs/experiments/EXP-3D-20260927-training-preparation-v1/README.md · Plain text

三维训练前准备

已完成仓库复用审计、官方校准资源下载、共同 anchor 训练损失、精确相机内参转换、配置/小 cohort 草案和 CUDA 资源检查。TRAINING_READY=false:尚未开始正式训练,未读取真实 query 图像/depth,未下载场景媒体。输出保存在 outputs/EXP-3D-20260927-training-preparation-v1/;旧实验文件未修改。

可以直接复用的内容

仓库组件 用途与限制
src/mcss/dynamic/carrier.py 当前三维 carrier、真实 fuse/complete 写入矩阵,保持架构不变
src/mcss/dynamic/write_rule.py 现有直接写入规则,无需重写
src/mcss/measurements.py 参数为零的固定 RGB/depth renderer
src/mcss/data/download.py 官方 Hypersim ZIP 的 HTTP Range 局部下载;必须提供 scene/camera/frame 白名单;下载器自身不查 split
configs/hypersim_er_partitions.csv 现有 train/val/diagnostic/final 分区名单,不能当作物理地点身份证明
scripts/compile_dynamic_training_episodes.py 数据检查、online/query 分离、窗口编译;函数 API 支持小规模 expected_counts,CLI 默认仍为旧 365/46
src/mcss/data/pilot_provenance.py 训练/开发身份、路径、manifest 哈希核验;不读媒体,必须传新 prepared_root
src/mcss/training/experiment.py 两阶段优化、日志、断点、RNG/optimizer 恢复;旧 Phase A 使用不同 anchor,不能直接作为新协议启动入口
src/mcss/dynamic/checkpoint.py 严格保存/加载 mcss.dynamic.v1,同时保存 carrier 与 writer slow weights
src/mcss/mechanism_pilot/ 已有封存、四动作隔离、scene bootstrap、指标及残差对照接口

本轮补齐的工具

新校准与 anchor 模块是可复用适配器,尚未接入旧预处理器和训练循环。配置文件可被现有配置解析器读取,但不意味着旧训练入口已经满足新协议。不能直接照旧命令启动正式训练。

已下载的官方材料

来源固定为 apple-aiml-research/ml-hypersim commit 3463c5c4a75f3cbfc65ed31cfd6e87204b3a2254:逐场景相机 CSV(312,522 bytes)、说明、raycasting 示例 notebook、LICENSE。下载 URL、大小及 SHA256 见 metadata/sources.json。只读取 notebook JSON 中的算法说明,没有执行上游 notebook,也没有下载其中示例媒体。

官方说明每个 scene 的内参可能不同,不能假定统一 FOV;depth 是到光心的欧氏距离。官方还提示 preview JPEG 不适合一般下游训练。历史仓库使用 preview JPEG;重新训练前须明确保留该输入以复现,还是使用 HDR RGB 与固定 tone-mapping,不能静默切换。

参考:官方相机说明、数据说明。

小 cohort 草案,不是正式 split 锁

按已有 partition、frame_count>=16、不同 asset volume、字典序选出,不用图像或结果:

角色 候选 scene
train ai_001_001、ai_002_001、ai_003_001
dev ai_004_003、ai_005_005、ai_006_007

不同 volume 只是保守筛选,不证明物理地点独立;physical_scene_id=null,状态明确 UNVERIFIED。每 scene 计划使用前 16 个实际公开有效帧,具体帧号尚未锁定,不能假定就是 0–15。这只是 3+3 工程/开发 pilot,不是统计功效足够的泛化确认,也不是此前未曝光场景的声明。没有选 diagnostic_test 或 final_holdout。

必须避免的旧默认

  1. hypersim.py 旧内参用 60° FOV 在目标尺寸重新计算 fx=fy;128×160 非等比例 resize 会带来误差。应接入本轮官方矩阵,确保 RGB/depth 的重采样像素中心一致。
  2. scene scale 缺失时旧函数回退 1.0。新流程必须要求官方 scale,核对 _detail/metadata_scene.csv,缺失即停止。
  3. 旧转换器用已转换全部 depth 推 bounds。新训练只能用固定 context-local bounds,不得使用 query-derived bounds。
  4. materialize_hypersim_expansion.py 默认包含 diagnostic_test、所有帧及 100GiB 保留空间,不能直接调用默认流程。应以锁定 train/dev 白名单使用局部 ZIP 下载,先检查压缩/解压大小。
  5. prepare_dynamic_ttt_pilot.py 会打开 online 帧 depth/normal,且额外要求 normal。当前训练只需 RGB/camera 和离线 query depth;优先走 training compiler 的 metadata-only API,明确记录何时读取 train depth。

配置与验收顺序

草案:128×160、原 carrier/write 配置、固定 renderer 64 samples(与新机制 pilot 一致,显式区别于历史训练的16);Stage A 1000 步、lr=1e-3,Stage B 600 步、lr=3e-4。它们是待核定工程预算,不是收敛保证。A 配置中 B steps=0,先检查静态资格;B 单独配置,需要显式传 A-final。尚未冻结真实数据上的窗口与采样规则。

正式启动前剩余:

  1. 核实物理地点映射、scene/camera/具体帧号并冻结清单;只选合法 train/dev。
  2. 按精确成员清单下载小规模 RGB、相机和 depth,保存来源/hash/体积;不全量下载数据集。
  3. 将官方校准与严格米制 scale 接入独立预处理路径,核对图像射线/深度坐标,锁定 RGB 来源及重采样。
  4. 将共同 anchor 损失显式接入训练器配置,测试日志、续训兼容性和状态隔离,避免通过临时 monkeypatch 启用。
  5. 编译 train/dev online/query 清单;train 标签健康检查有访问日志;dev query 在评价 seal 前不读取。
  6. 用真实训练输入测完整动态展开显存/耗时,再启动预先冻结的 A 阶段。充分训练 R-Residual 对照后评价静态资格,再决定 B 与后续机制实验。

验证与资源

14 项新增测试通过(共同 anchor 11、校准3)。本轮新模块及复用的编译、provenance、下载组件回归结果见 regression_tests.log;Ruff PASS。没有修改旧实现,未重复无关的全仓库测试。

RTX 5090 上,128×160、两组各3帧、单query、64 samples、chunk=2048 的合成 forward/backward 为 0.462秒;PyTorch peak allocated 257,635,328 bytes ≈246MiB,reserved ≈276MiB。仅测静态单步,未包含真实 I/O、optimizer状态或 Phase B 八步展开,不据此估算总训练时间。optimizer steps=0,未生成伪训练 checkpoint。主盘当时约94GiB可用,内存/显存不是目前唯一门槛。

复现见 commands.sh;完整输出位于独立 outputs 目录。