Auto-sync: 2026-06-29 03:12:48 (part 3)
Browse files
scripts/eval_maniskill_policy_rollout.py
CHANGED
|
@@ -150,6 +150,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-scale",
|
| 155 |
type=float,
|
|
@@ -248,6 +255,7 @@ def main(argv: list[str] | None = None) -> int:
|
|
| 248 |
retrieval_residual_source_score_bonus_scale=(
|
| 249 |
args.retrieval_residual_source_score_bonus_scale
|
| 250 |
),
|
|
|
|
| 251 |
retrieval_residual_scale=args.retrieval_residual_scale,
|
| 252 |
retrieval_residual_scales=retrieval_residual_scales,
|
| 253 |
retrieval_residual_anchor=args.retrieval_residual_anchor,
|
|
|
|
| 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,
|
| 156 |
+
default=0.0,
|
| 157 |
+
help="Penalty scale subtracted from residual candidate field scores according to "
|
| 158 |
+
"mean squared action displacement from the policy mean.",
|
| 159 |
+
)
|
| 160 |
parser.add_argument(
|
| 161 |
"--retrieval-residual-scale",
|
| 162 |
type=float,
|
|
|
|
| 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,
|
| 261 |
retrieval_residual_anchor=args.retrieval_residual_anchor,
|
scripts/slurm/eval_maniskill_policy_rollout.sbatch
CHANGED
|
@@ -56,6 +56,7 @@ 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_SCALE="${RETRIEVAL_RESIDUAL_SCALE:-1.0}"
|
| 60 |
RETRIEVAL_RESIDUAL_SCALES="${RETRIEVAL_RESIDUAL_SCALES:-}"
|
| 61 |
if [[ -n "${RETRIEVAL_RESIDUAL_SCALES_COLON:-}" ]]; then
|
|
@@ -124,6 +125,7 @@ apptainer exec --nv \
|
|
| 124 |
--retrieval-residual-min-source-progress "$RETRIEVAL_RESIDUAL_MIN_SOURCE_PROGRESS" \
|
| 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-scale "$RETRIEVAL_RESIDUAL_SCALE" \
|
| 128 |
--retrieval-residual-scales "$RETRIEVAL_RESIDUAL_SCALES" \
|
| 129 |
--retrieval-residual-anchor "$RETRIEVAL_RESIDUAL_ANCHOR" \
|
|
|
|
| 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:-}"
|
| 62 |
if [[ -n "${RETRIEVAL_RESIDUAL_SCALES_COLON:-}" ]]; then
|
|
|
|
| 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" \
|
| 131 |
--retrieval-residual-anchor "$RETRIEVAL_RESIDUAL_ANCHOR" \
|
scripts/slurm/eval_maniskill_policy_rollout_cpu_smoke.sbatch
CHANGED
|
@@ -55,6 +55,7 @@ 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_SCALE="${RETRIEVAL_RESIDUAL_SCALE:-1.0}"
|
| 59 |
RETRIEVAL_RESIDUAL_SCALES="${RETRIEVAL_RESIDUAL_SCALES:-}"
|
| 60 |
if [[ -n "${RETRIEVAL_RESIDUAL_SCALES_COLON:-}" ]]; then
|
|
@@ -120,6 +121,7 @@ apptainer exec \
|
|
| 120 |
--retrieval-residual-min-source-progress "$RETRIEVAL_RESIDUAL_MIN_SOURCE_PROGRESS" \
|
| 121 |
--retrieval-residual-source-progress-bonus-scale "$RETRIEVAL_RESIDUAL_SOURCE_PROGRESS_BONUS_SCALE" \
|
| 122 |
--retrieval-residual-source-score-bonus-scale "$RETRIEVAL_RESIDUAL_SOURCE_SCORE_BONUS_SCALE" \
|
|
|
|
| 123 |
--retrieval-residual-scale "$RETRIEVAL_RESIDUAL_SCALE" \
|
| 124 |
--retrieval-residual-scales "$RETRIEVAL_RESIDUAL_SCALES" \
|
| 125 |
--retrieval-residual-anchor "$RETRIEVAL_RESIDUAL_ANCHOR" \
|
|
|
|
| 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:-}"
|
| 61 |
if [[ -n "${RETRIEVAL_RESIDUAL_SCALES_COLON:-}" ]]; then
|
|
|
|
| 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" \
|
| 127 |
--retrieval-residual-anchor "$RETRIEVAL_RESIDUAL_ANCHOR" \
|
tests/test_maniskill_policy_rollout.py
CHANGED
|
@@ -615,6 +615,32 @@ def test_retrieval_residual_candidate_type_bonus_repeats_over_scale_grid() -> No
|
|
| 615 |
assert index.tolist() == [1]
|
| 616 |
|
| 617 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 618 |
def test_retrieval_residual_field_softmax_builds_field_weighted_tangent() -> None:
|
| 619 |
import torch
|
| 620 |
|
|
|
|
| 615 |
assert index.tolist() == [1]
|
| 616 |
|
| 617 |
|
| 618 |
+
def test_retrieval_residual_action_l2_penalty_prefers_shorter_tangent() -> None:
|
| 619 |
+
import torch
|
| 620 |
+
|
| 621 |
+
mean = torch.zeros(1, 1, 1)
|
| 622 |
+
residual = torch.ones_like(mean)
|
| 623 |
+
model = _StubModel(torch, mean, best_offset=0.5 * residual)
|
| 624 |
+
residuals = torch.stack([torch.zeros_like(mean), residual], dim=1)
|
| 625 |
+
actions, index = _select_action_chunk(
|
| 626 |
+
model,
|
| 627 |
+
observations=torch.zeros(1, 3),
|
| 628 |
+
instructions=["a"],
|
| 629 |
+
torch=torch,
|
| 630 |
+
selection_mode="retrieval_residual",
|
| 631 |
+
num_candidates=1,
|
| 632 |
+
candidate_sigma=0.0,
|
| 633 |
+
selection_seed=0,
|
| 634 |
+
action_candidates=residuals,
|
| 635 |
+
retrieval_residual_scale=1.0,
|
| 636 |
+
retrieval_residual_scales=(0.25, 0.5),
|
| 637 |
+
retrieval_residual_action_l2_penalty=2.0,
|
| 638 |
+
)
|
| 639 |
+
|
| 640 |
+
assert torch.allclose(actions, mean + 0.25 * residual)
|
| 641 |
+
assert index.tolist() == [1]
|
| 642 |
+
|
| 643 |
+
|
| 644 |
def test_retrieval_residual_field_softmax_builds_field_weighted_tangent() -> None:
|
| 645 |
import torch
|
| 646 |
|