Upstream: https://github.com/pollen-robotics/microduck_rl Upstream-Commit: d424a0c899f6b33cbd3daeb279913134349c0b63 Upstream-Branch: develop
58 lines
2.0 KiB
Python
58 lines
2.0 KiB
Python
"""Find the latest wandb run for a given user and launch `uv run play`.
|
|
|
|
Par défaut : le tout dernier run (toutes tâches confondues).
|
|
Avec un flag de type, le dernier run de CE type seulement :
|
|
md-play --crouch # dernier Mjlab-RollerCrouch-...
|
|
md-play --roller # dernier Mjlab-...-Rollers
|
|
md-play --swizzle # dernier Mjlab-...-Swizzle-...
|
|
md-play --slope # dernier Mjlab-RollerSlope-...
|
|
Les arguments inconnus sont transmis tels quels à `uv run play`
|
|
(ex: md-play --crouch --action-scale 0.8).
|
|
"""
|
|
|
|
import argparse
|
|
|
|
from wandb_utils import resolve_run, run_command
|
|
|
|
# flag -> sous-chaîne recherchée dans le task_id (metadata args[0])
|
|
TYPE_SUBSTR = {
|
|
"crouch": "Crouch", # Mjlab-RollerCrouch-Flat-MicroDuck
|
|
"roller": "MicroDuck-Rollers", # Mjlab-Velocity-Flat-MicroDuck-Rollers (≠ RollerSlope/RollerCrouch)
|
|
"swizzle": "Swizzle", # Mjlab-Velocity-Swizzle-MicroDuck
|
|
"slope": "Slope", # Mjlab-RollerSlope-Flat-MicroDuck
|
|
}
|
|
|
|
|
|
def main():
|
|
parser = argparse.ArgumentParser(description="Play latest wandb run for a user")
|
|
parser.add_argument(
|
|
"--user", default="coralie",
|
|
help="Filter runs by user (matched against email, default: coralie)",
|
|
)
|
|
parser.add_argument(
|
|
"--dry-run", action="store_true",
|
|
help="Print the play command without executing it",
|
|
)
|
|
for t in TYPE_SUBSTR:
|
|
parser.add_argument(
|
|
f"--{t}", dest="type", action="store_const", const=t,
|
|
help=f"latest '{t}' run only",
|
|
)
|
|
# unknown args (e.g. --action-scale 0.8) are forwarded to `uv run play`
|
|
args, extra = parser.parse_known_args()
|
|
|
|
task_substr = TYPE_SUBSTR[args.type] if getattr(args, "type", None) else None
|
|
_, info = resolve_run(args.user, task_substr)
|
|
|
|
cmd = [
|
|
"uv", "run", "play",
|
|
info["env_name"],
|
|
"--wandb-run-path", info["run_path"],
|
|
*extra,
|
|
]
|
|
run_command(cmd, args.dry_run)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|