- Training Code
- Evaluation Pipelines
- Pretrained Evaluator Checkpoints
- Benchmark Code
- Inference Code
- Sim-to-Real Deployment Code
- OMG-Data
- Pretrained Checkpoints
The usual end-to-end workflow is:
- Install the environment.
- Download OMG-Data, model checkpoints, and HoloMotion artifacts.
- Materialize OMG-Data for faster training.
- Compute normalization stats.
- Train a diffusion model.
- Export ONNX for TensorRT/CUDA inference.
- Run generation or full pipeline modes.
- Run benchmarks.
- Deploy to a G1 robot when needed.
cd /path/to/OMG
make venv
source .venv/bin/activate
make install
export PYTHONPATH=src
export TOKENIZERS_PARALLELISM=falseFor China mainland networks:
make install-cnSee Installation for manual uv commands and optional
task-specific extras.
OMG-Data and pretrained OMG checkpoints will be released on Hugging Face:
- OMG-Data (coming soon)
- Materialized OMG-Data (coming soon)
- OMG checkpoints (coming soon)
- OMG evaluator (coming soon)
Text-conditioned training and generation require the Hugging Face t5-base
text encoder. By default, configs load it from ${OMG_MODELS_ROOT}/t5-base-local.
Download t5-base for offline runs, or override
model.text_encoder.model_name with another local path or Hugging Face model id.
HoloMotion weights are not redistributed by OMG. Download HoloMotion models from the official HoloMotion repository or HoloMotion Hugging Face artifacts.
Recommended local layout:
data/OMG-Data/
omg_data/
materialized/
models/
generation/
evaluator/
t5-base-local/
holomotion/
motion_tracking/model.onnx
velocity_tracking/model.onnx
Set explicit roots when using external storage:
export OMG_DATA_ROOT=/path/to/OMG-Data
export OMG_MATERIALIZED_ROOT=/path/to/OMG-Data/materialized
export OMG_MODELS_ROOT=/path/to/OMG-modelsMaterialization precomputes fixed-window training shards. It is recommended for full training because it removes repeated source parsing and feature assembly from the training loop.
You can download precomputed materialized OMG-Data into OMG_MATERIALIZED_ROOT, or generate the
same layout locally from source OMG-Data:
scripts/materialize_omg_data.sh --overwriteTrain with materialized data by using:
data=omg_data_materializedFor small debugging runs or custom tiny datasets, source data can be used directly with:
data=omg_dataCompute normalization statistics before training. The default representation config expects the generated stats file at:
assets/stats/g1_125d_stats.json
PYTHONPATH=src python -m omg.cli.generation.compute_stats \
--data-config configs/generation/data/omg_data.yaml \
--representation-config configs/generation/representation/125d.yaml \
--paths-config configs/generation/paths/default.yaml \
--output assets/stats/g1_125d_stats.jsonRecompute this file whenever the training data, representation, sequence length, or preprocessing changes.
Example 50M training run:
CUDA_VISIBLE_DEVICES=0,1,2,3 \
PYTHONPATH=src python -m omg.cli.generation.train \
exp=50m \
data=omg_data_materialized \
trainer=4gpu \
logger=wandb \
exp_name=50m_release_trainModel-size configs are available under configs/generation/exp/:
50m.yaml 100m.yaml 300m.yaml 500m.yaml 1b.yaml
See Training for resume, initialization, and config details.
Export a TensorRT-compatible denoiser step from a checkpoint:
PYTHONPATH=src python -m omg.cli.generation.export_onnx \
--exp 50m \
--ckpt_path outputs/50m_release_train/checkpoints/last.ckpt \
--output models/generation/onnx/50m/last_denoiser_step.onnx \
--batch_size 2 \
--device cudaThe exporter writes a metadata sidecar next to the ONNX file. Runtime planners use it to recover sequence length, condition dimensions, representation, and diffusion settings.
Offline async generation with HoloMotion tracking:
PYTHONPATH=src python -m omg.cli.pipeline.main \
--mode async \
--diffusion-onnx models/generation/onnx/50m/last_denoiser_step.onnx \
--holomotion-onnx models/holomotion/motion_tracking/model.onnx \
--seed-motion /path/to/seed_motion.npz \
--condition-sequence "text: walk forward" \
--num-frames 300 \
--video \
--output-root outputs_pipelineSupported pipeline modes:
diffusion-onlytracker-onlysyncasyncoffline-track
See Generation and Tracking.
Benchmarks that report evaluator-based distribution and retrieval metrics use a pretrained evaluator checkpoint. It will be released at:
https://huggingface.co/<org>/OMG-Evaluator
Recommended local path:
models/evaluator/pretrained.ckpt
Prepare fixed benchmark sample manifests:
PYTHONPATH=src python -m omg.cli.evaluation.prepare_samples \
--data omg_data \
--exp 50m \
--output_dir outputs/benchmark_samplesRun text, audio, human-reference, or artifact benchmarks:
PYTHONPATH=src python -m omg.cli.generation.benchmark text \
--exp 50m \
--ckpt_path outputs/50m_release_train/checkpoints/last.ckpt \
--evaluator_checkpoint models/evaluator/pretrained.ckpt \
--output_dir outputs/benchmarks/50m_textSee Benchmark for modality-specific commands and tracker-executed evaluation.
Realtime deployment uses:
- HoloMotion deployment on the G1 Orin.
- OMG realtime planner server on a GPU workstation.
- OMG real bridge on the G1 Orin.
For real-robot deployment, prefer the HoloMotion velocity-tracking model:
models/holomotion/velocity_tracking/model.onnx
See Realtime G1 Deployment for the full launch sequence.
- Installation
- Artifacts
- Data
- Training
- Generation
- Tracking
- Realtime G1 Deployment
- Benchmark
- Configuration
- Development
This project is released under the MIT License.
