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 |
-
|
| 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
|