GPUDrive is a GPU-accelerated, multi-agent driving simulator that runs at 1 million FPS. The simulator is written in C++, built on top of the Madrona Game Engine. We provide Python bindings and gymnasium
wrappers in torch
and jax
, allowing you to interface with the simulator in Python using your preferred framework.
For more details, see our paper 📜 and the 👉 introduction tutorials, which guide you through the basic usage.
Agents in GPUDrive can be controlled by any user-specified actor.Algorithm | Reference | README |
---|---|---|
IPPO | Paper | Source |
To build GPUDrive, ensure you have all the dependencies listed here. Briefly, you'll need a recent version of Python and CMake (>= version 3.22), as well as Xcode on macOS or Visual Studio on Windows.
Once you have the required dependencies, clone the repository (don't forget --recursive!):
git clone --recursive https://github.com/Emerge-Lab/gpudrive.git
cd gpudrive
Optional: If you want to use the Madrona viewer in C++ (Not needed to render with pygame)
To build the simulator with visualization support on Linux (build/viewer
), you will need to install X11 and OpenGL development libraries. Equivalent dependencies are already installed by Xcode on macOS. For example, on Ubuntu:
sudo apt install libx11-dev libxrandr-dev libxinerama-dev libxcursor-dev libxi-dev mesa-common-dev libc++1
Then, you can choose between two options for building the simulator:
Option 1️⃣ : Manual install
For Linux and macOS, use the following commands:
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make -j # cores to build with, e.g. 32
cd ..
For Windows, open the cloned repository in Visual Studio and build the project using the integrated cmake
functionality.
Next, set up the Python components of the repository with pip:
pip install -e . # Add -Cpackages.madrona_escape_room.ext-out-dir=PATH_TO_YOUR_BUILD_DIR on Windows
Option 2️⃣ : Poetry install
First create a conda environment using environment.yml
:
conda env create -f environment.yml
Activate the environment:
conda activate gpudrive
Run:
poetry install
Test whether the installation was successful by importing the simulator:
import gpudrive
To get started, see our intro tutorials. These tutorials take approximately 30-60 minutes to complete and will guide you through the dataset, simulator, and how to populate the simulator with different types of actors.
To further test the setup, you can run the pytests in the root directory:
pytest
To test if the simulator compiled correctly (and python lib did not), try running the headless program from the build directory.
cd build
./headless CPU 1 # Run on CPU, 1 step
Two versions of the dataset are available:
- a mini-one that is about 1 GB and consists of 1000 training files and 100 validation / test files at: Dropbox Link.
- the full dataset (150 GB) and consists of 134453 training files and 12205 validation / test files: Dropbox Link
The simulator supports initializing scenes from the Nocturne
dataset. The input parameter for the simulator json_path
takes in a path to a directory containing the files in the Nocturne format. The SceneConfig
dataclass in pygpudrive/env/config.py
dataclass is used to configure how scenes are selected from a folder with traffic scenarios.
If you use GPUDrive in your work, please cite us:
@misc{kazemkhani2024gpudrivedatadrivenmultiagentdriving,
title={GPUDrive: Data-driven, multi-agent driving simulation at 1 million FPS},
author={Saman Kazemkhani and Aarav Pandya and Daphne Cornelisse and Brennan Shacklett and Eugene Vinitsky},
year={2024},
eprint={2408.01584},
archivePrefix={arXiv},
primaryClass={cs.AI},
url={https://arxiv.org/abs/2408.01584},
}
If you find a bug of are missing features, please feel free to create an issue or start contributing! That link also points to a learning benchmark complete with training logs and videos of agent behaviors via wandb
.