# metamorph **Repository Path**: lsb829/metamorph ## Basic Information - **Project Name**: metamorph - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-05-07 - **Last Updated**: 2026-05-07 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # MetaMorph: Learning Universal Controllers with Transformers This is the code for the paper **MetaMorph: Learning Universal Controllers with Transformers**
Agrim Gupta, Linxi Fan, Surya Ganguli, Fei-Fei Li
Multiple domains like vision, natural language, and audio are witnessing tremendous progress by leveraging Transformers for large scale pre-training followed by task specific fine tuning. In contrast, in robotics we primarily train a single robot for a single task. However, modular robot systems now allow for the flexible combination of general-purpose building blocks into task optimized morphologies. However, given the exponentially large number of possible robot morphologies, training a controller for each new design is impractical. In this work, we propose MetaMorph, a Transformer based approach to learn a universal controller over a modular robot design space. MetaMorph is based on the insight that robot morphology is just another modality on which we can condition the output of a Transformer. Through extensive experiments we demonstrate that large scale pre-training on a variety of robot morphologies results in policies with combinatorial generalization capabilities, including zero shot generalization to unseen robot morphologies. We further demonstrate that our pre-trained policy can be used for sample-efficient transfer to completely new robot morphologies and tasks.
## Code Structure The code consists of two main components: 1. [Metamorph](tools/train_ppo.py): Code for joint pre-training of different robots. 2. [Environments and evaluation tasks](metamorph/envs): Three pre-training environments and two evaluation environments. ## Benchmark We also provide Unimal-100 benchmark. The benchmark consists of 100 train morphologies, 1600 morphologies with dynamics variations, 800 morphologies with kinematics variations, and 100 test morphologies. ```bash # Install gdown pip install gdown # Download data gdown 1LyKYTCevnqWrDle1LTBMlBF58RmCjSzM # Unzip unzip unimals_100.zip ``` ## Setup We provide [Dockerfile](docker/Dockerfile) for easy installation and development. If you prefer to work without docker please take a look at Dockerfile and ensure that your local system has all the necessary dependencies installed. ## Training ```bash # Build docker container. Ensure that MuJoCo license is present: docker/mjkey.txt ./scripts/build_docker.sh # Joint pre-training. Please change MOUNT_DIR location inside run_docker_gpu.sh # Finally ensure that ENV.WALKER_DIR points to benchmark files and is accessible # from docker. ./scripts/run_docker_gpu.sh python tools/train_ppo.py --cfg ./configs/ft.yaml ``` The default parameters assume that you are running the code on a machine with atlesat 1 GPU. ## Citation If you find this code useful, please consider citing: ```bibtex @inproceedings{ gupta2022metamorph, title={MetaMorph: Learning Universal Controllers with Transformers}, author={Agrim Gupta and Linxi Fan and Surya Ganguli and Li Fei-Fei}, booktitle={International Conference on Learning Representations}, year={2022}, url={https://openreview.net/forum?id=Opmqtk_GvYL} } ``` ## Credit This codebase would not have been possible without the following amazing open source codebases: 1. [ikostrikov/pytorch-a2c-ppo-acktr-gail](https://github.com/ikostrikov/pytorch-a2c-ppo-acktr-gail) 2. [hill-a/stable-baselines](https://github.com/hill-a/stable-baselines) 3. [deepmind/dm_control](https://github.com/deepmind/dm_control) 4. [openai/multi-agent-emergence-environments](https://github.com/openai/multi-agent-emergence-environments)