anhtld commited on
Commit
dbcbddf
·
verified ·
1 Parent(s): 43bf215

Auto-sync: 2026-06-29 06:36:52 (part 2)

Browse files
scripts/eval_maniskill_policy_rollout.py CHANGED
@@ -136,6 +136,13 @@ def main(argv: list[str] | None = None) -> int:
136
  help="Minimum measured train-source progress for an individual residual candidate to "
137
  "be eligible in retrieval_residual mode. The policy_residual fallback is always kept.",
138
  )
 
 
 
 
 
 
 
139
  parser.add_argument(
140
  "--retrieval-residual-source-progress-bonus-scale",
141
  type=float,
@@ -150,6 +157,13 @@ def main(argv: list[str] | None = None) -> int:
150
  help="Scale for adding a train-source reward-score prior to each retrieved residual "
151
  "candidate before field selection. Score is progress plus terminal success.",
152
  )
 
 
 
 
 
 
 
153
  parser.add_argument(
154
  "--retrieval-residual-action-l2-penalty",
155
  type=float,
@@ -249,12 +263,16 @@ def main(argv: list[str] | None = None) -> int:
249
  retrieval_metric=args.retrieval_metric,
250
  retrieval_type_min_success=args.retrieval_type_min_success,
251
  retrieval_residual_min_source_progress=args.retrieval_residual_min_source_progress,
 
252
  retrieval_residual_source_progress_bonus_scale=(
253
  args.retrieval_residual_source_progress_bonus_scale
254
  ),
255
  retrieval_residual_source_score_bonus_scale=(
256
  args.retrieval_residual_source_score_bonus_scale
257
  ),
 
 
 
258
  retrieval_residual_action_l2_penalty=args.retrieval_residual_action_l2_penalty,
259
  retrieval_residual_scale=args.retrieval_residual_scale,
260
  retrieval_residual_scales=retrieval_residual_scales,
 
136
  help="Minimum measured train-source progress for an individual residual candidate to "
137
  "be eligible in retrieval_residual mode. The policy_residual fallback is always kept.",
138
  )
139
+ parser.add_argument(
140
+ "--retrieval-residual-min-source-advantage",
141
+ type=float,
142
+ default=-1.0e9,
143
+ help="Minimum source reward-score advantage over the source anchor for an individual "
144
+ "residual candidate. The default disables advantage gating.",
145
+ )
146
  parser.add_argument(
147
  "--retrieval-residual-source-progress-bonus-scale",
148
  type=float,
 
157
  help="Scale for adding a train-source reward-score prior to each retrieved residual "
158
  "candidate before field selection. Score is progress plus terminal success.",
159
  )
160
+ parser.add_argument(
161
+ "--retrieval-residual-source-advantage-bonus-scale",
162
+ type=float,
163
+ default=0.0,
164
+ help="Scale for adding a train-source reward-score advantage prior relative to the "
165
+ "source residual anchor action.",
166
+ )
167
  parser.add_argument(
168
  "--retrieval-residual-action-l2-penalty",
169
  type=float,
 
263
  retrieval_metric=args.retrieval_metric,
264
  retrieval_type_min_success=args.retrieval_type_min_success,
265
  retrieval_residual_min_source_progress=args.retrieval_residual_min_source_progress,
266
+ retrieval_residual_min_source_advantage=args.retrieval_residual_min_source_advantage,
267
  retrieval_residual_source_progress_bonus_scale=(
268
  args.retrieval_residual_source_progress_bonus_scale
269
  ),
270
  retrieval_residual_source_score_bonus_scale=(
271
  args.retrieval_residual_source_score_bonus_scale
272
  ),
273
+ retrieval_residual_source_advantage_bonus_scale=(
274
+ args.retrieval_residual_source_advantage_bonus_scale
275
+ ),
276
  retrieval_residual_action_l2_penalty=args.retrieval_residual_action_l2_penalty,
277
  retrieval_residual_scale=args.retrieval_residual_scale,
278
  retrieval_residual_scales=retrieval_residual_scales,
scripts/slurm/eval_maniskill_policy_rollout.sbatch CHANGED
@@ -54,8 +54,10 @@ RETRIEVAL_NEIGHBORS="${RETRIEVAL_NEIGHBORS:-1}"
54
  RETRIEVAL_METRIC="${RETRIEVAL_METRIC:-raw}"
55
  RETRIEVAL_TYPE_MIN_SUCCESS="${RETRIEVAL_TYPE_MIN_SUCCESS:-0.0}"
56
  RETRIEVAL_RESIDUAL_MIN_SOURCE_PROGRESS="${RETRIEVAL_RESIDUAL_MIN_SOURCE_PROGRESS:-0.0}"
 
57
  RETRIEVAL_RESIDUAL_SOURCE_PROGRESS_BONUS_SCALE="${RETRIEVAL_RESIDUAL_SOURCE_PROGRESS_BONUS_SCALE:-0.0}"
58
  RETRIEVAL_RESIDUAL_SOURCE_SCORE_BONUS_SCALE="${RETRIEVAL_RESIDUAL_SOURCE_SCORE_BONUS_SCALE:-0.0}"
 
59
  RETRIEVAL_RESIDUAL_ACTION_L2_PENALTY="${RETRIEVAL_RESIDUAL_ACTION_L2_PENALTY:-0.0}"
60
  RETRIEVAL_RESIDUAL_SCALE="${RETRIEVAL_RESIDUAL_SCALE:-1.0}"
61
  RETRIEVAL_RESIDUAL_SCALES="${RETRIEVAL_RESIDUAL_SCALES:-}"
@@ -123,8 +125,10 @@ apptainer exec --nv \
123
  --retrieval-metric "$RETRIEVAL_METRIC" \
124
  --retrieval-type-min-success "$RETRIEVAL_TYPE_MIN_SUCCESS" \
125
  --retrieval-residual-min-source-progress "$RETRIEVAL_RESIDUAL_MIN_SOURCE_PROGRESS" \
 
126
  --retrieval-residual-source-progress-bonus-scale "$RETRIEVAL_RESIDUAL_SOURCE_PROGRESS_BONUS_SCALE" \
127
  --retrieval-residual-source-score-bonus-scale "$RETRIEVAL_RESIDUAL_SOURCE_SCORE_BONUS_SCALE" \
 
128
  --retrieval-residual-action-l2-penalty "$RETRIEVAL_RESIDUAL_ACTION_L2_PENALTY" \
129
  --retrieval-residual-scale "$RETRIEVAL_RESIDUAL_SCALE" \
130
  --retrieval-residual-scales "$RETRIEVAL_RESIDUAL_SCALES" \
 
54
  RETRIEVAL_METRIC="${RETRIEVAL_METRIC:-raw}"
55
  RETRIEVAL_TYPE_MIN_SUCCESS="${RETRIEVAL_TYPE_MIN_SUCCESS:-0.0}"
56
  RETRIEVAL_RESIDUAL_MIN_SOURCE_PROGRESS="${RETRIEVAL_RESIDUAL_MIN_SOURCE_PROGRESS:-0.0}"
57
+ RETRIEVAL_RESIDUAL_MIN_SOURCE_ADVANTAGE="${RETRIEVAL_RESIDUAL_MIN_SOURCE_ADVANTAGE:--1000000000.0}"
58
  RETRIEVAL_RESIDUAL_SOURCE_PROGRESS_BONUS_SCALE="${RETRIEVAL_RESIDUAL_SOURCE_PROGRESS_BONUS_SCALE:-0.0}"
59
  RETRIEVAL_RESIDUAL_SOURCE_SCORE_BONUS_SCALE="${RETRIEVAL_RESIDUAL_SOURCE_SCORE_BONUS_SCALE:-0.0}"
60
+ RETRIEVAL_RESIDUAL_SOURCE_ADVANTAGE_BONUS_SCALE="${RETRIEVAL_RESIDUAL_SOURCE_ADVANTAGE_BONUS_SCALE:-0.0}"
61
  RETRIEVAL_RESIDUAL_ACTION_L2_PENALTY="${RETRIEVAL_RESIDUAL_ACTION_L2_PENALTY:-0.0}"
62
  RETRIEVAL_RESIDUAL_SCALE="${RETRIEVAL_RESIDUAL_SCALE:-1.0}"
63
  RETRIEVAL_RESIDUAL_SCALES="${RETRIEVAL_RESIDUAL_SCALES:-}"
 
125
  --retrieval-metric "$RETRIEVAL_METRIC" \
126
  --retrieval-type-min-success "$RETRIEVAL_TYPE_MIN_SUCCESS" \
127
  --retrieval-residual-min-source-progress "$RETRIEVAL_RESIDUAL_MIN_SOURCE_PROGRESS" \
128
+ --retrieval-residual-min-source-advantage "$RETRIEVAL_RESIDUAL_MIN_SOURCE_ADVANTAGE" \
129
  --retrieval-residual-source-progress-bonus-scale "$RETRIEVAL_RESIDUAL_SOURCE_PROGRESS_BONUS_SCALE" \
130
  --retrieval-residual-source-score-bonus-scale "$RETRIEVAL_RESIDUAL_SOURCE_SCORE_BONUS_SCALE" \
131
+ --retrieval-residual-source-advantage-bonus-scale "$RETRIEVAL_RESIDUAL_SOURCE_ADVANTAGE_BONUS_SCALE" \
132
  --retrieval-residual-action-l2-penalty "$RETRIEVAL_RESIDUAL_ACTION_L2_PENALTY" \
133
  --retrieval-residual-scale "$RETRIEVAL_RESIDUAL_SCALE" \
134
  --retrieval-residual-scales "$RETRIEVAL_RESIDUAL_SCALES" \
scripts/slurm/eval_maniskill_policy_rollout_cpu_smoke.sbatch CHANGED
@@ -53,8 +53,10 @@ RETRIEVAL_NEIGHBORS="${RETRIEVAL_NEIGHBORS:-1}"
53
  RETRIEVAL_METRIC="${RETRIEVAL_METRIC:-raw}"
54
  RETRIEVAL_TYPE_MIN_SUCCESS="${RETRIEVAL_TYPE_MIN_SUCCESS:-0.0}"
55
  RETRIEVAL_RESIDUAL_MIN_SOURCE_PROGRESS="${RETRIEVAL_RESIDUAL_MIN_SOURCE_PROGRESS:-0.0}"
 
56
  RETRIEVAL_RESIDUAL_SOURCE_PROGRESS_BONUS_SCALE="${RETRIEVAL_RESIDUAL_SOURCE_PROGRESS_BONUS_SCALE:-0.0}"
57
  RETRIEVAL_RESIDUAL_SOURCE_SCORE_BONUS_SCALE="${RETRIEVAL_RESIDUAL_SOURCE_SCORE_BONUS_SCALE:-0.0}"
 
58
  RETRIEVAL_RESIDUAL_ACTION_L2_PENALTY="${RETRIEVAL_RESIDUAL_ACTION_L2_PENALTY:-0.0}"
59
  RETRIEVAL_RESIDUAL_SCALE="${RETRIEVAL_RESIDUAL_SCALE:-1.0}"
60
  RETRIEVAL_RESIDUAL_SCALES="${RETRIEVAL_RESIDUAL_SCALES:-}"
@@ -119,8 +121,10 @@ apptainer exec \
119
  --retrieval-metric "$RETRIEVAL_METRIC" \
120
  --retrieval-type-min-success "$RETRIEVAL_TYPE_MIN_SUCCESS" \
121
  --retrieval-residual-min-source-progress "$RETRIEVAL_RESIDUAL_MIN_SOURCE_PROGRESS" \
 
122
  --retrieval-residual-source-progress-bonus-scale "$RETRIEVAL_RESIDUAL_SOURCE_PROGRESS_BONUS_SCALE" \
123
  --retrieval-residual-source-score-bonus-scale "$RETRIEVAL_RESIDUAL_SOURCE_SCORE_BONUS_SCALE" \
 
124
  --retrieval-residual-action-l2-penalty "$RETRIEVAL_RESIDUAL_ACTION_L2_PENALTY" \
125
  --retrieval-residual-scale "$RETRIEVAL_RESIDUAL_SCALE" \
126
  --retrieval-residual-scales "$RETRIEVAL_RESIDUAL_SCALES" \
 
53
  RETRIEVAL_METRIC="${RETRIEVAL_METRIC:-raw}"
54
  RETRIEVAL_TYPE_MIN_SUCCESS="${RETRIEVAL_TYPE_MIN_SUCCESS:-0.0}"
55
  RETRIEVAL_RESIDUAL_MIN_SOURCE_PROGRESS="${RETRIEVAL_RESIDUAL_MIN_SOURCE_PROGRESS:-0.0}"
56
+ RETRIEVAL_RESIDUAL_MIN_SOURCE_ADVANTAGE="${RETRIEVAL_RESIDUAL_MIN_SOURCE_ADVANTAGE:--1000000000.0}"
57
  RETRIEVAL_RESIDUAL_SOURCE_PROGRESS_BONUS_SCALE="${RETRIEVAL_RESIDUAL_SOURCE_PROGRESS_BONUS_SCALE:-0.0}"
58
  RETRIEVAL_RESIDUAL_SOURCE_SCORE_BONUS_SCALE="${RETRIEVAL_RESIDUAL_SOURCE_SCORE_BONUS_SCALE:-0.0}"
59
+ RETRIEVAL_RESIDUAL_SOURCE_ADVANTAGE_BONUS_SCALE="${RETRIEVAL_RESIDUAL_SOURCE_ADVANTAGE_BONUS_SCALE:-0.0}"
60
  RETRIEVAL_RESIDUAL_ACTION_L2_PENALTY="${RETRIEVAL_RESIDUAL_ACTION_L2_PENALTY:-0.0}"
61
  RETRIEVAL_RESIDUAL_SCALE="${RETRIEVAL_RESIDUAL_SCALE:-1.0}"
62
  RETRIEVAL_RESIDUAL_SCALES="${RETRIEVAL_RESIDUAL_SCALES:-}"
 
121
  --retrieval-metric "$RETRIEVAL_METRIC" \
122
  --retrieval-type-min-success "$RETRIEVAL_TYPE_MIN_SUCCESS" \
123
  --retrieval-residual-min-source-progress "$RETRIEVAL_RESIDUAL_MIN_SOURCE_PROGRESS" \
124
+ --retrieval-residual-min-source-advantage "$RETRIEVAL_RESIDUAL_MIN_SOURCE_ADVANTAGE" \
125
  --retrieval-residual-source-progress-bonus-scale "$RETRIEVAL_RESIDUAL_SOURCE_PROGRESS_BONUS_SCALE" \
126
  --retrieval-residual-source-score-bonus-scale "$RETRIEVAL_RESIDUAL_SOURCE_SCORE_BONUS_SCALE" \
127
+ --retrieval-residual-source-advantage-bonus-scale "$RETRIEVAL_RESIDUAL_SOURCE_ADVANTAGE_BONUS_SCALE" \
128
  --retrieval-residual-action-l2-penalty "$RETRIEVAL_RESIDUAL_ACTION_L2_PENALTY" \
129
  --retrieval-residual-scale "$RETRIEVAL_RESIDUAL_SCALE" \
130
  --retrieval-residual-scales "$RETRIEVAL_RESIDUAL_SCALES" \
tests/test_maniskill_policy_rollout.py CHANGED
@@ -1188,6 +1188,75 @@ def test_retrieval_residual_source_progress_threshold_filters_individual_residua
1188
  )
1189
 
1190
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1191
  def test_retrieval_residual_source_progress_padding_keeps_batches_rectangular() -> None:
1192
  def record(
1193
  group_id: str,
 
1188
  )
1189
 
1190
 
1191
+ def test_retrieval_residual_source_advantage_filters_against_anchor() -> None:
1192
+ def record(
1193
+ group_id: str,
1194
+ candidate_type: str,
1195
+ action_value: float,
1196
+ progress: float,
1197
+ terminal_success: bool = False,
1198
+ ):
1199
+ return SimpleNamespace(
1200
+ group_id=group_id,
1201
+ task_id="PickCube-v1",
1202
+ candidate_type=candidate_type,
1203
+ record_id=f"{group_id}-{candidate_type}-{action_value}",
1204
+ observation_inline={"features": [0.0, 0.0]},
1205
+ reward=SimpleNamespace(progress=progress, terminal_success=terminal_success),
1206
+ action_chunk=ActionChunk(
1207
+ representation="continuous",
1208
+ horizon=1,
1209
+ values=[[action_value, 0.0]],
1210
+ ),
1211
+ )
1212
+
1213
+ groups = {
1214
+ "train_a": [
1215
+ record("train_a", "expert", 1.0, 0.4),
1216
+ record("train_a", "no_op", 1.2, 0.6),
1217
+ record("train_a", "wrong_gripper", 1.4, 0.3),
1218
+ ],
1219
+ "heldout": [record("heldout", "expert", 9.0, 1.0, terminal_success=True)],
1220
+ }
1221
+ dataset = SimpleNamespace(
1222
+ group_ids=list(groups),
1223
+ get_group=lambda group_id: groups[group_id],
1224
+ )
1225
+ case = _RolloutCase(
1226
+ group_id="heldout",
1227
+ task_id="PickCube-v1",
1228
+ source_dataset=Path("."),
1229
+ state={},
1230
+ observation={"features": [0.0, 0.0]},
1231
+ instruction="pick",
1232
+ oracle_score=1.0,
1233
+ oracle_success=True,
1234
+ expert_score=1.0,
1235
+ expert_success=True,
1236
+ best_action_values=[[9.9, 0.0]],
1237
+ candidate_action_values=[],
1238
+ candidate_types=[],
1239
+ )
1240
+
1241
+ [attached] = _attach_retrieved_residual_candidates(
1242
+ dataset,
1243
+ [case],
1244
+ heldout_group_ids=["heldout"],
1245
+ obs_dim=2,
1246
+ observation_mode="state",
1247
+ retrieval_neighbors=1,
1248
+ retrieval_residual_min_source_advantage=0.0,
1249
+ retrieval_residual_source_advantage_bonus_scale=0.5,
1250
+ )
1251
+
1252
+ assert attached.candidate_types == ["policy_residual", "residual_no_op"]
1253
+ assert np.allclose(attached.candidate_score_bonuses, [0.0, 0.1])
1254
+ assert np.allclose(
1255
+ np.asarray(attached.candidate_action_values, dtype=np.float32),
1256
+ np.asarray([[[0.0, 0.0]], [[0.2, 0.0]]]),
1257
+ )
1258
+
1259
+
1260
  def test_retrieval_residual_source_progress_padding_keeps_batches_rectangular() -> None:
1261
  def record(
1262
  group_id: str,