{
  "title": "A80 VGGT-guided Regional Budget Sampler",
  "updated_at_utc8": "2026-08-01 03:10:09 UTC+8",
  "wandb_project": "https://wandb.ai/tycr/trellis2-vggt-a80",
  "notes": [
    "当前大规模阶段仍训练 VGGTSpatialAdapter / state-anchor controller，尚未切到真正 A80 Region Budget Head。",
    "数据集为 Toys4K filtered VGGT manifest：可用 meshes 3229，complete pairs 3224；本轮 train512 + val64。",
    "25-view correction 正在使用独立数据根 /data/jiachen/trellis2_vggt_toys4k_25views，不覆盖旧 16-view 输出。",
    "训练启动前 waiter 会验证 train512/val64 feature metadata.view_count == 25；训练中每 case 随机采样 2/4/6/8 views。",
    "数据齐后会并行启动四个 25-view state-anchor ablation：cap=0.05/0.10/0.20 和 state_loss_weight=0.25。",
    "gpt-5.3-codex subagent 当前账号组不可用；长时间巡检由本地 shell/Python 守护进程承担，避免用 GPT-5.5 高频监控。",
    "25-view gate watcher: 四组 train512 ablation 完成 val64 后，自动选择 val64 mean loss 最低的 checkpoint 跑 Benchmark100 2/4/6/8。"
  ],
  "experiments": [
    {
      "id": "smoke16_completed",
      "name": "Smoke16 state-anchor ablations",
      "goal": "确认训练脚本、W&B、Bark 与状态锚定目标能稳定跑通。",
      "dataset": "Toys4K smoke16",
      "cases": 16,
      "gpu": "4,5,6,7",
      "status": "completed",
      "progress": "5/5 runs completed",
      "started_at_utc8": "2026-07-23 earlier UTC+8",
      "ended_at_utc8": "2026-07-23 earlier UTC+8",
      "conclusion": "五组 100-step smoke run 已上传到 W&B；可进入 train512。",
      "output": "/home/jiachen/TRELLIS/experiments/nonorthogonal_gpt_orthoview/outputs/data_survey/vggt_spatial_adapter",
      "wandb_group": "a80_smoke16",
      "config": "5 组 100-step smoke ablations；state-anchor / cap sweep / no-rescale 对照；W&B group=a80_smoke16。"
    },
    {
      "id": "train512_materialize",
      "name": "Materialize Toys4K train512",
      "goal": "从 source_manifest 链接 mesh 并抽取 512 个训练对象的多视角 PNG。",
      "dataset": "Toys4K train split",
      "cases": 512,
      "gpu": "CPU/IO",
      "status": "completed",
      "progress": "512/512 cases",
      "started_at_utc8": "2026-07-23 15:10:16 UTC+8",
      "ended_at_utc8": "2026-07-23 16:35:49 UTC+8",
      "conclusion": "metadata.csv 和 materialization.json 已生成。",
      "output": "/data/jiachen/trellis2_vggt_toys4k/train512",
      "config": "materialize_toys4k_vggt_smoke.py --split train --count 512；CPU/IO。"
    },
    {
      "id": "val64_materialize",
      "name": "Materialize Toys4K val64",
      "goal": "从 source_manifest 准备 64 个验证对象，后续用于 sanity validation。",
      "dataset": "Toys4K val split",
      "cases": 64,
      "gpu": "CPU/IO",
      "status": "completed",
      "progress": "64/64 cases",
      "started_at_utc8": "2026-07-23 15:35:04 UTC+8",
      "ended_at_utc8": "2026-07-23 16:35:49 UTC+8",
      "conclusion": "metadata.csv 和 materialization.json 已生成。",
      "output": "/data/jiachen/trellis2_vggt_toys4k/val64",
      "config": "materialize_toys4k_vggt_smoke.py --split val --count 64；CPU/IO。"
    },
    {
      "id": "train512_preprocess",
      "name": "TRELLIS.2 train512 preprocessing",
      "goal": "生成 mesh dumps、dual grid、shape latent、SS latent、condition renders 和 VGGT/DINO feature cache。",
      "dataset": "Toys4K train512",
      "cases": 512,
      "gpu": "4,5,6,7 where applicable",
      "status": "completed",
      "progress": "mesh 512/512; dual 512/512; shape 512/512; ss 512/512; cond 514/512; features 512/512",
      "started_at_utc8": "2026-07-23 15:35:15 UTC+8",
      "ended_at_utc8": "2026-07-23 17:45:55 UTC+8",
      "conclusion": "train512 latent、condition renders 和 VGGT/DINO feature cache 已完成；feature cache 512/512。",
      "output": "/data/jiachen/trellis2_vggt_toys4k/train512",
      "config": "dump_mesh, asset_stats, dual_grid@1024, shape latent, SS latent@64, render_cond 16 views, VGGT/DINO feature cache；sharded world_size=4。"
    },
    {
      "id": "val64_preprocess",
      "name": "TRELLIS.2 val64 preprocessing",
      "goal": "准备 64-case 验证数据，与 train512 使用同一套特征/latent schema。",
      "dataset": "Toys4K val64",
      "cases": 64,
      "gpu": "4,5,6,7 where applicable",
      "status": "completed",
      "progress": "64/64 fully preprocessed",
      "started_at_utc8": "2026-07-23 17:43:33 UTC+8",
      "ended_at_utc8": "2026-07-23 17:48:13 UTC+8",
      "conclusion": "val64 latent、condition renders 和 VGGT/DINO feature cache 已完成；launcher 收尾处曾出现非关键 shell token 错误，但 64 个 feature 文件和 rank summaries 已验证存在。",
      "output": "/data/jiachen/trellis2_vggt_toys4k/val64",
      "config": "与 train512 相同 schema；64-case validation cache；feature cache 使用 GPU 4-7。"
    },
    {
      "id": "train512_state_anchor_cap010",
      "name": "Train512 state-anchor cap=0.10",
      "goal": "把 smoke16 最稳妥的 state-anchor controller 放大到 512-case，观察 loss、state ratio、梯度和耗时。",
      "dataset": "Toys4K train512",
      "cases": 512,
      "gpu": "4",
      "status": "completed",
      "progress": "1000/1000 steps",
      "started_at_utc8": "2026-07-23 17:46:48 UTC+8",
      "ended_at_utc8": "2026-07-23 18:37:51 UTC+8",
      "conclusion": "训练完成；最终指标见 train.jsonl / W&B。",
      "output": "/home/jiachen/TRELLIS/experiments/nonorthogonal_gpt_orthoview/outputs/data_survey/vggt_spatial_adapter/train512_state_anchor_cap010",
      "wandb_group": "a80_train512",
      "config": "train_trellis2_vggt_state_anchor.py --steps 1000 --state-rel-cap 0.10 --accumulation 1；W&B group=a80_train512。",
      "total_steps": 1000,
      "last_metrics": {
        "loss": 0.07862302660942078,
        "flow_loss": 0.07839387655258179,
        "state_loss": 0.00022915257432032377,
        "gradient_norm": 1.5586357116699219,
        "max_final_state_ratio": 0.0022520862985402346,
        "step_elapsed_sec": 3.8026952808722854,
        "total_elapsed_sec": 3101.7745816879906,
        "peak_vram_bytes": 26166165504
      },
      "wandb_url": "https://wandb.ai/tycr/trellis2-vggt-a80/runs/1tm36pw5"
    },
    {
      "id": "train512_state_anchor_cap005",
      "name": "Train512 state-anchor cap=0.05",
      "goal": "并行对照更保守的状态投影半径，判断大数据下 loss/ratio 是否更稳定。",
      "dataset": "Toys4K train512",
      "cases": 512,
      "gpu": "5",
      "status": "completed",
      "progress": "1000/1000 steps",
      "started_at_utc8": "2026-07-23 17:46:46 UTC+8",
      "ended_at_utc8": "2026-07-23 18:38:48 UTC+8",
      "conclusion": "训练完成；最终指标见 train.jsonl / W&B。",
      "output": "/home/jiachen/TRELLIS/experiments/nonorthogonal_gpt_orthoview/outputs/data_survey/vggt_spatial_adapter/train512_state_anchor_cap005",
      "wandb_group": "a80_train512",
      "config": "train_trellis2_vggt_state_anchor.py --steps 1000 --state-rel-cap 0.05 --accumulation 1；W&B group=a80_train512。",
      "total_steps": 1000,
      "last_metrics": {
        "loss": 0.07916956394910812,
        "flow_loss": 0.07892682403326035,
        "state_loss": 0.00024273787857964635,
        "gradient_norm": 1.171106219291687,
        "max_final_state_ratio": 0.0023731866385787725,
        "step_elapsed_sec": 3.866234004031867,
        "total_elapsed_sec": 3163.465599251911,
        "peak_vram_bytes": 26166165504
      },
      "wandb_url": "https://wandb.ai/tycr/trellis2-vggt-a80/runs/t5ks9tfk"
    },
    {
      "id": "a80_trajectory_cache_v0",
      "name": "A80.1 offline trajectory cache v0",
      "goal": "构造 state-balanced trajectory cache，连接 A65 trajectory 与 A79 proxy states，为 A80.2 Frozen Controller Training 做输入。",
      "dataset": "Benchmark100 replay/proxy evidence: A65/A78/A79",
      "cases": 10,
      "gpu": "CPU",
      "status": "completed",
      "progress": "cache built; see summary.json",
      "started_at_utc8": "2026-07-23 16:00:47 UTC+8",
      "ended_at_utc8": "2026-07-23 16:02:04 UTC+8",
      "conclusion": "A80.1 v0 cache 已生成并上传 W&B；当前仍需要更多真实 sampler trajectory 补齐每状态 20-case 覆盖。",
      "output": "/home/jiachen/TRELLIS/experiments/nonorthogonal_gpt_orthoview/outputs/data_survey/vggt_spatial_adapter/a80_offline_trajectory_cache_v0",
      "config": ""
    },
    {
      "id": "a80_frozen_controller_smoke_v0",
      "name": "A80.2 frozen controller smoke v0",
      "goal": "冻结 TRELLIS.2/VGGT 假设下，训练最小 state classifier + region budget head，验证 A80.1 schema、loss、W&B 和 checkpoint 链路。",
      "dataset": "A80.1 offline trajectory cache v0",
      "cases": 37,
      "gpu": "CPU",
      "status": "completed",
      "progress": "500/500 steps",
      "started_at_utc8": "2026-07-23 16:08:43 UTC+8",
      "ended_at_utc8": "2026-07-23 16:12:13 UTC+8",
      "conclusion": "A80.2 smoke 训练完成；state/budget loss 已上传 W&B。注意该结果只验证 controller schema 和训练链路，数据覆盖仍不足。",
      "output": "/home/jiachen/TRELLIS/experiments/nonorthogonal_gpt_orthoview/outputs/data_survey/vggt_spatial_adapter/a80_frozen_controller_smoke_v0",
      "total_steps": 500,
      "last_metrics": {
        "loss": 0.00822984054684639,
        "gradient_norm": 0.21749278903007507,
        "step_elapsed_sec": 0.0031720218248665333,
        "total_elapsed_sec": 48.78971529798582
      },
      "config": ""
    },
    {
      "id": "train512_state_anchor_cap020",
      "name": "Train512 state-anchor cap=0.20",
      "goal": "并行对照更宽松的状态投影半径，检查大数据下是否带来更低 flow/state loss 或更高 state ratio 风险。",
      "dataset": "Toys4K train512",
      "cases": 512,
      "config": "train_trellis2_vggt_state_anchor.py --steps 1000 --state-rel-cap 0.20 --accumulation 1；W&B group=a80_train512。",
      "gpu": "6",
      "status": "completed",
      "progress": "1000/1000 steps",
      "started_at_utc8": "2026-07-23 17:52:42 UTC+8",
      "ended_at_utc8": "2026-07-23 18:41:47 UTC+8",
      "conclusion": "训练完成；最终指标见 train.jsonl / W&B。",
      "output": "/home/jiachen/TRELLIS/experiments/nonorthogonal_gpt_orthoview/outputs/data_survey/vggt_spatial_adapter/train512_state_anchor_cap020",
      "total_steps": 1000,
      "last_metrics": {
        "loss": 0.07908892631530762,
        "flow_loss": 0.07885101437568665,
        "state_loss": 0.00023791106650605798,
        "gradient_norm": 0.7623661160469055,
        "max_final_state_ratio": 0.0026638361159712076,
        "step_elapsed_sec": 3.8509731930680573,
        "total_elapsed_sec": 3135.0979456673376,
        "peak_vram_bytes": 26166165504
      },
      "wandb_url": "https://wandb.ai/tycr/trellis2-vggt-a80/runs/39895drp"
    },
    {
      "id": "train512_state_anchor_statew025",
      "name": "Train512 state-anchor state_loss_weight=0.25",
      "goal": "并行对照较弱状态锚定约束，判断 flow fitting 和 state consistency 的权衡。",
      "dataset": "Toys4K train512",
      "cases": 512,
      "config": "train_trellis2_vggt_state_anchor.py --steps 1000 --state-rel-cap 0.10 --state-loss-weight 0.25 --accumulation 1；W&B group=a80_train512。",
      "gpu": "7",
      "status": "completed",
      "progress": "1000/1000 steps",
      "started_at_utc8": "2026-07-23 17:50:26 UTC+8",
      "ended_at_utc8": "2026-07-23 18:42:02 UTC+8",
      "conclusion": "训练完成；最终指标见 train.jsonl / W&B。",
      "output": "/home/jiachen/TRELLIS/experiments/nonorthogonal_gpt_orthoview/outputs/data_survey/vggt_spatial_adapter/train512_state_anchor_statew025",
      "total_steps": 1000,
      "last_metrics": {
        "loss": 0.07861974835395813,
        "flow_loss": 0.07856206595897675,
        "state_loss": 0.00023073874763213098,
        "gradient_norm": 1.770887017250061,
        "max_final_state_ratio": 0.002095791744068265,
        "step_elapsed_sec": 3.8629752043634653,
        "total_elapsed_sec": 3151.0309861521237,
        "peak_vram_bytes": 26166165504
      },
      "wandb_url": "https://wandb.ai/tycr/trellis2-vggt-a80/runs/hbfjbbkw"
    },
    {
      "id": "statew025_benchmark100_protocol2",
      "name": "Statew025 Benchmark100 protocol 2",
      "goal": "评估 train512 statew025 checkpoint 在 Benchmark100 上是否相对 TRELLIS.2 baseline 具备 Pareto 优势。",
      "dataset": "Benchmark100: 50 GSO + 50 Toys4K",
      "cases": 100,
      "config": "run_proobjaverse_trellis2.py --mode vggt_state_anchor --adapter-state-rel-cap 0.10 --steps 12；protocol 2 输入视角；4 shards x 25 cases；samples=20000。",
      "gpu": "4,5,6,7 sharded lanes",
      "status": "completed",
      "progress": "generation 100/100; eval 100/100; completed shards 4/4",
      "started_at_utc8": "2026-07-30 12:20:00 UTC+8",
      "ended_at_utc8": "2026-07-30 14:28:07 UTC+8",
      "conclusion": "P2 未通过 Pareto gate: chamfer_mean rel_delta=+0.2944% better=False; chamfer_p95 rel_delta=-0.0479% better=True; hausdorff_approx rel_delta=+0.1617% better=False; fscore_1pct rel_delta=-1.3908% better=False; fscore_5pct rel_delta=-0.1034% better=False; fscore_10pct rel_delta=-0.0332% better=False Aggregate W&B: https://wandb.ai/tycr/trellis2-vggt-a80/runs/qxgcct68",
      "output": "/home/jiachen/TRELLIS/experiments/nonorthogonal_gpt_orthoview/outputs/data_survey/vggt_spatial_adapter/train512_state_anchor_statew025/benchmark100_all_protocols",
      "wandb_group": "a80_statew025_benchmark100",
      "last_metrics": {
        "chamfer_mean_rel_delta": "+0.2944%",
        "chamfer_p95_rel_delta": "-0.0479%",
        "hausdorff_approx_rel_delta": "+0.1617%",
        "fscore_1pct_rel_delta": "-1.3908%",
        "fscore_5pct_rel_delta": "-0.1034%",
        "fscore_10pct_rel_delta": "-0.0332%"
      }
    },
    {
      "id": "statew025_benchmark100_protocol4",
      "name": "Statew025 Benchmark100 protocol 4",
      "goal": "评估 train512 statew025 checkpoint 在 Benchmark100 上是否相对 TRELLIS.2 baseline 具备 Pareto 优势。",
      "dataset": "Benchmark100: 50 GSO + 50 Toys4K",
      "cases": 100,
      "config": "run_proobjaverse_trellis2.py --mode vggt_state_anchor --adapter-state-rel-cap 0.10 --steps 12；protocol 4 输入视角；4 shards x 25 cases；samples=20000。",
      "gpu": "4,5,6,7 sharded lanes",
      "status": "completed",
      "progress": "generation 100/100; eval 100/100; completed shards 4/4",
      "started_at_utc8": "2026-07-30 12:20:00 UTC+8",
      "ended_at_utc8": "2026-07-30 14:28:07 UTC+8",
      "conclusion": "P4 未通过 Pareto gate: chamfer_mean rel_delta=+0.3269% better=False; chamfer_p95 rel_delta=+0.2824% better=False; hausdorff_approx rel_delta=-0.1364% better=True; fscore_1pct rel_delta=+0.4688% better=True; fscore_5pct rel_delta=-0.0334% better=False; fscore_10pct rel_delta=-0.0798% better=False Aggregate W&B: https://wandb.ai/tycr/trellis2-vggt-a80/runs/8wfjewdw",
      "output": "/home/jiachen/TRELLIS/experiments/nonorthogonal_gpt_orthoview/outputs/data_survey/vggt_spatial_adapter/train512_state_anchor_statew025/benchmark100_all_protocols",
      "wandb_group": "a80_statew025_benchmark100",
      "last_metrics": {
        "chamfer_mean_rel_delta": "+0.3269%",
        "chamfer_p95_rel_delta": "+0.2824%",
        "hausdorff_approx_rel_delta": "-0.1364%",
        "fscore_1pct_rel_delta": "+0.4688%",
        "fscore_5pct_rel_delta": "-0.0334%",
        "fscore_10pct_rel_delta": "-0.0798%"
      }
    },
    {
      "id": "statew025_benchmark100_protocol6",
      "name": "Statew025 Benchmark100 protocol 6",
      "goal": "评估 train512 statew025 checkpoint 在 Benchmark100 上是否相对 TRELLIS.2 baseline 具备 Pareto 优势。",
      "dataset": "Benchmark100: 50 GSO + 50 Toys4K",
      "cases": 100,
      "config": "run_proobjaverse_trellis2.py --mode vggt_state_anchor --adapter-state-rel-cap 0.10 --steps 12；protocol 6 输入视角；4 shards x 25 cases；samples=20000。",
      "gpu": "4,5,6,7 sharded lanes",
      "status": "completed",
      "progress": "generation 100/100; eval 100/100; completed shards 4/4",
      "started_at_utc8": "2026-07-30 12:20:00 UTC+8",
      "ended_at_utc8": "2026-07-30 14:28:07 UTC+8",
      "conclusion": "P6 未通过 Pareto gate: chamfer_mean rel_delta=+0.1775% better=False; chamfer_p95 rel_delta=+0.1094% better=False; hausdorff_approx rel_delta=+0.3160% better=False; fscore_1pct rel_delta=+0.3668% better=True; fscore_5pct rel_delta=-0.3236% better=False; fscore_10pct rel_delta=-0.1030% better=False Aggregate W&B: https://wandb.ai/tycr/trellis2-vggt-a80/runs/qh2211zp",
      "output": "/home/jiachen/TRELLIS/experiments/nonorthogonal_gpt_orthoview/outputs/data_survey/vggt_spatial_adapter/train512_state_anchor_statew025/benchmark100_all_protocols",
      "wandb_group": "a80_statew025_benchmark100",
      "last_metrics": {
        "chamfer_mean_rel_delta": "+0.1775%",
        "chamfer_p95_rel_delta": "+0.1094%",
        "hausdorff_approx_rel_delta": "+0.3160%",
        "fscore_1pct_rel_delta": "+0.3668%",
        "fscore_5pct_rel_delta": "-0.3236%",
        "fscore_10pct_rel_delta": "-0.1030%"
      }
    },
    {
      "id": "statew025_benchmark100_protocol8",
      "name": "Statew025 Benchmark100 protocol 8",
      "goal": "评估 train512 statew025 checkpoint 在 Benchmark100 上是否相对 TRELLIS.2 baseline 具备 Pareto 优势。",
      "dataset": "Benchmark100: 50 GSO + 50 Toys4K",
      "cases": 100,
      "config": "run_proobjaverse_trellis2.py --mode vggt_state_anchor --adapter-state-rel-cap 0.10 --steps 12；protocol 8 输入视角；4 shards x 25 cases；samples=20000。",
      "gpu": "4,5,6,7 sharded lanes",
      "status": "completed",
      "progress": "generation 100/100; eval 100/100; completed shards 4/4",
      "started_at_utc8": "2026-07-30 12:20:00 UTC+8",
      "ended_at_utc8": "2026-07-30 14:28:07 UTC+8",
      "conclusion": "P8 未通过 Pareto gate: chamfer_mean rel_delta=+0.3551% better=False; chamfer_p95 rel_delta=+0.1808% better=False; hausdorff_approx rel_delta=+0.1124% better=False; fscore_1pct rel_delta=-0.5274% better=False; fscore_5pct rel_delta=-0.2963% better=False; fscore_10pct rel_delta=-0.1707% better=False Aggregate W&B: https://wandb.ai/tycr/trellis2-vggt-a80/runs/8inhg2o0",
      "output": "/home/jiachen/TRELLIS/experiments/nonorthogonal_gpt_orthoview/outputs/data_survey/vggt_spatial_adapter/train512_state_anchor_statew025/benchmark100_all_protocols",
      "wandb_group": "a80_statew025_benchmark100",
      "last_metrics": {
        "chamfer_mean_rel_delta": "+0.3551%",
        "chamfer_p95_rel_delta": "+0.1808%",
        "hausdorff_approx_rel_delta": "+0.1124%",
        "fscore_1pct_rel_delta": "-0.5274%",
        "fscore_5pct_rel_delta": "-0.2963%",
        "fscore_10pct_rel_delta": "-0.1707%"
      }
    },
    {
      "id": "statew025_val64_eval",
      "name": "Statew025 Toys4K val64 loss evaluation",
      "goal": "在 held-out Toys4K val64 上用固定 seed 评估 statew025 checkpoint 的 state-anchor loss，作为 Stage2 gate 的 validation 证据。",
      "dataset": "Toys4K val64",
      "cases": 64,
      "config": "evaluate_state_anchor_val64.py --adapter-checkpoint adapter_step_1000.pt --state-rel-cap 0.10 --state-loss-weight 0.25 --sampler-steps 12；fixed seed 20260730；logs loss/flow_loss/state_loss/state ratio to W&B.",
      "gpu": "4",
      "status": "completed",
      "progress": "64/64 evaluated; retry1 completed and synced to W&B",
      "started_at_utc8": "",
      "ended_at_utc8": "2026-07-30 13:40:43 UTC+8",
      "conclusion": "val64 completed: loss_mean=0.1385539664, flow_loss_mean=0.1373985661, state_loss_mean=0.0046215977; W&B https://wandb.ai/tycr/trellis2-vggt-a80/runs/cqv7qf8f",
      "output": "outputs/data_survey/vggt_spatial_adapter/train512_state_anchor_statew025/val64_eval"
    },
    {
      "id": "train512_preprocess_25view_correction",
      "name": "25-view correction preprocessing train512",
      "goal": "Generate 25-view renders_cond and VGGT/DINO feature cache without overwriting the completed 16-view root.",
      "dataset": "Toys4K train512",
      "cases": 512,
      "config": "render_cond.py --num_cond_views 25; cache_toys4k_vggt_features.py --render-root <25view>/renders_cond",
      "gpu": "4,5,6,7",
      "status": "running",
      "progress": "25-view train512 renders=512/512 features=512/512",
      "started_at_utc8": "2026-07-30 13:53:29 UTC+8",
      "ended_at_utc8": "",
      "conclusion": "train512 25-view renders_cond and VGGT/DINO feature cache completed.",
      "output": "/data/jiachen/trellis2_vggt_toys4k_25views/train512"
    },
    {
      "id": "train512_25view_state_anchor_statew025",
      "name": "Train512 25-view state-anchor state_loss_weight=0.25",
      "goal": "25-view correction train512 state-anchor ablation with random 2/4/6/8 views.",
      "dataset": "Toys4K train512 25-view correction",
      "cases": 512,
      "config": "state_rel_cap=0.10; state_loss_weight=0.25; W&B group=a80_train512_25view_ablation",
      "gpu": "7",
      "status": "completed",
      "progress": "1000/1000 steps",
      "started_at_utc8": "2026-07-30 17:33:32 UTC+8",
      "ended_at_utc8": "2026-07-30 18:28:35 UTC+8",
      "conclusion": "25-view ablation training completed; metrics are in train.jsonl and W&B.",
      "output": "/home/jiachen/TRELLIS/experiments/nonorthogonal_gpt_orthoview/outputs/data_survey/vggt_spatial_adapter/train512_25view_state_anchor_statew025",
      "total_steps": 1000,
      "last_metrics": {
        "loss": 0.07938607782125473,
        "flow_loss": 0.07929825782775879,
        "state_loss": 0.00035128294257447124,
        "gradient_norm": 2.1223392486572266,
        "max_final_state_ratio": 0.005648185033351183,
        "step_elapsed_sec": 1.5206280797719955,
        "total_elapsed_sec": 3212.787335728295,
        "peak_vram_bytes": 24473763840
      }
    },
    {
      "id": "train512_25view_state_anchor_cap010",
      "name": "Train512 25-view state-anchor cap=0.10",
      "goal": "25-view correction train512 state-anchor ablation with random 2/4/6/8 views.",
      "dataset": "Toys4K train512 25-view correction",
      "cases": 512,
      "config": "state_rel_cap=0.10; state_loss_weight=1.0; W&B group=a80_train512_25view_ablation",
      "gpu": "4",
      "status": "completed",
      "progress": "1000/1000 steps",
      "started_at_utc8": "2026-07-30 17:33:32 UTC+8",
      "ended_at_utc8": "2026-07-30 18:29:34 UTC+8",
      "conclusion": "25-view ablation training completed; metrics are in train.jsonl and W&B.",
      "output": "/home/jiachen/TRELLIS/experiments/nonorthogonal_gpt_orthoview/outputs/data_survey/vggt_spatial_adapter/train512_25view_state_anchor_cap010",
      "total_steps": 1000,
      "last_metrics": {
        "loss": 0.08576298505067825,
        "flow_loss": 0.07753318548202515,
        "state_loss": 0.008229796774685383,
        "gradient_norm": 0.2106255441904068,
        "max_final_state_ratio": 0.06538503617048264,
        "step_elapsed_sec": 2.645875214599073,
        "total_elapsed_sec": 3245.677091038786,
        "peak_vram_bytes": 20786970624
      }
    },
    {
      "id": "train512_25view_state_anchor_cap005",
      "name": "Train512 25-view state-anchor cap=0.05",
      "goal": "25-view correction train512 state-anchor ablation with random 2/4/6/8 views.",
      "dataset": "Toys4K train512 25-view correction",
      "cases": 512,
      "config": "state_rel_cap=0.05; state_loss_weight=1.0; W&B group=a80_train512_25view_ablation",
      "gpu": "5",
      "status": "completed",
      "progress": "1000/1000 steps",
      "started_at_utc8": "2026-07-30 17:33:32 UTC+8",
      "ended_at_utc8": "2026-07-30 18:31:35 UTC+8",
      "conclusion": "25-view ablation training completed; metrics are in train.jsonl and W&B.",
      "output": "/home/jiachen/TRELLIS/experiments/nonorthogonal_gpt_orthoview/outputs/data_survey/vggt_spatial_adapter/train512_25view_state_anchor_cap005",
      "total_steps": 1000,
      "last_metrics": {
        "loss": 0.10278216749429703,
        "flow_loss": 0.10154382139444351,
        "state_loss": 0.0012383447028696537,
        "gradient_norm": 0.5270354151725769,
        "max_final_state_ratio": 0.010822024196386337,
        "step_elapsed_sec": 1.5793226743116975,
        "total_elapsed_sec": 3330.156869927421,
        "peak_vram_bytes": 24473763840
      }
    },
    {
      "id": "train512_25view_state_anchor_cap020",
      "name": "Train512 25-view state-anchor cap=0.20",
      "goal": "25-view correction train512 state-anchor ablation with random 2/4/6/8 views.",
      "dataset": "Toys4K train512 25-view correction",
      "cases": 512,
      "config": "state_rel_cap=0.20; state_loss_weight=1.0; W&B group=a80_train512_25view_ablation",
      "gpu": "6",
      "status": "completed",
      "progress": "1000/1000 steps",
      "started_at_utc8": "2026-07-30 17:33:32 UTC+8",
      "ended_at_utc8": "2026-07-30 18:29:34 UTC+8",
      "conclusion": "25-view ablation training completed; metrics are in train.jsonl and W&B.",
      "output": "/home/jiachen/TRELLIS/experiments/nonorthogonal_gpt_orthoview/outputs/data_survey/vggt_spatial_adapter/train512_25view_state_anchor_cap020",
      "total_steps": 1000,
      "last_metrics": {
        "loss": 0.08434335142374039,
        "flow_loss": 0.08401740342378616,
        "state_loss": 0.0003259474760852754,
        "gradient_norm": 1.1814559698104858,
        "max_final_state_ratio": 0.010220397263765335,
        "step_elapsed_sec": 2.9590868996456265,
        "total_elapsed_sec": 3238.0785004328936,
        "peak_vram_bytes": 20786970624
      }
    },
    {
      "id": "val64_preprocess_25view_correction",
      "name": "25-view correction preprocessing val64",
      "goal": "Generate 25-view renders_cond and VGGT/DINO feature cache without overwriting the completed 16-view root.",
      "dataset": "Toys4K val64",
      "cases": 64,
      "config": "render_cond.py --num_cond_views 25; cache_toys4k_vggt_features.py --render-root <25view>/renders_cond",
      "gpu": "4,5,6,7",
      "status": "running",
      "progress": "25-view val64 renders=64/64 features=64/64",
      "started_at_utc8": "2026-07-30 17:26:52 UTC+8",
      "ended_at_utc8": "",
      "conclusion": "val64 25-view condition renders 和 VGGT/DINO feature cache 已完成；64 个 feature 文件已验证存在。",
      "output": "/data/jiachen/trellis2_vggt_toys4k_25views/val64"
    },
    {
      "id": "val64_25view_sidecar",
      "name": "Val64 25-view sidecar preprocessing",
      "goal": "提前生成 val64 的 25-view renders_cond 和 VGGT/DINO feature cache，减少 train512 后的串行等待。",
      "dataset": "Toys4K val64 25-view correction",
      "cases": 64,
      "config": "render_cond.py --num_cond_views 25 --world_size 4 --max_workers 1; feature cache handled by incremental 4-GPU cacher; W&B not applicable for preprocessing.",
      "gpu": "4,5,6,7",
      "status": "running",
      "progress": "render_cond25/cache sidecar on GPUs 4,5,6,7: renders=64/64 features=64/64",
      "started_at_utc8": "2026-07-30 14:46:52 UTC+8",
      "ended_at_utc8": "",
      "conclusion": "val64 25-view renders_cond and VGGT/DINO feature cache completed ahead of train512 gate.",
      "output": "/data/jiachen/trellis2_vggt_toys4k_25views/val64"
    },
    {
      "id": "a80_25view_benchmark_gate",
      "name": "25-view Benchmark100 gate selector",
      "goal": "等待四组 25-view train512 ablation 的 val64 结果，选择 val64 mean loss 最低的 checkpoint 跑 Benchmark100 2/4/6/8。",
      "dataset": "Toys4K val64 + Benchmark100",
      "cases": "4 train runs + 64 val + 100 benchmark cases x 4 protocols",
      "config": "select min val/loss mean; launch_state_anchor_benchmark_eval.py shards; W&B group=a80_train512_25view_benchmark100",
      "gpu": "4,5,6,7",
      "status": "running",
      "progress": "selected train512_25view_state_anchor_statew025 val_loss_mean=0.13727556377125438; Benchmark100 running",
      "started_at_utc8": "",
      "ended_at_utc8": "",
      "conclusion": "",
      "output": "/home/jiachen/TRELLIS/experiments/nonorthogonal_gpt_orthoview/outputs/logs/a80_25view_benchmark_gate"
    },
    {
      "id": "train512_25view_state_anchor_statew025_val64_eval",
      "name": "Train512 25-view state-anchor state_loss_weight=0.25 val64 eval",
      "goal": "固定 val64 验证集评估 25-view state-anchor checkpoint 的 loss/flow/state 指标。",
      "dataset": "Toys4K val64 25-view correction",
      "cases": 64,
      "config": "evaluate_state_anchor_val64.py; state_rel_cap=0.10; state_loss_weight=0.25; W&B group=a80_train512_25view_val64_eval",
      "gpu": "7",
      "status": "completed",
      "progress": "64/64 val cases",
      "started_at_utc8": "2026-07-30 18:28:37 UTC+8",
      "ended_at_utc8": "2026-07-30 18:33:22 UTC+8",
      "conclusion": "val64 evaluation completed; metrics are in val.jsonl/summary.json and W&B.",
      "output": "/home/jiachen/TRELLIS/experiments/nonorthogonal_gpt_orthoview/outputs/data_survey/vggt_spatial_adapter/train512_25view_state_anchor_statew025/val64_eval",
      "last_metrics": {
        "val_loss_mean": 0.13727556377125438,
        "val_flow_loss_mean": 0.1361540302314097,
        "val_state_loss_mean": 0.004486137616140695,
        "val_max_final_state_ratio_mean": 0.024968334189907182,
        "val_encoder_elapsed_sec_mean": 1.2303094402886927,
        "val_step_elapsed_sec_mean": 3.706337501105736
      }
    },
    {
      "id": "train512_25view_state_anchor_cap020_val64_eval",
      "name": "Train512 25-view state-anchor cap=0.20 val64 eval",
      "goal": "固定 val64 验证集评估 25-view state-anchor checkpoint 的 loss/flow/state 指标。",
      "dataset": "Toys4K val64 25-view correction",
      "cases": 64,
      "config": "evaluate_state_anchor_val64.py; state_rel_cap=0.20; state_loss_weight=1.0; W&B group=a80_train512_25view_val64_eval",
      "gpu": "6",
      "status": "completed",
      "progress": "64/64 val cases",
      "started_at_utc8": "2026-07-30 18:29:36 UTC+8",
      "ended_at_utc8": "2026-07-30 18:33:51 UTC+8",
      "conclusion": "val64 evaluation completed; metrics are in val.jsonl/summary.json and W&B.",
      "output": "/home/jiachen/TRELLIS/experiments/nonorthogonal_gpt_orthoview/outputs/data_survey/vggt_spatial_adapter/train512_25view_state_anchor_cap020/val64_eval",
      "last_metrics": {
        "val_loss_mean": 0.14762639024411328,
        "val_flow_loss_mean": 0.14271528809331357,
        "val_state_loss_mean": 0.004911101400466578,
        "val_max_final_state_ratio_mean": 0.022988339856965467,
        "val_encoder_elapsed_sec_mean": 1.0173219459975371,
        "val_step_elapsed_sec_mean": 2.712270970660029
      }
    },
    {
      "id": "train512_25view_state_anchor_cap010_val64_eval",
      "name": "Train512 25-view state-anchor cap=0.10 val64 eval",
      "goal": "固定 val64 验证集评估 25-view state-anchor checkpoint 的 loss/flow/state 指标。",
      "dataset": "Toys4K val64 25-view correction",
      "cases": 64,
      "config": "evaluate_state_anchor_val64.py; state_rel_cap=0.10; state_loss_weight=1.0; W&B group=a80_train512_25view_val64_eval",
      "gpu": "4",
      "status": "completed",
      "progress": "64/64 val cases",
      "started_at_utc8": "2026-07-30 18:29:37 UTC+8",
      "ended_at_utc8": "2026-07-30 18:33:56 UTC+8",
      "conclusion": "val64 evaluation completed; metrics are in val.jsonl/summary.json and W&B.",
      "output": "/home/jiachen/TRELLIS/experiments/nonorthogonal_gpt_orthoview/outputs/data_survey/vggt_spatial_adapter/train512_25view_state_anchor_cap010/val64_eval",
      "last_metrics": {
        "val_loss_mean": 0.14898873025958892,
        "val_flow_loss_mean": 0.14219566686369944,
        "val_state_loss_mean": 0.0067930627958503464,
        "val_max_final_state_ratio_mean": 0.025707812683322118,
        "val_encoder_elapsed_sec_mean": 1.004803258299944,
        "val_step_elapsed_sec_mean": 2.725034730086918
      }
    },
    {
      "id": "train512_25view_state_anchor_cap005_val64_eval",
      "name": "Train512 25-view state-anchor cap=0.05 val64 eval",
      "goal": "固定 val64 验证集评估 25-view state-anchor checkpoint 的 loss/flow/state 指标。",
      "dataset": "Toys4K val64 25-view correction",
      "cases": 64,
      "config": "evaluate_state_anchor_val64.py; state_rel_cap=0.05; state_loss_weight=1.0; W&B group=a80_train512_25view_val64_eval",
      "gpu": "5",
      "status": "completed",
      "progress": "64/64 val cases",
      "started_at_utc8": "2026-07-30 18:31:35 UTC+8",
      "ended_at_utc8": "2026-07-30 18:35:35 UTC+8",
      "conclusion": "val64 evaluation completed; metrics are in val.jsonl/summary.json and W&B.",
      "output": "/home/jiachen/TRELLIS/experiments/nonorthogonal_gpt_orthoview/outputs/data_survey/vggt_spatial_adapter/train512_25view_state_anchor_cap005/val64_eval",
      "last_metrics": {
        "val_loss_mean": 0.14626489111833507,
        "val_flow_loss_mean": 0.13960539991239784,
        "val_state_loss_mean": 0.0066594914039797,
        "val_max_final_state_ratio_mean": 0.020610111991118174,
        "val_encoder_elapsed_sec_mean": 1.0078789762337692,
        "val_step_elapsed_sec_mean": 2.746763859744533
      }
    },
    {
      "id": "a80_25view_benchmark100_protocol2",
      "name": "25-view selected Benchmark100 protocol 2",
      "goal": "评估 25-view train512 最佳 val64 checkpoint (train512_25view_state_anchor_statew025) 在 Benchmark100 protocol 2 上是否优于 TRELLIS.2 baseline。",
      "dataset": "Benchmark100: 50 GSO + 50 Toys4K",
      "cases": 100,
      "config": "run_proobjaverse_trellis2.py --mode vggt_state_anchor --steps 12；protocol 2 输入视角；4 shards x 25 cases；samples=20000。",
      "gpu": "4,5,6,7 sharded lanes",
      "status": "completed",
      "progress": "generation 100/100; eval 100/100; completed shards 4/4",
      "started_at_utc8": "",
      "ended_at_utc8": "2026-07-30 19:54:26 UTC+8",
      "conclusion": "P2 未通过 Pareto gate: chamfer_mean rel_delta=+0.2159% better=False; chamfer_p95 rel_delta=-0.2598% better=True; hausdorff_approx rel_delta=-0.0877% better=True; fscore_1pct rel_delta=+0.2876% better=True; fscore_5pct rel_delta=-0.4236% better=False; fscore_10pct rel_delta=-0.0352% better=False Aggregate W&B: https://wandb.ai/tycr/trellis2-vggt-a80/runs/m93re16o",
      "output": "/home/jiachen/TRELLIS/experiments/nonorthogonal_gpt_orthoview/outputs/data_survey/vggt_spatial_adapter/train512_25view_state_anchor_statew025/benchmark100_all_protocols_25view",
      "wandb_group": "a80_train512_25view_benchmark100",
      "last_metrics": {
        "chamfer_mean_rel_delta": "+0.2159%",
        "chamfer_p95_rel_delta": "-0.2598%",
        "hausdorff_approx_rel_delta": "-0.0877%",
        "fscore_1pct_rel_delta": "+0.2876%",
        "fscore_5pct_rel_delta": "-0.4236%",
        "fscore_10pct_rel_delta": "-0.0352%",
        "mean_shard_fscore_5pct": 0.5744714620322371
      }
    },
    {
      "id": "a80_25view_benchmark100_protocol4",
      "name": "25-view selected Benchmark100 protocol 4",
      "goal": "评估 25-view train512 最佳 val64 checkpoint (train512_25view_state_anchor_statew025) 在 Benchmark100 protocol 4 上是否优于 TRELLIS.2 baseline。",
      "dataset": "Benchmark100: 50 GSO + 50 Toys4K",
      "cases": 100,
      "config": "run_proobjaverse_trellis2.py --mode vggt_state_anchor --steps 12；protocol 4 输入视角；4 shards x 25 cases；samples=20000。",
      "gpu": "4,5,6,7 sharded lanes",
      "status": "completed",
      "progress": "generation 100/100; eval 100/100; completed shards 4/4",
      "started_at_utc8": "",
      "ended_at_utc8": "2026-07-30 19:54:26 UTC+8",
      "conclusion": "P4 未通过 Pareto gate: chamfer_mean rel_delta=+0.1286% better=False; chamfer_p95 rel_delta=+0.0929% better=False; hausdorff_approx rel_delta=-0.3498% better=True; fscore_1pct rel_delta=-0.3355% better=False; fscore_5pct rel_delta=-0.0675% better=False; fscore_10pct rel_delta=-0.0742% better=False Aggregate W&B: https://wandb.ai/tycr/trellis2-vggt-a80/runs/1jdiupul",
      "output": "/home/jiachen/TRELLIS/experiments/nonorthogonal_gpt_orthoview/outputs/data_survey/vggt_spatial_adapter/train512_25view_state_anchor_statew025/benchmark100_all_protocols_25view",
      "wandb_group": "a80_train512_25view_benchmark100",
      "last_metrics": {
        "chamfer_mean_rel_delta": "+0.1286%",
        "chamfer_p95_rel_delta": "+0.0929%",
        "hausdorff_approx_rel_delta": "-0.3498%",
        "fscore_1pct_rel_delta": "-0.3355%",
        "fscore_5pct_rel_delta": "-0.0675%",
        "fscore_10pct_rel_delta": "-0.0742%",
        "mean_shard_fscore_5pct": 0.5867304261843318
      }
    },
    {
      "id": "a80_25view_benchmark100_protocol6",
      "name": "25-view selected Benchmark100 protocol 6",
      "goal": "评估 25-view train512 最佳 val64 checkpoint (train512_25view_state_anchor_statew025) 在 Benchmark100 protocol 6 上是否优于 TRELLIS.2 baseline。",
      "dataset": "Benchmark100: 50 GSO + 50 Toys4K",
      "cases": 100,
      "config": "run_proobjaverse_trellis2.py --mode vggt_state_anchor --steps 12；protocol 6 输入视角；4 shards x 25 cases；samples=20000。",
      "gpu": "4,5,6,7 sharded lanes",
      "status": "completed",
      "progress": "generation 100/100; eval 100/100; completed shards 4/4",
      "started_at_utc8": "",
      "ended_at_utc8": "2026-07-30 19:54:26 UTC+8",
      "conclusion": "P6 未通过 Pareto gate: chamfer_mean rel_delta=-0.1682% better=True; chamfer_p95 rel_delta=+0.1831% better=False; hausdorff_approx rel_delta=+0.3127% better=False; fscore_1pct rel_delta=+1.0191% better=True; fscore_5pct rel_delta=-0.1119% better=False; fscore_10pct rel_delta=+0.0049% better=True Aggregate W&B: https://wandb.ai/tycr/trellis2-vggt-a80/runs/ndirxe2k",
      "output": "/home/jiachen/TRELLIS/experiments/nonorthogonal_gpt_orthoview/outputs/data_survey/vggt_spatial_adapter/train512_25view_state_anchor_statew025/benchmark100_all_protocols_25view",
      "wandb_group": "a80_train512_25view_benchmark100",
      "last_metrics": {
        "chamfer_mean_rel_delta": "-0.1682%",
        "chamfer_p95_rel_delta": "+0.1831%",
        "hausdorff_approx_rel_delta": "+0.3127%",
        "fscore_1pct_rel_delta": "+1.0191%",
        "fscore_5pct_rel_delta": "-0.1119%",
        "fscore_10pct_rel_delta": "+0.0049%",
        "mean_shard_fscore_5pct": 0.5871736773659547
      }
    },
    {
      "id": "a80_25view_benchmark100_protocol8",
      "name": "25-view selected Benchmark100 protocol 8",
      "goal": "评估 25-view train512 最佳 val64 checkpoint (train512_25view_state_anchor_statew025) 在 Benchmark100 protocol 8 上是否优于 TRELLIS.2 baseline。",
      "dataset": "Benchmark100: 50 GSO + 50 Toys4K",
      "cases": 100,
      "config": "run_proobjaverse_trellis2.py --mode vggt_state_anchor --steps 12；protocol 8 输入视角；4 shards x 25 cases；samples=20000。",
      "gpu": "4,5,6,7 sharded lanes",
      "status": "completed",
      "progress": "generation 100/100; eval 100/100; completed shards 4/4",
      "started_at_utc8": "",
      "ended_at_utc8": "2026-07-30 19:54:26 UTC+8",
      "conclusion": "P8 未通过 Pareto gate: chamfer_mean rel_delta=+0.1344% better=False; chamfer_p95 rel_delta=-0.0296% better=True; hausdorff_approx rel_delta=-0.0598% better=True; fscore_1pct rel_delta=+0.4114% better=True; fscore_5pct rel_delta=-0.0540% better=False; fscore_10pct rel_delta=-0.0872% better=False Aggregate W&B: https://wandb.ai/tycr/trellis2-vggt-a80/runs/yae5kcq9",
      "output": "/home/jiachen/TRELLIS/experiments/nonorthogonal_gpt_orthoview/outputs/data_survey/vggt_spatial_adapter/train512_25view_state_anchor_statew025/benchmark100_all_protocols_25view",
      "wandb_group": "a80_train512_25view_benchmark100",
      "last_metrics": {
        "chamfer_mean_rel_delta": "+0.1344%",
        "chamfer_p95_rel_delta": "-0.0296%",
        "hausdorff_approx_rel_delta": "-0.0598%",
        "fscore_1pct_rel_delta": "+0.4114%",
        "fscore_5pct_rel_delta": "-0.0540%",
        "fscore_10pct_rel_delta": "-0.0872%",
        "mean_shard_fscore_5pct": 0.5901289947657635
      }
    }
  ],
  "current_focus": "25-view correction preprocessing is running: train512 render/cache plus val64 sidecar. Four train512 25-view ablations will auto-launch on GPUs 4-7 after train512=512 features and val64=64 features are verified as metadata.view_count=25; successful training runs then launch matching val64 W&B evaluations. A Benchmark100 gate watcher is active and will select the lowest val64 mean loss checkpoint for protocols 2/4/6/8.",
  "phases": [
    {
      "id": "phase1_smoke",
      "name": "第一阶段 smoke",
      "dataset": "Toys4K smoke16",
      "cases": "16 cases",
      "goal": "验证 A80 trajectory cache、state label、budget head loss、W&B 和 Bark 链路能跑通。",
      "config": "100-step state-anchor ablations + A80.1/A80.2 schema smoke；不做最终质量声明。",
      "estimated_time": "1-3 小时",
      "status": "completed",
      "gate": "训练脚本、loss、checkpoint、W&B、Bark 均稳定。"
    },
    {
      "id": "phase2_train512",
      "name": "第二阶段正式小规模",
      "dataset": "Toys4K train512 + val64",
      "cases": "512 train / 64 val",
      "goal": "在 512-case 上验证 VGGT/state-anchor 控制器是否具备稳定训练信号，再准备 A80 frozen controller 扩展。",
      "config": "每 case 随机 2/4/6/8 输入视角，来自已有 25 render views；GPU 4-7 做 cache/预处理；训练队列为 GPU4 cap=0.10、GPU5 cap=0.05、GPU6 cap=0.20、GPU7 state_loss_weight=0.25。",
      "estimated_time": "VGGT/cache/trajectory 6-12 小时；controller 训练 8-24 小时；第一版有效结果约 1 天。",
      "status": "running",
      "gate": "val64 和 Benchmark100 上出现 Pareto 优势，或形成明确失败结论。"
    },
    {
      "id": "phase3_expand",
      "name": "第三阶段扩展",
      "dataset": "Toys4K available 3224 cases",
      "cases": "1k-3k cases",
      "goal": "在 512-case 版本有效后扩大数据规模，验证趋势是否稳健。",
      "config": "复用 phase2 通过的 controller/sampler 配置，再扩大到 1k-3k；未通过 phase2 gate 前不启动。",
      "estimated_time": "2-4 天",
      "status": "planned",
      "gate": "仅当 512-case 版本在 val 和 Benchmark100 上显示 Pareto 优势后启动。"
    }
  ],
  "selected_25view_benchmark": "/home/jiachen/TRELLIS/experiments/nonorthogonal_gpt_orthoview/outputs/data_survey/vggt_spatial_adapter/train512_25view_state_anchor_statew025/benchmark100_all_protocols_25view/selected_checkpoint.json"
}