feat/kitscenes-local-training-scripts - #189
FLagbusted wants to merge 2 commits into
Conversation
…warefoundation#168 Implements exploratory single-GPU training of the Reactive branch on contributor machines without the full cluster pipeline. Addresses riita10069's point in autowarefoundation#168 for source code. Relates-to: autowarefoundation#168, autowarefoundation#172 Signed-off-by: FLagbusted <justthefourofus@proton.me>
|
for now I’ve uploaded the Bezier and Flow Matching checkpoints from the 585-scene training split to Drive. You can access them here: https://drive.google.com/drive/folders/11dElZ0g_BDk7DELG_2WLt19krHGMOWCb?usp=sharing These are the epoch-0 model weights produced by the local single-GPU training runs reported in this PR. Please note: the associated evaluation uses the 65-scene validation split from the same custom 585/65 split, not the frozen train_il validation manifest. Continuing Training: |
|
Read through the scripts — the rotating loader is careful work, and the 1. Evaluation runs with the route switched off, which is upstream of the epoch-0 table. out = model(
camera_tiles, map_context, visual_history, egomotion_history,
route_mask=route_mask,
projection=PinholeProjection(camera_params),
geometry_type="pinhole",
mode="infer",
)
2. The baseline is named for a different baseline. The README describes it correctly — 3. The retry in the baseline script has no success guard. if not download_success:
print(f"Skipping scene {scene_id} due to persistent network failures.")
continue
|
|
Local execution scripts are a very important initiative. #187 migit be similar..? |
- eval_checkpoint.py: pass route_valid and map_valid to model at eval time; without route_valid ReactiveE2E gates route with default=False, zeroing the route channels and making ADE pessimistic - rename constant_velocity_baseline.py -> hold_last_action_baseline.py and update label: holding last observed (accel, curvature) is the harder bar, not zero-accel constant velocity (per gcordova10 review) - hold_last_action_baseline.py: add download_success guard in retry block; previously a network failure fell through and was counted as a short scene, which could produce a wrong sample count and wrong ADE with no signal Relates-to: gcordova10's review on this PR Signed-off-by: FLagbusted <justthefourofus@proton.me>
Summary
Adds local training and evaluation scripts for the KITScenes grid search requested in #168. The scripts allow contributors to run exploratory single-GPU experiments without the full cluster training pipeline, while keeping local disk usage bounded by downloading and removing one scene at a time.
What's in here
build_shard_split.py— builds the custom 585/65 scene split requested in Federated Model Training #168rotating_dataset.py— downloads, extracts, yields, and deletes one scene at a time viaPinnedKITScenesDownloadertrain_one_combo.py— Bezier training with bfloat16 autocasttrain_one_combo_fm.py— Flow Matching training viacompute_planner_loss(Fix/ part of #115 compute planner loss #172)eval_checkpoint.py— open-loop ADE/FDE evaluation at 3 s and 6.4 sconstant_velocity_baseline.py— no-perception reference baseline using the last observed acceleration/curvature@gcordova10 thanks for this.
Epoch-0 results
Configuration:
swin_v2_tiny+residual, custom 585-scene training / 65-scene validation split, 4,049 validation samples.The constant-velocity baseline was evaluated first on the same validation split before the learned models.
and 1 is expected for epoch 0 for Flow matching's comfort violation rate and which improves over furthur epochs.
At epoch 0, both learned models remain worse than the constant-velocity baseline. Flow Matching improves over Bezier on all reported ADE/FDE horizons, but still does not pass the baseline gate. Further training epochs are in progress.
Validation used the custom 65-scene split from the 585/65 split. 18 scenes were skipped because they had fewer than the required 129 ego poses, leaving 4,049 usable samples. These results are not directly comparable with runs using the frozen
train_ilvalidation scope.This is a custom 585/65 split, not the frozen training/validation manifest used by the standard
train_ilpipeline, so these numbers are not directly comparable with results reported using--validation_scope full.Hardware / training configuration
Experiments were run on an NVIDIA GeForce RTX 4060 8 GB with
swin_v2_tiny+residual.To fit the models on the 8 GB GPU, the runs use a reduced BEV grid and gradient checkpointing.
cross_attnfusion requires a smaller BEV configuration (--bev_h 60 --bev_w 60, ≤4096 tokens).Checkpoints
I will upload the Bezier and Flow Matching checkpoints from the 585-scene training split to Drive and add the links here later. These are the epoch-0 model weights produced by the local single-GPU training runs reported in this PR. Evaluation was performed on the corresponding 65-scene validation split defined by the same custom split.
Further participation
Additional training epochs are still in progress. More contributors with local GPUs are encouraged to run additional epochs/configurations and report results using the same split and evaluation procedure.
Relates-to: #168, #172