Views
No views yet
coffee_d0 (arm F2)Q(s, a) from a residual reinforcement-learning run on MimicGen
coffee_d0. A frozen flow-matching multi-task DiT policy proposes an action chunk; a small residual
actor corrects it; this ensemble of 10 critics scores the result. Only the critic is documented here
— the actor is present in the checkpoint but is not the point of this upload.| state | 66-dim observation.state, normalised (see below) |
| action | one 8-step chunk of 7-dim actions, flattened row-major to 56 dims (flat[t*7 + d]) |
| output | 10 scalar values; the conservative reduction is min over the ensemble |
| architecture | 10 × Linear(122,256) → LayerNorm → Mish ×3 → Linear(256,1) |
q01/q99 from the coffee_d0 demonstration dataset, shipped here as
state_scaler.json:scaled = clip(2 * (s - q01) / max(q99 - q01, 1e-6) - 1, -5, 5)gamma = 0.99, step_penalty = 0.0, tau = 0.01. The only reward is +1 on reaching the
success frame. So the quantity Q estimates has a closed form on any recorded trajectory:G_t = 0.99 ** (frames from t to the first success frame) if the episode succeeds
G_t = 0 if it does not[0, 1]. Values are not
comparable to a critic trained with a nonzero step penalty.1import json, torch
2
3ckpt = torch.load("critic_300k.pt", map_location="cpu", weights_only=False)
4print(ckpt["config"]["gamma"], ckpt["env_steps"]) # 0.99 300003
5
6# Rebuild the ensemble (see CriticEnsemble / MLP in the source repo) and load strictly:
7critics.load_state_dict(ckpt["critics"]) # 140 tensors, 10 members
8critics.eval()
9
10scaler = json.load(open("state_scaler.json"))
11q = critics(state, chunk).min(dim=0).values # conservative reductionconfig, actor, critics, target_critics, env_steps, updates, extra.
config predates the critic_hidden field, so it reads None; the trained width is 256, and a
strict load_state_dict is the real check that your architecture matches.| pearson | spearman | MAE | |
|---|---|---|---|
| all chunks | 0.759 | 0.607 | 0.1250 |
| success chunks only | 0.902 | 0.889 | 0.0458 |
V is 0.908 on success chunks and 0.567 on failure chunks.coffee_d0; the state layout is
task-specific and the weights will load but mean nothing on another task.