@@ -11,7 +11,9 @@ This guide covers how to use AlgEngine for training end-to-end autonomous drivin
1111- [ Fine-Tuning] ( #fine-tuning )
1212- [ Configuration] ( #configuration )
1313- [ Model Architectures] ( #model-architectures )
14+ - [ Advanced Training] ( #advanced-training )
1415- [ Troubleshooting] ( #troubleshooting )
16+ - [ Performance Optimization] ( #performance-optimization )
1517
1618---
1719
@@ -25,6 +27,9 @@ cd projects/AlgEngine
2527# Open-loop evaluation
2628./scripts/e2e_dist_eval.sh < config> < checkpoint> < num_gpus>
2729
30+ # Full train set evaluation (chunked)
31+ bash scripts/e2e_dist_eval_navtrain_chunked.sh < config> < checkpoint> < num_gpus> [num_chunks]
32+
2833# Rare case extraction
2934python scripts/rare_case_sampling_by_pdms.py \
3035 --pdm-result < csv_file> \
@@ -248,7 +253,7 @@ conda activate algengine
248253cd projects/AlgEngine
249254
250255python scripts/rare_case_sampling_by_pdms.py \
251- --pdm-result work_dirs /e2e_vadv2_50pct/navtrain.csv \
256+ --pdm-result ${WORLDENGINE_ROOT} /experiments/worldengine /e2e_vadv2_50pct/navtrain.csv \
252257 --base-split configs/navsim_splits/navtrain_split/navtrain_50pct.yaml \
253258 --output-dir configs/navsim_splits/navtrain_split/e2e_vadv2_50pct_rare
254259```
@@ -263,10 +268,10 @@ python scripts/rare_case_sampling_by_pdms.py \
263268The script generates three rare case split files:
264269
265270```
266- configs/navsim_splits/navtest_split /e2e_vadv2_50pct_rare/
267- ├── navtest_collision .yaml # Collision scenarios
268- ├── navtest_off_road .yaml # Off-road scenarios
269- └── navtest_ep_1pct. yaml # Low ego-progress (bottom 1%)
271+ configs/navsim_splits/navtrain_split /e2e_vadv2_50pct_rare/
272+ ├── navtrain_50pct_collision .yaml # Collision scenarios
273+ ├── navtrain_50pct_off_road .yaml # Off-road scenarios
274+ └── navtrain_50pct_ep_1.0pct. yaml # Low ego-progress (bottom 1%)
270275```
271276
272277### Using Custom Thresholds
@@ -287,10 +292,10 @@ ep_threshold = df['ego_progress'].quantile(0.05) # From 0.01 (1% -> 5%)
287292
288293``` bash
289294# Check how many scenarios were extracted
290- wc -l configs/navsim_splits/navtest_split /e2e_vadv2_50pct_rare/* .yaml
295+ wc -l configs/navsim_splits/navtrain_split /e2e_vadv2_50pct_rare/* .yaml
291296
292297# View first few scenarios
293- head -20 configs/navsim_splits/navtest_split /e2e_vadv2_50pct_rare/navtest_collision .yaml
298+ head -20 configs/navsim_splits/navtrain_split /e2e_vadv2_50pct_rare/navtrain_50pct_collision .yaml
294299```
295300
296301---
@@ -303,7 +308,22 @@ Fine-tune a trained model on rare cases using reinforcement learning.
303308
304309** Important:** Rare case extraction and Rollout data must be generated by SimEngine before fine-tuning. This involves:
305310
306- 1 . ** Run SimEngine Rollout** to generate trajectory data:
311+ 1 . ** Convert nuPlan Data to SimEngine Format** — convert rare case scenarios to SimEngine scenario format:
312+ ``` bash
313+ conda activate simengine
314+
315+ python projects/SimEngine/worldengine/utils/dataset_utils/nuplan/digitaltwin_nuplan_converter_navsim_filter.py \
316+ --navsim-filters $ALGENGINE_ROOT /configs/navsim_splits/navtrain_split/e2e_vadv2_50pct_rare/navtrain_50pct_collision.yaml \
317+ $ALGENGINE_ROOT /configs/navsim_splits/navtrain_split/e2e_vadv2_50pct_rare/navtrain_50pct_ep_1.0pct.yaml \
318+ $ALGENGINE_ROOT /configs/navsim_splits/navtrain_split/e2e_vadv2_50pct_rare/navtrain_50pct_off_road.yaml \
319+ --out-dir data/sim_engine/scenarios/original/navtrain_vadv2_50pct_rare \
320+ --num-processes 8
321+ ```
322+ ** Output:** ` data/sim_engine/scenarios/original/navtrain_vadv2_50pct_rare/all_scenarios.pkl `
323+
324+ For full parameter reference, see [ SimEngine: Convert nuPlan Data] ( simengine_usage.md#convert-nuplan-data-to-simengine-format ) .
325+
326+ 2 . ** Run SimEngine Rollout** to generate trajectory data:
307327 ``` bash
308328 # Multi-GPU distributed rollout (recommended for large datasets)
309329 export WORLDENGINE_ROOT=/path/to/WorldEngine
@@ -312,11 +332,11 @@ Fine-tune a trained model on rare cases using reinforcement learning.
312332 $WORLDENGINE_ROOT /projects/AlgEngine/configs/worldengine/e2e_vadv2_50pct.py \
313333 $WORLDENGINE_ROOT /data/alg_engine/ckpts/e2e_vadv2_50pct_ep8.pth \
314334 e2e_vadv2_50pct \
315- navtrain_50pct_collision \
335+ navtrain_vadv2_50pct_rare \
316336 navtrain
317337 ```
318338
319- 2 . ** Rollout Output** is saved to:
339+ 3 . ** Rollout Output** is saved to:
320340 ```
321341 experiments/closed_loop_exps/e2e_vadv2_50pct/navtrain_NR/
322342 └── WE_output/
@@ -327,7 +347,7 @@ Fine-tune a trained model on rare cases using reinforcement learning.
327347 └── all_scenes_pdm_averages_NR.csv
328348 ```
329349
330- 3 . ** Reorganize to AlgEngine Format** (creates ` openscene-synthetic ` dataset):
350+ 4 . ** Reorganize to AlgEngine Format** (creates ` openscene-synthetic ` dataset):
331351 ``` bash
332352 conda activate simengine
333353
@@ -339,7 +359,7 @@ Fine-tune a trained model on rare cases using reinforcement learning.
339359
340360 ** Output location:** ` data/alg_engine/openscene-synthetic/ `
341361
342- 4 . ** Verify Data Structure:**
362+ 5 . ** Verify Data Structure:**
343363 ``` bash
344364 data/alg_engine/openscene-synthetic/
345365 ├── sensor_blobs/ # Replayed scenario sensor data
@@ -444,10 +464,10 @@ configs/
444464 ├── navtrain_split/
445465 │ ├── navtrain.yaml # Full training set
446466 │ ├── navtrain_50pct.yaml # 50% subset
447- │ └── e2e_vadv2_50pct_ep8/ # Rare case splits
467+ │ └── e2e_vadv2_50pct_rare/ # Rare case splits
448468 │ ├── navtrain_50pct_collision.yaml
449469 │ ├── navtrain_50pct_off_road.yaml
450- │ └── navtrain_50pct_ep_1pct .yaml
470+ │ └── navtrain_50pct_ep_1.0pct .yaml
451471 └── navtest_split/
452472 ├── navtest.yaml # Full test set
453473 └── navtest_failures.yaml # Failure subset
0 commit comments