src/mcss/mechanism_pilot/rgbd_width_carrier.py
"""V12: carrier width 64 for completion, on the V11 C1 recipe fixed before any V11 result.
PLAN_BEFORE_V11_RESULTS.md runs V12 only if the V11 EVAL-V3 COMPLETION_GAIN point estimate is
> 0. C0 retrains the V11 C1 recipe at width 32 (a machinery control that must equal V11 C1
bit-for-bit); C1 is the same recipe (TRAIN72, 32^3, CONTEXT_DEPTH bounds, the frozen V2 C1
loss, 6000 steps, the V11 extra-view rule) with hidden_dim 64 and expansion_dim 128. The primary
EVAL-V4 control is V11 C1's own selected checkpoints, loaded with the V11 loader. Every module
width follows CarrierConfig, so the V8 computation, state construction and loss are reused;
only the frozen width guard is generalized to the two V12 widths.
"""
from __future__ import annotations
from dataclasses import asdict
from math import prod
from pathlib import Path
import torch
from mcss.dynamic.config import CarrierConfig
from mcss.dynamic.types import OnlineObservation, hash_value
from mcss.mechanism_pilot import rgbd_completion_carrier as v11
from mcss.mechanism_pilot import rgbd_evidence_carrier as v5
from mcss.mechanism_pilot import rgbd_resolution_carrier as v8
from mcss.mechanism_pilot.dense_evidence_carrier import _Materializer
from mcss.mechanism_pilot.small_training import sha
from mcss.training.grounded import build_grounded_state
EXPERIMENT = "EXP-3D-RGBD-WIDTH-V12"
SCHEMA = "mcss.rgbd_width_carrier.v12"
GRID = v11.GRID
EXTRA_MAX = v11.EXTRA_MAX
EXTRA_SEED_OFFSET = v11.EXTRA_SEED_OFFSET
VARIANT_SPECS = {
"C0": {"label": "WIDTH32", "hidden": 32, "expansion": 64, "model": "C1", "train": "TRAIN72"},
"C1": {"label": "WIDTH64", "hidden": 64, "expansion": 128, "model": "C1", "train": "TRAIN72"},
}
VARIANTS = tuple(VARIANT_SPECS)
PRIMARY_PAIR = ("C0", "C1")
V8_LOSS_VARIANT = v11.V8_LOSS_VARIANT
extra_count = v11.extra_count
with_extra_views = v11.with_extra_views
parameter_hash = v5.parameter_hash
train_records = v8.train_records
load_v11_checkpoint = v11.load_checkpoint
__all__ = [
"EXPERIMENT",
"EXTRA_MAX",
"EXTRA_SEED_OFFSET",
"GRID",
"PRIMARY_PAIR",
"VARIANTS",
"VARIANT_SPECS",
"build_state",
"carrier_config",
"extra_count",
"load_checkpoint",
"load_v11_checkpoint",
"make_carrier",
"parameter_hash",
"save_checkpoint",
"scene_data",
"train_records",
"training_loss",
"with_extra_views",
]
def _check_config(config):
widths = {(8, s["hidden"], s["expansion"]) for s in VARIANT_SPECS.values()}
if (
tuple(config.grid_size) != (GRID, GRID, GRID)
or (config.feature_dim, config.hidden_dim, config.expansion_dim) not in widths
or config.token_count != prod(config.grid_size)
):
raise ValueError("A registered V12 width at 32^3 (one candidate per voxel) is required")
def carrier_config(variant):
spec = VARIANT_SPECS[variant]
return CarrierConfig(
grid_size=(GRID, GRID, GRID),
token_count=GRID**3,
hidden_dim=spec["hidden"],
expansion_dim=spec["expansion"],
)
def make_carrier(variant, seed, device, near=None, far=None):
"""The V8 resolution carrier at the variant's width; at width 32 this is the V11 C1 draw."""
del near, far
torch.manual_seed(seed)
if torch.cuda.is_available():
torch.cuda.manual_seed_all(seed)
return v8.ResolutionRGBDCarrier(carrier_config(variant)).to(device)
def build_state(carrier, context, bounds, episode_id):
"""The V8 build_state with the width guard generalized to the registered V12 widths."""
if not isinstance(context, v5.RGBDContext):
raise TypeError("V12 states are built from an RGBDContext")
if not isinstance(carrier, v8.ResolutionRGBDCarrier):
raise TypeError("V8 resolution carrier required")
_check_config(carrier.config)
observations = tuple(context)
if not observations or any(type(o) is not OnlineObservation for o in observations):
raise TypeError("Only RGB-camera OnlineObservation values may construct state")
bounds = torch.as_tensor(bounds, device=carrier._bounds.device, dtype=carrier._bounds.dtype)
if bounds.shape not in ((2, 3), (1, 2, 3)) or bounds.requires_grad:
raise ValueError("Frozen nonlearned bounds must have shape [2,3] or [1,2,3]")
bounds = bounds.reshape(1, 2, 3).detach().clone()
if not torch.isfinite(bounds).all() or not (bounds[:, 1] > bounds[:, 0]).all():
raise ValueError("Finite ordered bounds required")
fractions = (carrier._candidate_normalized_xyz + 1) * 0.5
points = bounds[:, 0] + fractions * (bounds[:, 1] - bounds[:, 0])
wrapped = _Materializer(carrier)
replacements = {"carrier._bounds": bounds, "carrier._candidate_points": points}
class ContextOnlyAdapter:
encode = carrier.encode
initial_fast = carrier.initial_fast
@staticmethod
def materialize(cache, fast):
return torch.func.functional_call(wrapped, replacements, (cache, fast), strict=False)
carrier._pending_depth = (
context.frame_ids,
context.depths.to(device=carrier._bounds.device, dtype=torch.float32),
)
try:
return build_grounded_state(ContextOnlyAdapter(), observations, episode_id)
finally:
carrier._pending_depth = None
def training_loss(state, local_cameras, rgb, depth, indices, variant):
"""The frozen V2 C1 loss at 32^3 (surface band at the frozen 16-grid spacing)."""
if variant not in VARIANT_SPECS:
raise KeyError(variant)
return v8.training_loss(state, local_cameras, rgb, depth, indices, V8_LOSS_VARIANT)
def scene_data(variant):
del variant
return v8.SCENE_DATA["CONTEXT_DEPTH"]
def save_checkpoint(path, carrier, *, variant, seed, step, lock_sha256):
payload = {
"schema": SCHEMA,
"config": asdict(carrier.config),
"carrier": {k: v.detach().cpu() for k, v in carrier.state_dict().items()},
"depth_bypass": True,
"variant": variant,
"seed": seed,
"step": step,
"lock_sha256": lock_sha256,
"test_time_input": "RGB+DEPTH+CAMERA",
"writer_trained": False,
}
path = Path(path)
if path.exists():
raise FileExistsError(path)
torch.save(payload, path)
restored, _ = load_checkpoint(path, "cpu")
if hash_value(restored.state_dict()) != hash_value(payload["carrier"]):
raise RuntimeError("Checkpoint restore mismatch")
return sha(path)
def load_checkpoint(path, device):
payload = torch.load(path, map_location=device, weights_only=True)
if payload.get("schema") != SCHEMA or payload.get("writer_trained"):
raise PermissionError("V12 static RGB-D width carrier schema required")
config = CarrierConfig(**payload["config"])
_check_config(config)
if not payload["depth_bypass"] or not any(k.startswith("depth_") for k in payload["carrier"]):
raise PermissionError("V12 checkpoints always carry the measured-depth bypass")
model = v8.ResolutionRGBDCarrier(config).to(device)
model.load_state_dict(payload["carrier"], strict=True)
return model, payload