日期:2026-07-18 · 快照:30 environments / 3 families / 10,000 rows / 5 seeds · 核心指标:macro significant three-choice accuracy(随机基线 33.33%)
训练一个模型很贵。如果有一个“世界模型”能预测 “给定一个训练 setting → 跑出来的 loss”,那么在真正消耗算力之前,就可以:
这对应一个更长期的方向:把科研建模成状态转移 config_t + action → config_{t+1},meta-model 学习这个转移/结果预测器。本实验是这条路线第一个可量化的闭环——预测“哪个 setting 更优”。
所有 GT 都来自 执行生成的候选代码(spec → render .py → import & run → summary.json),不是并行逻辑重算。冻结快照:
| 项 | 值 |
|---|---|
| Environments | 30 = 3 families × 10 dataset instances(univariate/multivariate regression, bigram LM) |
| Rows | 10,000 = 9,000 train + 1,000 locked validation |
| 每候选 seeds | 5(目标取 log(mean_loss),mean 跨 5 seed) |
| 每行内容 | 一个 JSON-like training setting(model / optimizer / loss / batch_size / budget)+ 实测 log loss |
| 特征维度 | 122(full setting 展开 + dataset identity) |
目标取 log(mean_loss) 而不是 raw loss:raw loss 跨 family/环境差 10+ 个数量级(multivariate 环境的 regret upper 从 0.44 到 4.1e11),只有 log 尺度可比较。
FeatureEncoder(feature_set="full")把 setting 结构化展开:optimizer type × log10(lr) 交互项、weight_decay / momentum / betas、budget 的 log(total_samples_seen) / log(batch_size)、loss_id、模型架构展开(MLP:depth / log2(width) / 激活函数分布;Transformer:d_model / num_heads / num_layers)、体量特征 derived.log_total_params,以及 dataset identity 条件特征。
对每个 environment 内的全部行穷举 C(n,3) 三元组,模型对 3 个候选预测 loss、取 argmin 为预测 winner,与 GT winner 比较。只有通过完整显著性检验的三元组才计分:
| 条件 | 默认值 | 语义 |
|---|---|---|
gap_min | 0.05 | best 与 second 候选的 mean_metric 绝对差 |
win_rate_min | 0.7 | 5 seed 里 winner 一致率(≥4/5) |
use_non_overlap | True | winner+std < runner_up−std |
| 协议 | 结构 | 说明 |
|---|---|---|
| A · per-dataset 专家模型 | 15 个回归器 | 每个 dataset 各训一个(~600 rows / 模型),不跨 dataset 共享样本 |
| B · 全局共享模型 | 1 个回归器 | 9,000 rows 训一个模型,特征里显式编码 dataset identity(122 维) |
| C · 直接预测 winner | pairwise 分类 + 投票 | 输入两个候选的特征差,输出二分类“A 是否优于 B”;三元组做 3 次 pairwise 投票 |
| 模型 | 专家模型 Expert | Shared(1 模型) | 差 |
|---|---|---|---|
| Compact Ridge | 45.16% | 43.55% | −1.6 |
| Full Ridge | 53.99% | 55.27% | +1.3 |
| Full OLS | 55.15% | — | — |
| Compact Poly Ridge | 60.63% | — | — |
| MLP | 52.44% | 60.31% | +7.9 |
| Random Forest | 75.35% | 78.60% | +3.3 |
| ExtraTrees | 77.78% | 82.11% | +4.3 |
| XGBoost | 78.33% | 70.80% | −7.5 |
Headline 配置:ExtraTreesRegressor(n_estimators=300, max_depth=16, max_features=0.7, min_samples_leaf=5, random_state=20260714),预测 log(mean_loss)。
| 分类器 | per-dataset | global shared |
|---|---|---|
| Logistic | 68.22% | 62.98% |
| GradientBoosting Clf | 74.85% | 64.92% |
| MLP Clf | 71.07% | 72.31% |
| ExtraTrees Clf | 77.85% | 61.59% |
| RandomForest Clf | 77.00% | 56.62% |
per-dataset ExtraTrees Clf(77.85%)接近回归 ExtraTrees(77.78%),但未超过共享回归的 82.11%。Global tree 分类器反而很弱(56–62%),pairwise 差值特征可能破坏了树的原生判别能力。
| 模型 | train sig | val sig | gap(过拟合) |
|---|---|---|---|
| ExtraTrees | 93.75% | 82.80% | 11.0pp |
| Random Forest | 85.64% | 78.16% | 7.5pp |
| XGBoost | 74.49% | 70.77% | 3.7pp |
| MLP | 72.12% | 61.01% | 11.1pp |
| Full Ridge | 55.65% | 54.68% | 1.0pp |
XGBoost 几乎不过拟合但欠拟合(浅树 depth=3 容量不足);ExtraTrees 过拟合 11pp 但 val 仍最高。在回归质量上:全局共享 locked val 的 log 预测 RMSE 1.875 / R²=0.718(训练 5 折 CV R²=0.687)。
| 方法 | 60 题正确率 | 说明 |
|---|---|---|
| 共享 ExtraTrees(meta-model) | 43/60 = 71.7% | 30 环境宽协议训练,60 题为外部锁定题 |
| Claude Opus 4.8 high | 34/60 = 56.7% | 单 prompt 60 题,无工具调用 |
| GPT-5.5 high | 27/60 = 45.0% | 同上 |
| GPT-5.6-SOL blind | 25/60 = 41.7% | 纯 agent,无 meta-model |
| 随机 | 20/60 = 33.3% | — |
当前闭环证明了一个基模能在已知配置空间内预测哪个 setting 更优。下一步是把它扩展成科研 agent 可调用的世界模型:
config_t + action → config_{t+1} 的预测器作为 LLM 的 tool;LLM 提出多种 action,根据返回的 config_{t+1} 预测结果决定下一步,把“实验设计”变成可搜索的决策过程。git clone git@github.com:renrua52/ArchitectureIQ.git git checkout shaoyang/local-agent-dev # meta-model 工作所在分支 python3.11 -m venv .venv .venv/bin/pip install -e ".[meta-model,dev]" # 额外安装 scikit-learn + xgboost
需要 Python ≥ 3.10。训练出的 2,473 个 .joblib 权重(约 4.9GB)在本地 data/meta_model_studies/,被 .gitignore 忽略、不在远程;但 headline 数字的输入(GT 快照)和输出(显著性筛选结果)都作为 JSON 在 git 里,可以核对。
冻结快照、bounds、显著性筛选结果都在 git 里(见 §9 产物索引),先直接核对 headline:
python -c "import json; s=json.load(open('artifacts/wide_v2_full30_meta_model_final_summary.json')); print(s['best_overall'])"
# 预期:{approach: regression global shared + ExtraTrees, sig_accuracy: 0.8211, ...}
再跑 meta-model 单测(特征编码 / 模型容器 / bounds / wide run / 初始矩阵):
.venv/bin/python -m pytest -q \ tests/test_meta_model_study_features.py \ tests/test_meta_model_study_models.py \ tests/test_meta_model_study_bounds.py \ tests/test_meta_model_study_wide.py \ tests/test_meta_model_study_wide_run.py \ tests/test_meta_model_study_initial_matrix.py
30 个 environment 的 GT 行与 candidate summary 在 data/meta_model/setting_to_loss_wide_v2*/(gitignored,只有训练机上有)。若有该目录,可完整重跑拟合与显著性评测:
# 1) bounds(或直接使用 git 里已跟踪的 artifacts/wide_v2_full30_gt_snapshot.json / _bounds.json) .venv/bin/python -m tools.meta_model_study.bounds \ --snapshot-manifest artifacts/wide_v2_full30_gt_snapshot.json --split validation \ > artifacts/wide_v2_full30_gt_snapshot_bounds.json # 2) 拟合 per-dataset 专家模型 + 全局共享模型(headline 82.11% = global scope + conditioning=id) .venv/bin/python -m tools.meta_model_study.wide_run fit-id \ --dataset-root data/meta_model/setting_to_loss_wide_v2 \ --output-root data/meta_model_studies/wide_v2_full30_global_conditioned_fixed \ --scopes environment,dataset,global --include-xgboost # 3) 显著性重评(gap≥0.05 ∧ win_rate≥0.7 ∧ non_overlap),predictions 用 wide_run 产出的文件 .venv/bin/python tools/meta_model_study/significant_recheck.py \ --gt-base data/meta_model/setting_to_loss_wide_v2 \ --predictions data/meta_model_studies/wide_v2_full30_global_conditioned_fixed/id/global/predictions.json \ --output artifacts/wide_v2_full30_significant_recheck_global.json
预期:extra_trees_fixed 的 macro significant three-choice accuracy ≈ 0.8211,与已跟踪的 artifacts/wide_v2_full30_significant_recheck_global.json 一致。跨数据集泛化用 wide_run fit-grouped --protocols dataset,family 复现 LOGO(log R² 0.37–0.47)。
从头生成数据最重,按 ArchitectureIQ 主流水线(spec → code → run → GT)执行:
# 1) 30 environments = 3 families × 10 dataset instances(采样计划 tools/meta_model_dataset/plan_wide_v2.json) architecture-iq create-dataset architecture-iq generate-candidates # 每 environment 采样 ~1,000 settings # GT:对每个候选执行 write_candidate → train_and_eval() → results/summary.json(5 seeds) # 2) 汇总 train/validation 行 → 冻结快照 → 拟合 → 显著性重评 tools/meta_model_dataset/build.py tools/meta_model_study/freeze_wide_snapshot.py --output artifacts/wide_v2_full30_gt_snapshot.json tools/meta_model_study/wide_run.py fit-id / fit-grouped tools/meta_model_study/significant_recheck.py tools/meta_model_study/summarize_initial_matrix.py
成本:30 environments × ~1,000 候选 × 5 seeds 的真实训练。日常复现优先走 §8.2 / §8.3 的冻结快照路径。
把下面这段直接发给一个 coding agent,即可让它独立复现本研究:
你是一个研究复现 agent。目标:在 ArchitectureIQ 仓库里复现 meta-model 研究
(tabular 基模预测训练 setting 的 log(mean_loss),只在显著三元组上做三选一;
headline = global shared ExtraTrees 82.11%,随机基线 33.33%)。
约束:
1. 只在该 git worktree 内操作,不要读写其他 worktree;先 git rev-parse --show-toplevel 确认根目录。
2. GT 必须来自执行生成的代码(spec → render .py → import & run → summary.json),
不允许硬编码、重算或"修"任何指标。
3. data/ 是 gitignored 的;若 data/meta_model/setting_to_loss_wide_v2*/ 不存在,
说明本地 GT 数据缺失,报告并停在相应步骤,不要伪造数据。
步骤:
1. git clone git@github.com:renrua52/ArchitectureIQ.git && git checkout shaoyang/local-agent-dev
2. python3.11 -m venv .venv && .venv/bin/pip install -e ".[meta-model,dev]"
3. 运行 meta-model 单测并确保全部通过:
tests/test_meta_model_study_features.py / models / bounds / wide / wide_run / initial_matrix
4. 核对 git 已跟踪产物:artifacts/wide_v2_full30_gt_snapshot.json、
wide_v2_full30_significant_recheck_global.json、wide_v2_full30_meta_model_final_summary.json;
确认 final summary 的 best_overall.sig_accuracy == 0.8211。
5. 若有 data/meta_model/setting_to_loss_wide_v2*/,重跑拟合与评测:
python -m tools.meta_model_study.wide_run fit-id \
--dataset-root data/meta_model/setting_to_loss_wide_v2 \
--output-root data/meta_model_studies/wide_v2_full30_global_conditioned_fixed \
--scopes environment,dataset,global --include-xgboost
再用 significant_recheck.py(--gap-min 0.05 --win-rate-min 0.7)重算,
对比 artifacts/wide_v2_full30_significant_recheck_global.json(预期 ≈82.11%)。
6. 汇报:每步命令、耗时、与已跟踪产物的 diff;任何不一致必须停下来调查,
不允许为了让数字对上而修改代码或数据。
| 产物 | 路径 |
|---|---|
| 最终结果 JSON | artifacts/wide_v2_full30_meta_model_final_summary.json |
| 专家模型回归 + 显著性筛选 | artifacts/wide_v2_full30_significant_recheck_dataset_pooled.json |
| 共享回归 + 显著性筛选 | artifacts/wide_v2_full30_significant_recheck_global.json |
| OLS + 显著性筛选 | artifacts/wide_v2_full30_significant_recheck_ols.json |
| Winner 分类(per-dataset / global) | data/meta_model_studies/wide_v2_full30_winner_clf_*/ |
| 模型与特征工程 | tools/meta_model_study/models.py · features.py |
| 显著性筛选 / 训练脚本 | tools/meta_model_study/significant_recheck.py · run.py |
| 详细报告 | docs/0718_meta_model_final_report.html · docs/meta_model_settings_comparison.md · docs/0718_train_val_comparison.html |
冻结快照 SHA256: 2b172e0c…40b38ba · 30 environments / 10,000 rows / 5 seeds · 所有 GT 来自执行候选代码,未重算。复现入口:ArchitectureIQ repo(tools/meta_model_study/)。