Skip to main content

A differentiable physics engine written in JAX.

Project description

BRAX

WARNING Only brax/training is actively being maintained as of 0.13.0. Instead of brax/envs, users should use MuJoCo Playground, all of which train well with brax/training. If you want to use Brax for physics simulation, please use MJX available at github.com/google-deepmind/mujoco (pip install mujoco_mjx) or MuJoCo Warp rather than Brax as a wrapper to MuJoCo physics simulation. We may repurpose brax purely as an RL library in the future.

Brax is a fast and fully differentiable physics engine used for research and development of robotics, human perception, materials science, reinforcement learning, and other simulation-heavy applications.

Brax is written in JAX and is designed for use on acceleration hardware. It is both efficient for single-device simulation, and scalable to massively parallel simulation on multiple devices, without the need for pesky datacenters.

Brax simulates environments at millions of physics steps per second on TPU, and includes a suite of learning algorithms that train agents in seconds to minutes:

One API, Four Pipelines

Brax offers four distinct physics pipelines that are easy to swap:

These pipelines share the same API and can run side-by-side within the same simulation. This makes Brax well suited for experiments in transfer learning and closing the gap between simulation and the real world.

Quickstart: Colab in the Cloud

Explore Brax easily and quickly through a series of colab notebooks:

  • Brax Basics introduces the Brax API, and shows how to simulate basic physics primitives.
  • Brax Training introduces Brax's training algorithms, and lets you train your own policies directly within the colab. It also demonstrates loading and saving policies.
  • Brax Training with MuJoCo XLA - MJX demonstrates training in Brax using the MJX physics simulator.
  • Brax Training with PyTorch on GPU demonstrates how Brax can be used in other ML frameworks for fast training, in this case PyTorch.

Using Brax Locally

To install Brax from pypi, install it with:

python3 -m venv env
source env/bin/activate
pip install --upgrade pip
pip install brax

You may also install from Conda or Mamba:

conda install -c conda-forge brax  # s/conda/mamba for mamba

Alternatively, to install Brax from source, clone this repo, cd to it, and then:

python3 -m venv env
source env/bin/activate
pip install --upgrade pip
pip install -e .

To train a model:

learn

Training on NVidia GPU is supported, but you must first install CUDA, CuDNN, and JAX with GPU support.

Learn More

For a deep dive into Brax's design and performance characteristics, please see our paper, Brax -- A Differentiable Physics Engine for Large Scale Rigid Body Simulation , which appeared in the Datasets and Benchmarks Track at NeurIPS 2021.

Citing Brax

If you would like to reference Brax in a publication, please use:

@software{brax2021github,
  author = {C. Daniel Freeman and Erik Frey and Anton Raichuk and Sertan Girgin and Igor Mordatch and Olivier Bachem},
  title = {Brax - A Differentiable Physics Engine for Large Scale Rigid Body Simulation},
  url = {http://github.com/google/brax},
  version = {0.14.0},
  year = {2021},
}

Acknowledgements

Brax has come a long way since its original publication. We offer gratitude and effusive praise to the following people:

  • Manu Orsini and Nikola Momchev who provided a major refactor of Brax's training algorithms to make them more accessible and reusable.
  • Erwin Coumans who has graciously offered advice and mentorship, and many useful references from Tiny Differentiable Simulator.
  • Baruch Tabanpour, a colleague who helped launch brax v2 and overhauled the contact library.
  • Shixiang Shane Gu and Hiroki Furuta, who contributed BIG-Gym and Braxlines, and a scene composer to Brax.
  • Our awesome open source collaborators and contributors. Thank you!

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

brax-0.14.0.tar.gz (205.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

brax-0.14.0-py3-none-any.whl (350.2 kB view details)

Uploaded Python 3

File details

Details for the file brax-0.14.0.tar.gz.

File metadata

  • Download URL: brax-0.14.0.tar.gz
  • Upload date:
  • Size: 205.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.12

File hashes

Hashes for brax-0.14.0.tar.gz
Algorithm Hash digest
SHA256 1102e890040493263e21163f962dd5b850e199726dfd62dc9075657c7d3371b3
MD5 af8f920431348e5e7c0c75d53fa6df7b
BLAKE2b-256 202d2ea28b8c445730452a019118e667416309f217e130fe004e378e6575a15b

See more details on using hashes here.

File details

Details for the file brax-0.14.0-py3-none-any.whl.

File metadata

  • Download URL: brax-0.14.0-py3-none-any.whl
  • Upload date:
  • Size: 350.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.12

File hashes

Hashes for brax-0.14.0-py3-none-any.whl
Algorithm Hash digest
SHA256 4306b41d7f2f70726657426754c43367e572dca01199a7f1a96d115c13f4352f
MD5 f006d7de018e40bb843510fd97e23bf9
BLAKE2b-256 e26e831f7903b21c2ffa61dc15e5703bd148084651e4aa2c354b140a3ae44dab

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page