anhtld commited on
Commit
39bdadc
·
verified ·
1 Parent(s): 673ae78

Auto-sync: 2026-06-30 14:47:01

Browse files
dovla_cil/eval/maniskill_policy_rollout.py CHANGED
@@ -105,6 +105,7 @@ def evaluate_maniskill_policy_rollout(
105
  retrieval_residual_challenger_types: tuple[str, ...] = (),
106
  retrieval_residual_challenger_scales: tuple[float, ...] = (),
107
  retrieval_residual_challenger_margin: float = 0.0,
 
108
  lattice_exclude_types: tuple[str, ...] = (),
109
  candidate_type_bonuses: dict[str, float] | None = None,
110
  candidate_type_bonus_components: bool = False,
@@ -255,6 +256,11 @@ def evaluate_maniskill_policy_rollout(
255
  for candidate_type in retrieval_residual_challenger_types
256
  if candidate_type.strip()
257
  )
 
 
 
 
 
258
  retrieval_residual_challenger_scales = tuple(
259
  float(scale) for scale in retrieval_residual_challenger_scales
260
  )
@@ -388,6 +394,9 @@ def evaluate_maniskill_policy_rollout(
388
  retrieval_residual_challenger_margin=(
389
  retrieval_residual_challenger_margin
390
  ),
 
 
 
391
  lattice_exclude_types=lattice_exclude_types,
392
  candidate_type_bonuses=candidate_type_bonuses,
393
  candidate_type_bonus_components=candidate_type_bonus_components,
@@ -529,6 +538,11 @@ def evaluate_maniskill_policy_rollout(
529
  if selection_mode == "retrieval_residual"
530
  else 0.0
531
  ),
 
 
 
 
 
532
  "lattice_exclude_types": list(lattice_exclude_types),
533
  "candidate_type_bonuses": candidate_type_bonuses,
534
  "candidate_type_bonus_components": bool(candidate_type_bonus_components),
@@ -1216,6 +1230,7 @@ def _evaluate_task_cases(
1216
  retrieval_residual_challenger_types: tuple[str, ...] = (),
1217
  retrieval_residual_challenger_scales: tuple[float, ...] = (),
1218
  retrieval_residual_challenger_margin: float = 0.0,
 
1219
  lattice_exclude_types: tuple[str, ...] = (),
1220
  candidate_type_bonuses: dict[str, float] | None = None,
1221
  candidate_type_bonus_components: bool = False,
@@ -1343,14 +1358,15 @@ def _evaluate_task_cases(
1343
  else None
1344
  ),
1345
  challenger_mask=(
1346
- _lattice_candidate_include_mask(
1347
  batch,
 
1348
  torch=torch,
1349
  device=device,
1350
  include_types=retrieval_residual_challenger_types,
 
1351
  )
1352
  if selection_mode == "retrieval_residual"
1353
- and retrieval_residual_challenger_types
1354
  else None
1355
  ),
1356
  challenger_margin=retrieval_residual_challenger_margin,
@@ -2798,6 +2814,28 @@ def _lattice_candidate_include_mask(
2798
  return torch.tensor(rows, dtype=torch.bool, device=device)
2799
 
2800
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2801
  def _candidate_type_matches_exclusion(candidate_type: str, excluded: set[str]) -> bool:
2802
  if candidate_type in excluded:
2803
  return True
 
105
  retrieval_residual_challenger_types: tuple[str, ...] = (),
106
  retrieval_residual_challenger_scales: tuple[float, ...] = (),
107
  retrieval_residual_challenger_margin: float = 0.0,
108
+ retrieval_residual_challenger_tasks: tuple[str, ...] = (),
109
  lattice_exclude_types: tuple[str, ...] = (),
110
  candidate_type_bonuses: dict[str, float] | None = None,
111
  candidate_type_bonus_components: bool = False,
 
256
  for candidate_type in retrieval_residual_challenger_types
257
  if candidate_type.strip()
258
  )
259
+ retrieval_residual_challenger_tasks = tuple(
260
+ task_id.strip()
261
+ for task_id in retrieval_residual_challenger_tasks
262
+ if task_id.strip()
263
+ )
264
  retrieval_residual_challenger_scales = tuple(
265
  float(scale) for scale in retrieval_residual_challenger_scales
266
  )
 
394
  retrieval_residual_challenger_margin=(
395
  retrieval_residual_challenger_margin
396
  ),
397
+ retrieval_residual_challenger_tasks=(
398
+ retrieval_residual_challenger_tasks
399
+ ),
400
  lattice_exclude_types=lattice_exclude_types,
401
  candidate_type_bonuses=candidate_type_bonuses,
402
  candidate_type_bonus_components=candidate_type_bonus_components,
 
538
  if selection_mode == "retrieval_residual"
539
  else 0.0
540
  ),
541
+ "retrieval_residual_challenger_tasks": list(
542
+ retrieval_residual_challenger_tasks
543
+ )
544
+ if selection_mode == "retrieval_residual"
545
+ else [],
546
  "lattice_exclude_types": list(lattice_exclude_types),
547
  "candidate_type_bonuses": candidate_type_bonuses,
548
  "candidate_type_bonus_components": bool(candidate_type_bonus_components),
 
1230
  retrieval_residual_challenger_types: tuple[str, ...] = (),
1231
  retrieval_residual_challenger_scales: tuple[float, ...] = (),
1232
  retrieval_residual_challenger_margin: float = 0.0,
1233
+ retrieval_residual_challenger_tasks: tuple[str, ...] = (),
1234
  lattice_exclude_types: tuple[str, ...] = (),
1235
  candidate_type_bonuses: dict[str, float] | None = None,
1236
  candidate_type_bonus_components: bool = False,
 
1358
  else None
1359
  ),
1360
  challenger_mask=(
1361
+ _task_limited_challenger_mask(
1362
  batch,
1363
+ task_id=task_id,
1364
  torch=torch,
1365
  device=device,
1366
  include_types=retrieval_residual_challenger_types,
1367
+ include_tasks=retrieval_residual_challenger_tasks,
1368
  )
1369
  if selection_mode == "retrieval_residual"
 
1370
  else None
1371
  ),
1372
  challenger_margin=retrieval_residual_challenger_margin,
 
2814
  return torch.tensor(rows, dtype=torch.bool, device=device)
2815
 
2816
 
2817
+ def _task_limited_challenger_mask(
2818
+ batch: list[_RolloutCase],
2819
+ *,
2820
+ task_id: str,
2821
+ torch: Any,
2822
+ device: str,
2823
+ include_types: tuple[str, ...],
2824
+ include_tasks: tuple[str, ...],
2825
+ ) -> Any | None:
2826
+ if not any(candidate_type for candidate_type in include_types):
2827
+ return None
2828
+ allowed_tasks = {task for task in include_tasks if task}
2829
+ if allowed_tasks and task_id not in allowed_tasks:
2830
+ return None
2831
+ return _lattice_candidate_include_mask(
2832
+ batch,
2833
+ torch=torch,
2834
+ device=device,
2835
+ include_types=include_types,
2836
+ )
2837
+
2838
+
2839
  def _candidate_type_matches_exclusion(candidate_type: str, excluded: set[str]) -> bool:
2840
  if candidate_type in excluded:
2841
  return True