michaelvu1207 commited on
Commit
702f074
·
verified ·
1 Parent(s): 215c92c

Model card: held-out AlpaSim results (344 scenes), test-drive section, Quickstart fix

Browse files
Files changed (1) hide show
  1. README.md +73 -9
README.md CHANGED
@@ -66,7 +66,25 @@ each model's native camera rig (Pilot and the base: 3 × 1080p f-theta; Alpamayo
66
  **The route is given to every model that accepts one: Pilot and the base do; Alpamayo 1.5 and SimForge-D1.5 have no
67
  route input.** Pilot's plans take effect 0.2 s after they are issued. Paired bootstrap, 10,000 resamples.
68
 
69
- ### Internal AlpaSim: 96 scenes, a tuning panel
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
70
 
71
  | | Pilot-4B v1.5 | Alpamayo 1.5 (10B) | SimForge-D1.5 | Qwen-Drive-1.0-4B (base) |
72
  |---|---|---|---|---|
@@ -74,15 +92,16 @@ route input.** Pilot's plans take effect 0.2 s after they are issued. Paired boo
74
  | Pilot − model [95% CI] | — | +0.046 [−0.068, +0.161], **not significant** | +0.131 [+0.006, +0.255] | +0.179 [+0.067, +0.295] |
75
 
76
  **These 96 scenes were used to select and tune Pilot.** They share no clips with its training data, but the
77
- selection favours Pilot, so read this table as a within-family check. The clear result is that Pilot improves on its
78
- base by +0.179 (+42 %). Its lead over Alpamayo 1.5 is not statistically significant. On this panel Pilot does not
79
- have fewer collisions than Alpamayo 1.5; its edge is fewer exits from the lane corridor, and it does better in
80
  cruising scenes while Alpamayo 1.5 does better in slow and stationary ones.
81
 
82
- Protocol: our own run of AlpaSim 0.89.0 (not the public leaderboard); 200 steps × 0.1 s, the first 1.7 s replayed
83
- from the log; one rollout per scene; AlpaSim's default controller gains for every model; post-fix scorer `e121e59`.
84
- Scene score = 0 on an at-fault collision, off-road or a lateral corridor exit, otherwise
85
  min(progress / 0.8, 1). The route is sent to all four models, but Alpamayo 1.5 and D1.5 ignore it in this version.
 
86
 
87
  ### Open loop: where Pilot is weaker
88
 
@@ -115,9 +134,51 @@ cameras' f-theta calibration for the veto.
115
  exact benchmarked profile:
116
 
117
  ```bash
118
- docker run --rm --gpus all -p 6789:6789 -v $PWD:/repo:ro pilot-4b /repo/run_alpasim_driver.sh
119
  ```
120
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
121
  ## Inputs and outputs
122
 
123
  | | |
@@ -140,7 +201,7 @@ weights. Two stages, both by SimForge:
140
  of them, with recovery targets mined from earlier versions' failures. 4 × A100, learning rate 5e-6, seed 43, about
141
  2 hours.
142
 
143
- None of the 96 AlpaSim scenes or the 60 SF scenarios above appears in the training clips (checked by clip ID; the SF
144
  scenarios are authored and have no recorded drive). The training manifests are not part of this release.
145
 
146
  ## Limitations
@@ -157,6 +218,8 @@ scenarios are authored and have no recorded drive). The training manifests are n
157
  - **The planning head was selected.** v1.5 was the best of four training seeds on a validation panel, so some of
158
  its gain over its predecessor may not carry over. During training, the route for recorded drives was built from
159
  the path the human driver went on to take.
 
 
160
  - **Open loop is weaker** than the base model (see above).
161
 
162
  ## Files
@@ -170,6 +233,7 @@ scenarios are authored and have no recorded drive). The training manifests are n
170
  | `driver_profile.txt` | the benchmarked driver flags |
171
  | `inference.py`, `examples/` | single-decision example |
172
  | `run_alpasim_driver.sh`, `Dockerfile`, `requirements.txt` | closed-loop service and environment |
 
173
  | `SHA256SUMS` | checksums; the weights and `pilot/` match the serving image used for every result above |
174
 
175
  Weights SHA-256: VLM `b9de4bf4…caccc`, perception `e964ca94…450ae`, planner `a8e5d329…b4d14` (full hashes in `SHA256SUMS`).
 
66
  **The route is given to every model that accepts one: Pilot and the base do; Alpamayo 1.5 and SimForge-D1.5 have no
67
  route input.** Pilot's plans take effect 0.2 s after they are issued. Paired bootstrap, 10,000 resamples.
68
 
69
+ ### Internal AlpaSim: 344 held-out scenes
70
+
71
+ | | Pilot-4B v1.5 | Qwen-Drive-1.0-4B (base) |
72
+ |---|---|---|
73
+ | Average scene score ↑ [95% CI] | **0.672** [0.624, 0.720] | 0.465 [0.417, 0.513] |
74
+ | Scenes ended by an at-fault collision (of 344) ↓ | **31** | 54 |
75
+ | Scenes scored 0 (any failure) ↓ | **105** | 161 |
76
+ | Pilot − base [95% CI] | +0.207 [+0.150, +0.264] (+45 %); better in 154 scenes, worse in 40 | — |
77
+
78
+ The held-out set is AlpaSim's public `nurec_curated_val` split (441 scenes) without one scene and without the 96
79
+ tuning scenes below. None of its clips was used to train Pilot or its initialisation, or to tune it (checked by clip
80
+ ID). It is not untouched: it belongs to the validation panel on which v1.5 was chosen among training candidates, so
81
+ some selection bias remains. 21 of the scenes were recorded within 50 m of a training clip; without them the result is
82
+ the same (Pilot 0.672, base 0.467). Alpamayo 1.5 and SimForge-D1.5 have not been run on this set.
83
+
84
+ By scene type, Pilot's lead over its base is largest in urban cruising (0.853 vs 0.538, 119 scenes) and smallest in
85
+ fast cruising, where it is no better than its base (0.306 vs 0.274, 59 scenes; +0.03 [−0.13, +0.19]).
86
+
87
+ ### Internal AlpaSim: 96 tuning scenes, all four models
88
 
89
  | | Pilot-4B v1.5 | Alpamayo 1.5 (10B) | SimForge-D1.5 | Qwen-Drive-1.0-4B (base) |
90
  |---|---|---|---|---|
 
92
  | Pilot − model [95% CI] | — | +0.046 [−0.068, +0.161], **not significant** | +0.131 [+0.006, +0.255] | +0.179 [+0.067, +0.295] |
93
 
94
  **These 96 scenes were used to select and tune Pilot.** They share no clips with its training data, but the
95
+ selection favours Pilot, so read this table as a within-family check. Pilot's gain over its base (+0.179, +42 %)
96
+ holds on the held-out set above. Its lead over Alpamayo 1.5 is not statistically significant. On this panel Pilot does
97
+ not have fewer collisions than Alpamayo 1.5; its edge is fewer exits from the lane corridor, and it does better in
98
  cruising scenes while Alpamayo 1.5 does better in slow and stationary ones.
99
 
100
+ Protocol for both AlpaSim tables: our own run of AlpaSim 0.89.0 (not the public leaderboard); 200 steps × 0.1 s, the
101
+ first 1.7 s replayed from the log; one rollout per scene; AlpaSim's default controller gains for every model; post-fix
102
+ scorer `e121e59`. Scene score = 0 on an at-fault collision, off-road or a lateral corridor exit, otherwise
103
  min(progress / 0.8, 1). The route is sent to all four models, but Alpamayo 1.5 and D1.5 ignore it in this version.
104
+ Paired bootstrap, 10,000 resamples.
105
 
106
  ### Open loop: where Pilot is weaker
107
 
 
134
  exact benchmarked profile:
135
 
136
  ```bash
137
+ docker run --rm --gpus all -p 6789:6789 -v $PWD:/repo:ro pilot-4b sh /repo/run_alpasim_driver.sh
138
  ```
139
 
140
+ ### Test drive in AlpaSim
141
+
142
+ `test_drive_alpasim.sh` runs one complete closed-loop drive: it sets up the public
143
+ [AlpaSim](https://github.com/NVlabs/alpasim) simulator, starts Pilot as its driver, drives a recorded scene for 20 s
144
+ and prints the score, with a video of the drive.
145
+
146
+ ```bash
147
+ hf download SIMFORGE-AI/Pilot-4B-v1.5 --local-dir Pilot-4B-v1.5
148
+ cd Pilot-4B-v1.5
149
+ export HF_TOKEN=hf_... # a read token for an account with access to the scene dataset (below)
150
+ bash test_drive_alpasim.sh # or: bash test_drive_alpasim.sh <scene id>
151
+ ```
152
+
153
+ ```text
154
+ scene 28621273-20ed-4570-98d1-cd0dcf451fc1
155
+ score 1.000 (0 on an at-fault collision, off-road or lane-corridor exit; otherwise min(progress / 0.8, 1))
156
+ outcome no failure; progress 1.00 of the logged route (323 m)
157
+ video test-drives/28621273-…/alpasim/aggregate/videos/all/clipgt-28621273-…_camera_front_wide_120fov_default.mp4
158
+ rollout test-drives/28621273-…/alpasim/rollouts/clipgt-28621273-…/<rollout id>/rollout.asl
159
+ summary test-drives/28621273-…/alpasim/aggregate/results-summary.json
160
+ wall time 8 min 36 s for the drive
161
+ ```
162
+
163
+ You need Linux, an NVIDIA GPU with driver 570 or newer, Docker with the compose plugin and the NVIDIA Container
164
+ Toolkit (usable without `sudo`), `git`, [`uv`](https://docs.astral.sh/uv/) 0.9.17 or newer and a Rust toolchain
165
+ (AlpaSim's setup compiles an extension). The scenes come from the gated dataset
166
+ [nvidia/PhysicalAI-Autonomous-Vehicles-NuRec](https://huggingface.co/datasets/nvidia/PhysicalAI-Autonomous-Vehicles-NuRec):
167
+ request access on its page and accept its terms first. One GPU with 40 GB or more holds Pilot and the simulator; on
168
+ 24 GB cards, set `DRIVER_GPU` and `SIM_GPU` to two different GPUs. The first run clones AlpaSim into `./alpasim`,
169
+ installs it, builds its images and Pilot's, pulls the NuRec renderer image and downloads the scene (about 1.7 GB),
170
+ so it takes much longer than later runs.
171
+
172
+ The default scene, `28621273-20ed-4570-98d1-cd0dcf451fc1`, is a left turn from AlpaSim's `nurec_curated_val` split.
173
+ It was not used to train or tune Pilot. Any scene id in AlpaSim's `data/scenes/sim_scenes*.csv` works.
174
+
175
+ The script pins AlpaSim to commit `e121e59` (version 0.89.0, branch `e2e_challenge`), whose scorer produced the
176
+ AlpaSim results above, and drives with the same settings: the public challenge preset (`+e2e_challenge=dev`), the
177
+ nonlinear MPC controller with default gains, the renderer without the NRE harmonizer, and no driver calls during the
178
+ first 1.7 s, which are replayed from the log. Two things differ from our evaluation runs: those rendered only the three
179
+ cameras Pilot reads, which gives the same pixels faster, and they seeded Pilot's sampling from a deterministic session
180
+ id. A single drive is one sample, so its score can differ from ours on the same scene.
181
+
182
  ## Inputs and outputs
183
 
184
  | | |
 
201
  of them, with recovery targets mined from earlier versions' failures. 4 × A100, learning rate 5e-6, seed 43, about
202
  2 hours.
203
 
204
+ None of the 440 AlpaSim scenes (344 held-out, 96 tuning) or the 60 SF scenarios above appears in the training clips (checked by clip ID; the SF
205
  scenarios are authored and have no recorded drive). The training manifests are not part of this release.
206
 
207
  ## Limitations
 
218
  - **The planning head was selected.** v1.5 was the best of four training seeds on a validation panel, so some of
219
  its gain over its predecessor may not carry over. During training, the route for recorded drives was built from
220
  the path the human driver went on to take.
221
+ - **Fast cruising is weak.** On the held-out set Pilot scores 0.31 in fast-cruising scenes, no better than its base;
222
+ most of those failures are lane-corridor exits and leaving the road.
223
  - **Open loop is weaker** than the base model (see above).
224
 
225
  ## Files
 
233
  | `driver_profile.txt` | the benchmarked driver flags |
234
  | `inference.py`, `examples/` | single-decision example |
235
  | `run_alpasim_driver.sh`, `Dockerfile`, `requirements.txt` | closed-loop service and environment |
236
+ | `test_drive_alpasim.sh` | one closed-loop test drive in AlpaSim (sets up AlpaSim, runs Pilot, prints the score) |
237
  | `SHA256SUMS` | checksums; the weights and `pilot/` match the serving image used for every result above |
238
 
239
  Weights SHA-256: VLM `b9de4bf4…caccc`, perception `e964ca94…450ae`, planner `a8e5d329…b4d14` (full hashes in `SHA256SUMS`).