anhtld commited on
Commit
ef60691
·
verified ·
1 Parent(s): adeadcc

Auto-sync: 2026-06-28 01:59:41 (part 2)

Browse files
results/paper_story_memo.md CHANGED
@@ -25,6 +25,7 @@ when queried on proposal geometry that matches those local counterfactuals.
25
  | Seed-0 train-split field-teacher distillation does not solve the proposal gap | direct student is 26.84%; with field scoring it is 27.65% | Negative diagnostic |
26
  | All-split field-teacher distillation does not fix checkpointing/coverage | allmap direct is 28.00%; field-guided best is 26.49% despite 100% target coverage | Negative diagnostic |
27
  | Residual family consistency is the next hypothesis | field-selected random/wrong-direction residuals have low rollout success; masked residual jobs are active | Active |
 
28
 
29
  ## Main Table Candidate
30
 
@@ -90,15 +91,21 @@ Last checked: `2026-06-28 05:47 UTC`.
90
  - `14859041`: completed CPU Apptainer unit smoke for hybrid residual+Gaussian selection.
91
  - `14859042`-`14859046`: completed hybrid residual+Gaussian jobs; K32 reaches
92
  31.30% and K64 reaches 30.90%, both below residual-only transport.
93
- - `14859141`/`14859142`: active masked residual eval/summary, scale `0.50`,
94
  excluding `residual_random_negative`.
95
- - `14859143`/`14859144`: active masked residual eval/summary, scale `0.50`,
96
  excluding `residual_random_negative` and `residual_wrong_direction`.
97
- - `14859145`/`14859146`: active masked residual eval/summary, scale `0.25`,
98
  excluding `residual_random_negative` and `residual_wrong_direction`.
99
- - `14859147`/`14859148`: active typed residual eval/summary, scale `0.50`,
100
  keeping policy/no-op/wrong-gripper residual families.
101
- - `14859149`: rebuild `paper_table_status.*` after masked residual summaries.
 
 
 
 
 
 
102
 
103
  ## Decision Rule For Masked Residual Jobs
104
 
@@ -109,3 +116,13 @@ Last checked: `2026-06-28 05:47 UTC`.
109
  residual result and present masking as a diagnostic of field over-selection.
110
  - If masks fail, keep the story focused on residual scale calibration and the
111
  larger same-state counterfactual mechanism.
 
 
 
 
 
 
 
 
 
 
 
25
  | Seed-0 train-split field-teacher distillation does not solve the proposal gap | direct student is 26.84%; with field scoring it is 27.65% | Negative diagnostic |
26
  | All-split field-teacher distillation does not fix checkpointing/coverage | allmap direct is 28.00%; field-guided best is 26.49% despite 100% target coverage | Negative diagnostic |
27
  | Residual family consistency is the next hypothesis | field-selected random/wrong-direction residuals have low rollout success; masked residual jobs are active | Active |
28
+ | Retrieval metric locality is the next hypothesis | z-score train-bank retrieval jobs are active after unit smoke `14859165` passed | Active |
29
 
30
  ## Main Table Candidate
31
 
 
91
  - `14859041`: completed CPU Apptainer unit smoke for hybrid residual+Gaussian selection.
92
  - `14859042`-`14859046`: completed hybrid residual+Gaussian jobs; K32 reaches
93
  31.30% and K64 reaches 30.90%, both below residual-only transport.
94
+ - `14859188`/`14859189`: active masked residual eval/summary, scale `0.50`,
95
  excluding `residual_random_negative`.
96
+ - `14859191`/`14859192`: active masked residual eval/summary, scale `0.50`,
97
  excluding `residual_random_negative` and `residual_wrong_direction`.
98
+ - `14859193`/`14859194`: active masked residual eval/summary, scale `0.25`,
99
  excluding `residual_random_negative` and `residual_wrong_direction`.
100
+ - `14859195`/`14859196`: active typed residual eval/summary, scale `0.50`,
101
  keeping policy/no-op/wrong-gripper residual families.
102
+ - `14859203`: rebuild `paper_table_status.*` after all masked and z-score summaries.
103
+ - `14859165`: completed Apptainer unit smoke for z-score retrieval metric.
104
+ - `14859197`/`14859198`: active z-score retrieval eval/summary, scale `0.50`.
105
+ - `14859199`/`14859200`: active z-score retrieval eval/summary, scale `0.50`,
106
+ excluding `residual_random_negative` and `residual_wrong_direction`.
107
+ - `14859201`/`14859202`: active z-score retrieval eval/summary, scale `0.25`,
108
+ excluding `residual_random_negative` and `residual_wrong_direction`.
109
 
110
  ## Decision Rule For Masked Residual Jobs
111
 
 
116
  residual result and present masking as a diagnostic of field over-selection.
117
  - If masks fail, keep the story focused on residual scale calibration and the
118
  larger same-state counterfactual mechanism.
119
+
120
+ ## Decision Rule For Z-Score Retrieval Jobs
121
+
122
+ - If z-score retrieval beats 33.33%, promote state-normalized tangent retrieval
123
+ as the best deployment-clean bridge.
124
+ - If z-score masks only help with the anti-goal residual exclusions, frame
125
+ retrieval locality and residual family consistency as two sides of the same
126
+ tangent-transport bottleneck.
127
+ - If z-score retrieval fails, keep the raw nearest-state residual result as the
128
+ clean bridge and treat metric normalization as a negative ablation.
results/paper_table_status.json CHANGED
@@ -298,7 +298,7 @@
298
  "expert_proposal": "no",
299
  "story_role": "state-normalized tangent retrieval ablation",
300
  "fallback_success": null,
301
- "pending_job": "",
302
  "path_exists": false,
303
  "status": "pending",
304
  "success": null,
@@ -317,7 +317,7 @@
317
  "expert_proposal": "no",
318
  "story_role": "state-normalized typed tangent retrieval ablation",
319
  "fallback_success": null,
320
- "pending_job": "",
321
  "path_exists": false,
322
  "status": "pending",
323
  "success": null,
@@ -336,7 +336,7 @@
336
  "expert_proposal": "no",
337
  "story_role": "state-normalized typed tangent retrieval ablation",
338
  "fallback_success": null,
339
- "pending_job": "",
340
  "path_exists": false,
341
  "status": "pending",
342
  "success": null,
 
298
  "expert_proposal": "no",
299
  "story_role": "state-normalized tangent retrieval ablation",
300
  "fallback_success": null,
301
+ "pending_job": "14859166/14859167",
302
  "path_exists": false,
303
  "status": "pending",
304
  "success": null,
 
317
  "expert_proposal": "no",
318
  "story_role": "state-normalized typed tangent retrieval ablation",
319
  "fallback_success": null,
320
+ "pending_job": "14859168/14859169",
321
  "path_exists": false,
322
  "status": "pending",
323
  "success": null,
 
336
  "expert_proposal": "no",
337
  "story_role": "state-normalized typed tangent retrieval ablation",
338
  "fallback_success": null,
339
+ "pending_job": "14859170/14859171",
340
  "path_exists": false,
341
  "status": "pending",
342
  "success": null,
results/paper_table_status.md CHANGED
@@ -18,9 +18,9 @@ Baseline h=16 policy: 29.74%
18
  | retrieval_residual | Train-state counterfactual residual retrieval | complete | 32.12% | +2.38 pp | yes | no | no | transferable local tangent proposal |
19
  | retrieval_residual_scale025 | Train-state residual retrieval, scale 0.25 | complete | 32.93% | +3.19 pp | yes | no | no | tangent transport scale ablation |
20
  | retrieval_residual_scale050 | Train-state residual retrieval, scale 0.50 | complete | 33.33% | +3.59 pp | yes | no | no | tangent transport scale ablation |
21
- | retrieval_residual_scale050_zscore | Train-state residual retrieval, scale 0.50, z-score retrieval | pending | pending | pending | yes | no | no | state-normalized tangent retrieval ablation |
22
- | retrieval_residual_scale050_zscore_no_random_wrongdir | Train-state residual retrieval, scale 0.50, z-score retrieval, no random/wrong-direction residuals | pending | pending | pending | yes | no | no | state-normalized typed tangent retrieval ablation |
23
- | retrieval_residual_scale025_zscore_no_random_wrongdir | Train-state residual retrieval, scale 0.25, z-score retrieval, no random/wrong-direction residuals | pending | pending | pending | yes | no | no | state-normalized typed tangent retrieval ablation |
24
  | retrieval_residual_scale050_no_random | Train-state residual retrieval, scale 0.50, no random residuals | pending 14859141/14859142 | pending | pending | yes | no | no | anti-goal residual family mask ablation |
25
  | retrieval_residual_scale050_no_random_wrongdir | Train-state residual retrieval, scale 0.50, no random/wrong-direction residuals | pending 14859143/14859144 | pending | pending | yes | no | no | anti-goal residual family mask ablation |
26
  | retrieval_residual_scale025_no_random_wrongdir | Train-state residual retrieval, scale 0.25, no random/wrong-direction residuals | pending 14859145/14859146 | pending | pending | yes | no | no | anti-goal residual family mask ablation |
 
18
  | retrieval_residual | Train-state counterfactual residual retrieval | complete | 32.12% | +2.38 pp | yes | no | no | transferable local tangent proposal |
19
  | retrieval_residual_scale025 | Train-state residual retrieval, scale 0.25 | complete | 32.93% | +3.19 pp | yes | no | no | tangent transport scale ablation |
20
  | retrieval_residual_scale050 | Train-state residual retrieval, scale 0.50 | complete | 33.33% | +3.59 pp | yes | no | no | tangent transport scale ablation |
21
+ | retrieval_residual_scale050_zscore | Train-state residual retrieval, scale 0.50, z-score retrieval | pending 14859166/14859167 | pending | pending | yes | no | no | state-normalized tangent retrieval ablation |
22
+ | retrieval_residual_scale050_zscore_no_random_wrongdir | Train-state residual retrieval, scale 0.50, z-score retrieval, no random/wrong-direction residuals | pending 14859168/14859169 | pending | pending | yes | no | no | state-normalized typed tangent retrieval ablation |
23
+ | retrieval_residual_scale025_zscore_no_random_wrongdir | Train-state residual retrieval, scale 0.25, z-score retrieval, no random/wrong-direction residuals | pending 14859170/14859171 | pending | pending | yes | no | no | state-normalized typed tangent retrieval ablation |
24
  | retrieval_residual_scale050_no_random | Train-state residual retrieval, scale 0.50, no random residuals | pending 14859141/14859142 | pending | pending | yes | no | no | anti-goal residual family mask ablation |
25
  | retrieval_residual_scale050_no_random_wrongdir | Train-state residual retrieval, scale 0.50, no random/wrong-direction residuals | pending 14859143/14859144 | pending | pending | yes | no | no | anti-goal residual family mask ablation |
26
  | retrieval_residual_scale025_no_random_wrongdir | Train-state residual retrieval, scale 0.25, no random/wrong-direction residuals | pending 14859145/14859146 | pending | pending | yes | no | no | anti-goal residual family mask ablation |
scripts/build_paper_table_status.py CHANGED
@@ -173,6 +173,7 @@ SPECS = [
173
  same_state_proposals="no",
174
  expert_proposal="no",
175
  story_role="state-normalized tangent retrieval ablation",
 
176
  ),
177
  ResultSpec(
178
  key="retrieval_residual_scale050_zscore_no_random_wrongdir",
@@ -182,6 +183,7 @@ SPECS = [
182
  same_state_proposals="no",
183
  expert_proposal="no",
184
  story_role="state-normalized typed tangent retrieval ablation",
 
185
  ),
186
  ResultSpec(
187
  key="retrieval_residual_scale025_zscore_no_random_wrongdir",
@@ -191,6 +193,7 @@ SPECS = [
191
  same_state_proposals="no",
192
  expert_proposal="no",
193
  story_role="state-normalized typed tangent retrieval ablation",
 
194
  ),
195
  ResultSpec(
196
  key="retrieval_residual_scale050_no_random",
@@ -200,7 +203,7 @@ SPECS = [
200
  same_state_proposals="no",
201
  expert_proposal="no",
202
  story_role="anti-goal residual family mask ablation",
203
- pending_job="14859141/14859142",
204
  ),
205
  ResultSpec(
206
  key="retrieval_residual_scale050_no_random_wrongdir",
@@ -210,7 +213,7 @@ SPECS = [
210
  same_state_proposals="no",
211
  expert_proposal="no",
212
  story_role="anti-goal residual family mask ablation",
213
- pending_job="14859143/14859144",
214
  ),
215
  ResultSpec(
216
  key="retrieval_residual_scale025_no_random_wrongdir",
@@ -220,7 +223,7 @@ SPECS = [
220
  same_state_proposals="no",
221
  expert_proposal="no",
222
  story_role="anti-goal residual family mask ablation",
223
- pending_job="14859145/14859146",
224
  ),
225
  ResultSpec(
226
  key="retrieval_residual_scale050_safe_types",
@@ -230,7 +233,7 @@ SPECS = [
230
  same_state_proposals="no",
231
  expert_proposal="no",
232
  story_role="typed tangent-family mask ablation",
233
- pending_job="14859147/14859148",
234
  ),
235
  ResultSpec(
236
  key="retrieval_residual_scale075",
 
173
  same_state_proposals="no",
174
  expert_proposal="no",
175
  story_role="state-normalized tangent retrieval ablation",
176
+ pending_job="14859197/14859198",
177
  ),
178
  ResultSpec(
179
  key="retrieval_residual_scale050_zscore_no_random_wrongdir",
 
183
  same_state_proposals="no",
184
  expert_proposal="no",
185
  story_role="state-normalized typed tangent retrieval ablation",
186
+ pending_job="14859199/14859200",
187
  ),
188
  ResultSpec(
189
  key="retrieval_residual_scale025_zscore_no_random_wrongdir",
 
193
  same_state_proposals="no",
194
  expert_proposal="no",
195
  story_role="state-normalized typed tangent retrieval ablation",
196
+ pending_job="14859201/14859202",
197
  ),
198
  ResultSpec(
199
  key="retrieval_residual_scale050_no_random",
 
203
  same_state_proposals="no",
204
  expert_proposal="no",
205
  story_role="anti-goal residual family mask ablation",
206
+ pending_job="14859188/14859189",
207
  ),
208
  ResultSpec(
209
  key="retrieval_residual_scale050_no_random_wrongdir",
 
213
  same_state_proposals="no",
214
  expert_proposal="no",
215
  story_role="anti-goal residual family mask ablation",
216
+ pending_job="14859191/14859192",
217
  ),
218
  ResultSpec(
219
  key="retrieval_residual_scale025_no_random_wrongdir",
 
223
  same_state_proposals="no",
224
  expert_proposal="no",
225
  story_role="anti-goal residual family mask ablation",
226
+ pending_job="14859193/14859194",
227
  ),
228
  ResultSpec(
229
  key="retrieval_residual_scale050_safe_types",
 
233
  same_state_proposals="no",
234
  expert_proposal="no",
235
  story_role="typed tangent-family mask ablation",
236
+ pending_job="14859195/14859196",
237
  ),
238
  ResultSpec(
239
  key="retrieval_residual_scale075",
scripts/slurm/smoke_retrieval_metric_unit.sbatch ADDED
@@ -0,0 +1,123 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/bin/bash
2
+ #SBATCH --job-name=smoke_retrieval_metric
3
+ #SBATCH --account=def-yalda
4
+ #SBATCH --nodes=1
5
+ #SBATCH --ntasks=1
6
+ #SBATCH --cpus-per-task=1
7
+ #SBATCH --mem=1G
8
+ #SBATCH --time=00:05:00
9
+ #SBATCH --output=outputs/hpc/logs/%x_%j.out
10
+ #SBATCH --error=outputs/hpc/logs/%x_%j.err
11
+
12
+ set -euo pipefail
13
+
14
+ PROJECT_DIR="${PROJECT_DIR:-$SLURM_SUBMIT_DIR}"
15
+ SCRATCH_ROOT="/scratch/$USER/dovla"
16
+ SIF="${SIF:-$SCRATCH_ROOT/containers/pytorch_2.7.1_cuda12.8.sif}"
17
+ PYTHON="${PYTHON:-$SCRATCH_ROOT/envs/maniskill/bin/python}"
18
+
19
+ module load StdEnv/2023 apptainer/1.4.5
20
+ cd "$PROJECT_DIR"
21
+ mkdir -p outputs/hpc/logs
22
+
23
+ export OMP_NUM_THREADS=1
24
+ export OPENBLAS_NUM_THREADS=1
25
+ export MKL_NUM_THREADS=1
26
+ export DOVLA_TORCH_THREADS=1
27
+
28
+ apptainer exec \
29
+ --env "OMP_NUM_THREADS=1,OPENBLAS_NUM_THREADS=1,MKL_NUM_THREADS=1,DOVLA_TORCH_THREADS=1,PYTHONDONTWRITEBYTECODE=1" \
30
+ -B "$PROJECT_DIR:$PROJECT_DIR" \
31
+ -B "/scratch/$USER:/scratch/$USER" \
32
+ "$SIF" "$PYTHON" - <<'PY'
33
+ from types import SimpleNamespace
34
+ from pathlib import Path
35
+
36
+ import numpy as np
37
+
38
+ from dovla_cil.data.schema import ActionChunk
39
+ from dovla_cil.eval.maniskill_policy_rollout import (
40
+ _RolloutCase,
41
+ _attach_retrieved_residual_candidates,
42
+ )
43
+
44
+
45
+ def record(group_id, candidate_type, action_value, feature):
46
+ return SimpleNamespace(
47
+ group_id=group_id,
48
+ task_id="PickCube-v1",
49
+ candidate_type=candidate_type,
50
+ record_id=f"{group_id}-{candidate_type}-{action_value}",
51
+ observation_inline={"features": feature},
52
+ action_chunk=ActionChunk(
53
+ representation="continuous",
54
+ horizon=1,
55
+ values=[[action_value, 0.0]],
56
+ ),
57
+ )
58
+
59
+
60
+ groups = {
61
+ "train_a": [
62
+ record("train_a", "expert", 1.0, [0.0, 0.0]),
63
+ record("train_a", "near_miss", 1.1, [0.0, 0.0]),
64
+ ],
65
+ "train_b": [
66
+ record("train_b", "expert", 2.0, [10.0, 1.0]),
67
+ record("train_b", "near_miss", 2.2, [10.0, 1.0]),
68
+ ],
69
+ "train_c": [
70
+ record("train_c", "expert", 3.0, [11.0, 1.0]),
71
+ record("train_c", "near_miss", 3.3, [11.0, 1.0]),
72
+ ],
73
+ "heldout": [
74
+ record("heldout", "expert", 9.0, [0.0, 1.0]),
75
+ record("heldout", "near_miss", 9.9, [0.0, 1.0]),
76
+ ],
77
+ }
78
+ dataset = SimpleNamespace(
79
+ group_ids=list(groups),
80
+ get_group=lambda group_id: groups[group_id],
81
+ )
82
+ case = _RolloutCase(
83
+ group_id="heldout",
84
+ task_id="PickCube-v1",
85
+ source_dataset=Path("."),
86
+ state={},
87
+ observation={"features": [0.0, 1.0]},
88
+ instruction="pick",
89
+ oracle_score=1.0,
90
+ oracle_success=True,
91
+ expert_score=1.0,
92
+ expert_success=True,
93
+ best_action_values=[[9.9, 0.0]],
94
+ candidate_action_values=[],
95
+ candidate_types=[],
96
+ )
97
+
98
+ [raw_attached] = _attach_retrieved_residual_candidates(
99
+ dataset,
100
+ [case],
101
+ heldout_group_ids=["heldout"],
102
+ obs_dim=2,
103
+ observation_mode="state",
104
+ retrieval_neighbors=1,
105
+ retrieval_metric="raw",
106
+ )
107
+ [zscore_attached] = _attach_retrieved_residual_candidates(
108
+ dataset,
109
+ [case],
110
+ heldout_group_ids=["heldout"],
111
+ obs_dim=2,
112
+ observation_mode="state",
113
+ retrieval_neighbors=1,
114
+ retrieval_metric="zscore",
115
+ )
116
+
117
+ assert raw_attached.candidate_source_group_id == "train_a", raw_attached
118
+ assert zscore_attached.candidate_source_group_id == "train_b", zscore_attached
119
+ expected = np.asarray([[[0.0, 0.0]], [[0.2, 0.0]]], dtype=np.float32)
120
+ actual = np.asarray(zscore_attached.candidate_action_values, dtype=np.float32)
121
+ assert np.allclose(actual, expected), actual
122
+ print({"status": "ok", "raw": raw_attached.candidate_source_group_id, "zscore": zscore_attached.candidate_source_group_id})
123
+ PY