Files
mcm-26-b/docs/hrl-p1-execution-report.md
2026-09-11 21:00:39 +08:00

5.7 KiB
Raw Permalink Blame History

HRL P0+P1 执行报告(本地自建评测机)

日期:2026-09-11(本机工作区) 范围:按用户确认,仅完成 P0 正确性回归 + P1 最小可训练/可评测闭环; P2 的 BC、完整课程长训、Optuna、正式消融与正式测试表留待下一阶段。

1. 本轮代码交付

文件 内容
scripts/benchmark_hrl.py 同一 manifest 真值场景复用;hrl/hrl_heuristic/bayes/directional 配对评测;写 results.json、aggregate.json/csv、每局 summary.json 与 session.jsonl
scripts/train_hrl_high.py 高层 MaskablePPO 训练;--problem/--stage/--envs/--vec-env/--device/--config-profile/--reward-profile/--model/--resume/--init/--eval-manifest;模型元数据固化 feature/action/reward 版本;墙钟硬上限
src/mcm26b/hrl/constants.py 新增 ACTION_LAYOUT_VERSION=1、REWARD_VERSION=1
src/mcm26b/hrl/policy.py 高层模型严格校验元数据;低层模型保持独立基础校验
src/mcm26b/cli.py 新增 --strategy hrl、--q4-strategy hrl、--hrl-model、--hrl-low-model、--hrl-device、--trace-low
src/mcm26b/hrl/hierarchical_env.py 新增 HRLReward.time_only():P0.4 建议的纯时间目标,去掉逐源清除/发现/熵减塑形
project/ 严格目录树薄兼容层,转发真实实现,不复制算法
tests/test_hrl_p1.py manifest 往返、真值隔离、纯时间奖励、project re-export 回归

2. 全量回归

.venv/bin/python -m pytest -q --tb=short
# 275 passed in 124.57s

3. P1 smoke 训练(本机 Apple MPS)

.venv/bin/python scripts/train_hrl_high.py \
  --problem 3 --stage 1 --timesteps 2048 --seed 320001 \
  --envs 1 --vec-env dummy --device mps \
  --config-profile production --reward-profile time \
  --model output/hrl/p1-smoke-time/q3.zip \
  --eval-episodes 2 --rollout-steps 128 --batch-size 128 \
  --n-epochs 3 --max-wall-s 800 --verbose 0

结果:

  • actual_timesteps=2048,墙钟 260.069 s;
  • 保存后确定性评估 2/2 成功,accounted=20,无异常;
  • 模型元数据含 feature_version=4、action_layout_version=1、 reward_version=1、reward_profile=time、model_sha256。

模型重载已由以下两条路径验证;--resume 的 --timesteps 是增量步数 (SB3 reset_num_timesteps=False 语义),元数据写 timesteps_semantics="additional":

.venv/bin/python -m mcm26b.cli run \
  --robot-id 2026001 --self-test --strategy hrl \
  --hrl-model output/hrl/p1-smoke-time/q3.zip --hrl-device mps \
  --sources 3 --seed 1 --summary-steps 5

python scripts/benchmark_hrl.py --variants hrl \
  --hrl-model output/hrl/p1-smoke-time/q3.zip --hrl-device mps \
  --problem 3 --scenes 1 --sources 3 --output output/hrl/p1-bench-hrl

4. 多轮本地配对测试

Q3:3 个独立场景 × 3 个变体

python scripts/benchmark_hrl.py --variants hrl,hrl_heuristic,bayes \
  --hrl-model output/hrl/p1-smoke-time/q3.zip --hrl-device mps \
  --problem 3 --scenes 3 --sources 3 --start-seed 91000 \
  --output output/hrl/p1-multiround-q3
variant episodes valid_rate cleared_mean virtual_time_mean_s virtual_time_std_s program_run_time_mean_s
bayes 3 1.0 3.0 2518.371 74.183 0.748
hrl_heuristic 3 1.0 3.0 2518.371 74.183 0.883
hrl 3 1.0 3.0 3731.380 120.536 1.853

结论:P1 模型只在 stage 1 单源课程上训练 2048 步,可直接重载并在 3 源场景保持 3/3 有效全清; 但用时明显未优于 bayes/heuristic,符合本轮不做正式性能声明的边界。

Q4:3 个独立混合源场景 × 2 个变体

python scripts/benchmark_hrl.py --variants hrl_heuristic,directional \
  --problem 4 --scenes 3 --sources 3 --directional 1 --start-seed 92000 \
  --output output/hrl/p1-multiround-q4 --force
variant episodes valid_rate cleared_mean virtual_time_mean_s virtual_time_std_s program_run_time_mean_s
directional 3 1.0 3.0 13442.997 263.902 1.063
hrl_heuristic 3 1.0 3.0 12292.198 344.827 6.284

说明:Q4 高层 PPO 尚未训练;本轮只验证 Q4 的 hrl_heuristic 与 directional 闭环、真值隔离与计时审计。

5. P0 状态

  • --resume 重载:16 步起步模型续训 32 增量步后 actual_timesteps=48, 校验 feature_version/action_layout_version/reward_version 后保存;

  • 槽位唯一性:test_hrl.py 覆盖 channel 17–20 与 1–4 同时 clear/locate 不丢;

  • 清除事件一次且仅一次:fallback 成功写 _step_clears 已有回归;

  • 候选快照:test_opportunity_measure_precedes_candidate_snapshot 已覆盖;

  • 奖励对齐:新增 HRLReward.time_only(),训练脚本默认 --reward-profile time;

  • 终止/安全网:现有 HierarchicalEnv 回合测试继续通过;

  • 训练/部署配置:--config-profile production 使用生产配置,coarse-pretrain 显式映射到 fast 评分配置并写入模型元数据;

  • 依赖守卫:全量测试 275 项在 dev+rl 环境通过。

6. 未完成 / P2 待办

  • scripts/pretrain_hrl_expert.py 已建可 --help 的接口占位,专家轨迹 + BC 功能待实现;
  • scripts/ablate_hrl.py 已建接口占位,无信息增益/无掩码/无课程/无粒子统计消融待实现;
  • scripts/tune_hrl.py 已建接口占位,Optuna TPE 搜索待实现;
  • Q3→Q4 迁移训练与配对实验;
  • 完整 10–16 源课程训练、多个训练种子、冻结测试清单;
  • 官方三次正式测试表:必须有真实官方案例码与导出日志后才能填写; 本地 referee 结果只标 local_self_test。