square_real60_r30val diffusion checkpoints
Diffusion-policy behavior cloning on real Franka demonstrations of the Square (nut-on-peg)
task, 84px, 1000 epochs, seq_length 16. The dataset holds 65 demonstrations / 27,096 frames;
mask/train is 60 of them and mask/valid the 5 held out (demo_60-demo_64).
There is no simulator behind this dataset, so no success rate is reported here. The only training signal is the diffusion action MSE on those 5 held-out demos.
Arms
All three share one backbone, one config and one GPU generation (a40); they differ only in the auxiliary objective attached to the visual encoder.
| folder | aux objective |
|---|---|
baseline/ |
none |
aux_world_frame/ |
object pose + yaw in the world frame (--aux_pose --aux_rotation --aux_rotation_fold 1) |
aux_eef_frame/ |
the same pose in the gripper frame -- position residual + relative yaw, invariant to global z-rotation (--aux_eef_frame --aux_rotation_fold 1) |
Each aux head is 3 layers. obs/object is FoundationPose tracking, not ground truth: 1.88% of
frames carry obs/aux_valid = 0 and are masked out of the aux loss and its target
standardization. aux_valid is read straight from the hdf5 and is never a policy input.
Validation
Loss is logged before the aux term is added to it (diffusion_policy.py, l2_loss), so the
number below is the action loss for every arm and the three are directly comparable.
| arm | best val loss | at epoch | val loss @ 1000 |
|---|---|---|---|
| baseline | 0.0972 | 21 | 0.3620 |
| aux_world_frame | 0.1016 | 31 | 0.5123 |
| aux_eef_frame | 0.1050 | 31 | 0.4572 |
Validation bottoms out around epoch 21-31 and rises monotonically for the remaining ~970 epochs -- 60 training demonstrations over 1000 epochs is what that looks like. The three minima are not in this repo: they do not fall on the epoch grid below, and are on cluster scratch only.
On this metric the baseline is ahead of both aux arms, by 0.004-0.008. Do not read that as a result either way: action MSE on 5 real demonstrations correlates weakly with real-robot success, which is a separate experiment on hardware.
Epochs
model_epoch_{100,200,...,1000}.pth -- 10 per arm. Checkpoints carry optimizer state, so each is
~1.57 GiB. Every one of these is well past the validation minimum.