Publish Parkour qwenoft latency-aware PPO
Browse files- latency-aware/extreme-parkour-go2/small-policy/ppo-qwenoft-rtx3090-v1/README.md +20 -0
- latency-aware/extreme-parkour-go2/small-policy/ppo-qwenoft-rtx3090-v1/checkpoint.pt +3 -0
- latency-aware/extreme-parkour-go2/small-policy/ppo-qwenoft-rtx3090-v1/eval_l0.json +44 -0
- latency-aware/extreme-parkour-go2/small-policy/ppo-qwenoft-rtx3090-v1/eval_l0.yaml +12 -0
- latency-aware/extreme-parkour-go2/small-policy/ppo-qwenoft-rtx3090-v1/eval_profile.json +44 -0
- latency-aware/extreme-parkour-go2/small-policy/ppo-qwenoft-rtx3090-v1/eval_profile.yaml +8 -0
- latency-aware/extreme-parkour-go2/small-policy/ppo-qwenoft-rtx3090-v1/provenance.json +34 -0
- latency-aware/extreme-parkour-go2/small-policy/ppo-qwenoft-rtx3090-v1/train.yaml +34 -0
latency-aware/extreme-parkour-go2/small-policy/ppo-qwenoft-rtx3090-v1/README.md
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Extreme Parkour Go2 — QwenOFT latency-aware PPO
|
| 2 |
+
|
| 3 |
+
Native command policy trained from scratch with the QwenOFT RTX 3090 temporal
|
| 4 |
+
latency profile. The checkpoint completed 3,000 PPO iterations on one H200.
|
| 5 |
+
|
| 6 |
+
Training used 6,144 environments, seed 1, 50 Hz control, 10 Hz decisions,
|
| 7 |
+
24 decisions/environment/iteration, control repeat 5, five PPO epochs, four
|
| 8 |
+
minibatches, and fixed learning rate `2e-4`.
|
| 9 |
+
|
| 10 |
+
| Evaluation | Episodes | Return mean ± SD | Raw length mean ± SD | Waypoint progress mean ± SD |
|
| 11 |
+
|---|---:|---:|---:|---:|
|
| 12 |
+
| QwenOFT temporal profile | 100 | 16.2985 ± 5.8936 | 650.84 ± 161.56 | 0.8314 ± 0.2773 |
|
| 13 |
+
| 0 ms latency | 100 | 16.7771 ± 6.1831 | 663.42 ± 173.64 | 0.8329 ± 0.2872 |
|
| 14 |
+
|
| 15 |
+
Both evaluations use 256 parallel environments, seed 1, deterministic policy
|
| 16 |
+
means, and a 1,500 raw-control-frame episode cap. See `eval_profile.json` and
|
| 17 |
+
`eval_l0.json` for complete metrics and latency counts.
|
| 18 |
+
|
| 19 |
+
Training run: https://wandb.ai/saberrr-zju/isaaclab-parkour/runs/6ix3w954
|
| 20 |
+
|
latency-aware/extreme-parkour-go2/small-policy/ppo-qwenoft-rtx3090-v1/checkpoint.pt
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:1c56e4cd2d6b6618c0592192dd5019e3acdc444965fc29980abbcc31efaca013
|
| 3 |
+
size 239286587
|
latency-aware/extreme-parkour-go2/small-policy/ppo-qwenoft-rtx3090-v1/eval_l0.json
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"identity": {
|
| 3 |
+
"checkpoint": "/home/ubuntu/latency-sensitive-bench/third_party/Isaaclab_Parkour/logs/rsl_rl/unitree_go2_parkour/2026-09-16_09-14-43_extreme_parkour_go2_qwenoft_scratch_seed1_3k_h200/model_2999.pt",
|
| 4 |
+
"latency_config": "/home/ubuntu/latency-sensitive-bench/configs/training/latency/parkour_zero.yaml",
|
| 5 |
+
"latency": {
|
| 6 |
+
"method": "fixed",
|
| 7 |
+
"env_fps": 50,
|
| 8 |
+
"obs_fps": 10,
|
| 9 |
+
"profile_path": null
|
| 10 |
+
},
|
| 11 |
+
"teacher_checkpoint": "/home/ubuntu/model_14999.pt",
|
| 12 |
+
"teacher_baseline": false,
|
| 13 |
+
"seed": 1
|
| 14 |
+
},
|
| 15 |
+
"evaluation": {
|
| 16 |
+
"num_envs": 256,
|
| 17 |
+
"completed_episodes": 100,
|
| 18 |
+
"requested_episodes": 100,
|
| 19 |
+
"max_episode_steps": 1500,
|
| 20 |
+
"control_repeat": 5
|
| 21 |
+
},
|
| 22 |
+
"metrics": {
|
| 23 |
+
"reward_mean": 16.77713394165039,
|
| 24 |
+
"reward_std": 6.183106310446976,
|
| 25 |
+
"episode_length_raw_mean": 663.42,
|
| 26 |
+
"episode_length_raw_std": 173.63512073170898,
|
| 27 |
+
"waypoints_mean": 0.8328571428571427,
|
| 28 |
+
"waypoints_std": 0.28717839154683733,
|
| 29 |
+
"edge_violation_mean": 0.158,
|
| 30 |
+
"edge_violation_std": 0.415975960843893
|
| 31 |
+
},
|
| 32 |
+
"latency": {
|
| 33 |
+
"scope": "all_vector_slots_until_requested_episode_count",
|
| 34 |
+
"admissions": 46080,
|
| 35 |
+
"drops": 0,
|
| 36 |
+
"raw_control_frames": 230197,
|
| 37 |
+
"sampled_ms_mean": 0.0
|
| 38 |
+
},
|
| 39 |
+
"throughput": {
|
| 40 |
+
"raw_control_frames": 230197,
|
| 41 |
+
"elapsed_seconds": 47.57120870301151,
|
| 42 |
+
"raw_control_frames_per_second": 4838.998341142156
|
| 43 |
+
}
|
| 44 |
+
}
|
latency-aware/extreme-parkour-go2/small-policy/ppo-qwenoft-rtx3090-v1/eval_l0.yaml
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
__base__: train.yaml
|
| 2 |
+
latency:
|
| 3 |
+
method: fixed
|
| 4 |
+
fixed_latency_ms: 0
|
| 5 |
+
seed: 0
|
| 6 |
+
evaluation:
|
| 7 |
+
num_envs: 256
|
| 8 |
+
episodes: 100
|
| 9 |
+
max_episode_steps: 1500
|
| 10 |
+
seed: 1
|
| 11 |
+
deterministic: true
|
| 12 |
+
|
latency-aware/extreme-parkour-go2/small-policy/ppo-qwenoft-rtx3090-v1/eval_profile.json
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"identity": {
|
| 3 |
+
"checkpoint": "/home/ubuntu/latency-sensitive-bench/third_party/Isaaclab_Parkour/logs/rsl_rl/unitree_go2_parkour/2026-09-16_09-14-43_extreme_parkour_go2_qwenoft_scratch_seed1_3k_h200/model_2999.pt",
|
| 4 |
+
"latency_config": "/home/ubuntu/latency-sensitive-bench/outputs/latency_rl/parkour/h200_20260916_qwenoft/latency.yaml",
|
| 5 |
+
"latency": {
|
| 6 |
+
"method": "temporal",
|
| 7 |
+
"env_fps": 50,
|
| 8 |
+
"obs_fps": 10,
|
| 9 |
+
"profile_path": "/home/ubuntu/latency-sensitive-bench/results/profiling/profiles/qwenoft/1x-rtx3090/extreme_parkour_go2/instance_6e332477bffea7da/profile.json"
|
| 10 |
+
},
|
| 11 |
+
"teacher_checkpoint": "/home/ubuntu/model_14999.pt",
|
| 12 |
+
"teacher_baseline": false,
|
| 13 |
+
"seed": 1
|
| 14 |
+
},
|
| 15 |
+
"evaluation": {
|
| 16 |
+
"num_envs": 256,
|
| 17 |
+
"completed_episodes": 100,
|
| 18 |
+
"requested_episodes": 100,
|
| 19 |
+
"max_episode_steps": 1500,
|
| 20 |
+
"control_repeat": 5
|
| 21 |
+
},
|
| 22 |
+
"metrics": {
|
| 23 |
+
"reward_mean": 16.29850423336029,
|
| 24 |
+
"reward_std": 5.893599424632169,
|
| 25 |
+
"episode_length_raw_mean": 650.84,
|
| 26 |
+
"episode_length_raw_std": 161.5623043343285,
|
| 27 |
+
"waypoints_mean": 0.8314285714285714,
|
| 28 |
+
"waypoints_std": 0.2772900934371211,
|
| 29 |
+
"edge_violation_mean": 0.122,
|
| 30 |
+
"edge_violation_std": 0.3392874887171644
|
| 31 |
+
},
|
| 32 |
+
"latency": {
|
| 33 |
+
"scope": "all_vector_slots_until_requested_episode_count",
|
| 34 |
+
"admissions": 42425,
|
| 35 |
+
"drops": 3143,
|
| 36 |
+
"raw_control_frames": 227629,
|
| 37 |
+
"sampled_ms_mean": 101.2792230542913
|
| 38 |
+
},
|
| 39 |
+
"throughput": {
|
| 40 |
+
"raw_control_frames": 227629,
|
| 41 |
+
"elapsed_seconds": 47.871054112998536,
|
| 42 |
+
"raw_control_frames_per_second": 4755.0446552249905
|
| 43 |
+
}
|
| 44 |
+
}
|
latency-aware/extreme-parkour-go2/small-policy/ppo-qwenoft-rtx3090-v1/eval_profile.yaml
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
__base__: train.yaml
|
| 2 |
+
evaluation:
|
| 3 |
+
num_envs: 256
|
| 4 |
+
episodes: 100
|
| 5 |
+
max_episode_steps: 1500
|
| 6 |
+
seed: 1
|
| 7 |
+
deterministic: true
|
| 8 |
+
|
latency-aware/extreme-parkour-go2/small-policy/ppo-qwenoft-rtx3090-v1/provenance.json
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"task": "extreme-parkour-go2",
|
| 3 |
+
"model": "ppo-command-policy",
|
| 4 |
+
"latency_profile_model": "qwenoft",
|
| 5 |
+
"status": "evaluated",
|
| 6 |
+
"wandb_url": "https://wandb.ai/saberrr-zju/isaaclab-parkour/runs/6ix3w954",
|
| 7 |
+
"checkpoint": "checkpoint.pt",
|
| 8 |
+
"checkpoint_bytes": 239286587,
|
| 9 |
+
"checkpoint_sha256": "1c56e4cd2d6b6618c0592192dd5019e3acdc444965fc29980abbcc31efaca013",
|
| 10 |
+
"checkpoint_iteration": 2999,
|
| 11 |
+
"decision_timesteps": 442368000,
|
| 12 |
+
"control_frames": 2211840000,
|
| 13 |
+
"initialization": "from_scratch",
|
| 14 |
+
"training_seed": 1,
|
| 15 |
+
"source_revisions": {
|
| 16 |
+
"benchmark": "f0929454423a5f170eb3c226aec42103ea351248",
|
| 17 |
+
"isaac_lab": "46dff135f44683f031edf346e544fcfd8456b2bb",
|
| 18 |
+
"parkour": "b34830ece802978aaff8b97500a3a924d1209c21"
|
| 19 |
+
},
|
| 20 |
+
"teacher": {
|
| 21 |
+
"checkpoint_sha256": "acd97fbc316cdfa52521f05ee6c6be8614a18b28cb9ff918a4aa9e25c7e29378"
|
| 22 |
+
},
|
| 23 |
+
"profile": {
|
| 24 |
+
"repo_id": "latency-sensitive-bench/profiles",
|
| 25 |
+
"revision": "e8be1e5dfd309f85ab7ff704dc02bd4898b7ceb4",
|
| 26 |
+
"path": "profiles/qwenoft/1x-rtx3090/extreme_parkour_go2/instance_6e332477bffea7da",
|
| 27 |
+
"profile_sha256": "5059d7f6acf2289299d8f25b04e295cad9823be317f49186e94599a4dcf337e0"
|
| 28 |
+
},
|
| 29 |
+
"evaluations": {
|
| 30 |
+
"profile": "eval_profile.json",
|
| 31 |
+
"zero_latency": "eval_l0.json"
|
| 32 |
+
}
|
| 33 |
+
}
|
| 34 |
+
|
latency-aware/extreme-parkour-go2/small-policy/ppo-qwenoft-rtx3090-v1/train.yaml
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
experiment:
|
| 2 |
+
name: extreme_parkour_go2_qwenoft_scratch
|
| 3 |
+
seed: 1
|
| 4 |
+
env:
|
| 5 |
+
name: extreme_parkour_go2
|
| 6 |
+
env_fps: 50
|
| 7 |
+
obs_fps: 10
|
| 8 |
+
simulator_device: cuda:0
|
| 9 |
+
latency:
|
| 10 |
+
method: temporal
|
| 11 |
+
seed: 0
|
| 12 |
+
profile_path: profiles/qwenoft/1x-rtx3090/extreme_parkour_go2/instance_6e332477bffea7da/profile.json
|
| 13 |
+
executor:
|
| 14 |
+
simulated_worker_capacity: 1
|
| 15 |
+
scheduler:
|
| 16 |
+
hold_policy: hold
|
| 17 |
+
ordering_policy: latest_ready
|
| 18 |
+
command:
|
| 19 |
+
dimension: 34
|
| 20 |
+
horizon: 1
|
| 21 |
+
control_repeat: 5
|
| 22 |
+
training:
|
| 23 |
+
num_envs: 6144
|
| 24 |
+
kit_threads: 8
|
| 25 |
+
physx_threads: 8
|
| 26 |
+
physics_dt: 0.005
|
| 27 |
+
decimation: 4
|
| 28 |
+
decisions_per_env_per_iteration: 24
|
| 29 |
+
max_iterations: 3000
|
| 30 |
+
learning_epochs: 5
|
| 31 |
+
minibatches: 4
|
| 32 |
+
learning_rate: 0.0002
|
| 33 |
+
learning_rate_schedule: fixed
|
| 34 |
+
|