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