Behavior cloning and flow-matching based policy training for EgoVerse datasets.
All commands below assume you are inside the egomimic/ subfolder.
cd egomimicLaunch interactive training with default configs on an example episode of RL2 lab robot data.
python trainHydra.py --config-name=train_zarrThis will:
- Filter episodes from SQL
- Download those episodes locally from cloudflare R2 (if not already present)
- Build the Zarr dataset
- Compute normalization statistics on the fly
- Start training using default configs
All Hydra configs live in:
hydra_configs/
Main subfolders:
hydra_configs/
├── train_zarr.yaml # top-level training config
├── data/ # dataset configs
├── model/ # model instantiations
├── hydra/launcher/ # SLURM submitit configs
For most use cases, you only need to modify the data YAML.
Open:
hydra_configs/data/aria.yaml
Modify:
folder_path→ local dataset directory\batch_size\num_workers
Reference run: - batch_size = 32\
num_workers = 10\- Single L40S GPU\
- 150k steps
python trainHydra.py --config-name=train_zarr --data=aria --model=hpt_bc_flow_ariaEdit:
hydra_configs/hydra/launcher/submitit.yaml
Match this to your sbatch configuration: - partition\
- GPUs\
- memory\
- timeout\
- nodes
python trainHydra.py --config-name=train_zarr --data=aria --model=hpt_bc_flow_aria -mThe -m flag enables Hydra multirun mode and triggers the Submitit
SLURM launcher.
Edit:
hydra_configs/data/eva_human_cotrain.yaml
Modify: - folder_path\
batch_size\num_workers
Interactive:
python trainHydra.py --config-name=train_zarr --data=eva_human_cotrain --model=hpt_cotrain_flow_shared_headSLURM:
python trainHydra.py --config-name=train_zarr --data=eva_human_cotrain --model=hpt_cotrain_flow_shared_head -mMain training config:
hydra_configs/train_zarr.yaml
DataSchematic:
- Maps post-transform dataset keys → batch keys expected by the model\
- Stores key shapes and normalization stats\
- Computes normalization dynamically during training
Each file in:
hydra_configs/data/
Contains:
train_datasets:
eva_bimanual:
_target_: egomimic.rldb.zarr.zarr_dataset_multi.MultiDataset._from_resolverVirtually merges multiple dataset units into a single dataset.
resolver:
_target_: egomimic.rldb.zarr.zarr_dataset_multi.S3EpisodeResolverResponsible for:
- Applying SQL filters\
- Finding matching dataset units\
- Instantiating Zarr datasets
key_map:
_target_: egomimic.rldb.embodiment.eva.Eva.get_keymapMaps:
raw dataset keys → pre-transform key names
transform_list:
_target_: egomimic.rldb.embodiment.eva.Eva.get_transform_listDefines:
- Frame transforms (e.g., base → camera frame)\
- Key renaming\
- Concatenation\
- Action chunking\
- Post-processing
filters:
episode_hash: "2025-12-26-18-07-46-296000"Filters are applied against the S3 SQL table to construct the dataset.
The list of available filters is visible directly in the SQL table.
mode: totalOptions: - train\
valid\percent\total
Controls how dataset units are sampled.
- SQL Filters\
S3EpisodeResolverfinds matching units\- Units instantiated as Zarr datasets\
MultiDatasetmerges them\- Embodiment transforms applied\
DataSchematicmaps to model batch keys\- Normalization computed\
- Training begins
Example:
python trainHydra.py --config-name=train_zarr --data=aria train.batch_size=64 train.num_workers=8- Always verify
folder_pathexists and has enough disk space.\ - Large datasets will auto-download from S3 if not present locally.\
- For debugging small runs, filter by a single
episode_hash. You can also set --logger=debug --trainer=debug to run fewer epochs.