Distilling the generalist#
Once you have an HDF5 distillation dataset (see Recording distillation data),
distillation_train.py trains a single generalist policy that imitates the
per-embodiment specialists. PyTorch Lightning under the hood; pure-PyTorch
script (no Isaac-Lab Python wrapper required).
Train a generalist#
python3 distillation_train.py \
--config-files configs/distillation_config.gin \
--dataset-path <path/to/specialists_dataset> \
--output-dir <output_dir>
Hyperparameters live in
configs/distillation_config.gin.
Override on the CLI by repeating --config-files or via gin
--gin_bindings overrides if you need to tweak a single value.
Evaluate the generalist#
The same run.py driver evaluates a generalist checkpoint when given via -d:
python run.py \
-c configs/eval_config.gin \
-o <output_dir> \
-b <path/to/x_mobility_ckpt> \
-d <path/to/generalist_policy_ckpt> \
--enable_cameras \
--video \
--video_interval <video_interval>
(Inside an activated dev shell, python is
already wired; on bare-metal install, prefix with ${ISAACLAB_PATH}/isaaclab.sh -p.)
Submitting to OSMO#
osmo/run_osmo.py is host-side (it shells out to docker and osmo CLIs).
The activate shim auto-routes it to host Python via the # COMPASS_HOST_SIDE
marker, so plain python osmo/run_osmo.py … works from the activated shell —
see the host-side callout in OSMO cloud submission for the full
explanation and fallbacks.
python osmo/run_osmo.py distill \
--experiment-name <name> \
--dataset-name <hdf5-dataset-name>
Full reference: OSMO cloud submission.
Where to go next#
Export the generalist to ONNX / TensorRT for inference.
GR00T post-training — use the same dataset to fine-tune the Isaac-GR00T VLA model.