Skip to main content

MINIMAL-MJX

Note that this README is a bit old, so some information may be inaccurate.

This repository represents starter code for MJX-based RL from the Dynamic Mobility Lab. The code has been built of off MuJoCo Playground and tailored to make policy training, saving, and evaluation easy and implements some nice-to-haves.

  1. Swappable backend, allowing for fast evaluation using numpy/C++ MuJoCo and fast training using JaX/MJX
  2. Base environment class that contains generic reward functions and useful functions
  3. Configuration files that allow you to set parameters for your envs + for PPO

There exists a requirements.txt in the home directory which includes the packages needed to run this code.

Steps to take to 'do RL'!

We will work of off the Cheetah environment from Deepmind's "DM Control". This guide is not meant to be comprehensive, but is hopefully enough information to fill in the gaps as you develop and look around the codebase.

  1. The setup basics

    Each environment has a reset and step function, which primarily operate off of a Markov Decision Process (MDP) state. In our case, this is represented as a class that looks like this

        @dataclass
        class MujocoState:
            data: mujoco.MjData
            obs: np.ndarray
            reward: float
            done: bool
            metrics: dict
            info: dict
    

    Note that you should treat info as a 'carry' variable between consecutive step functions. Store things here you need to use in future timesteps that are not ordinarily stored in data (i.e. store a history of system states x).

  2. Simulate your environment to make sure things look good

    Environments should be simulated and inspected before training. Once you are done developing your env, make a configuration file to specify variables specific to training runs, like PPO or reward weight parameters.

    For the Cheetah, one is already created. To simulate the environment, run

    python3 -m envs.simulate envs/dmcontrol/config/cheetah.yaml
    

    Under visualization, you should see a metrics plot as well as a video of your environment. Note that the policy here is simulated to output all zeros (see envs/simulate.py). Inspect these files to make sure things look good.

    For extra good measure, change the backend parameter in your config file to jnp to make sure your environment is JaX compatible.

  3. Train a policy

    Once your environment is ready and JaX compatible, you can train by running

    python3 -m learning.training.begin_run envs/dmcontrol/config/cheetah.yaml
    

    Note that this will train directly in your terminal session. A bash script has been provided at learning/training/train.sh that opens a tmux terminal for this (useful if you want to train for long periods of time). Make sure to change your conda environment name in this script.

    Within your save directory mentioned in your config file, a new directory will be created in which intermediate and final training results will be saved.

  4. Rollout your trained policy

    Once your policy is finished training, simply run

    python3 -m eval.rollout_policy envs/dmcontrol/config/cheetah.yaml
    

    This will rollout your policy, plot metrics of your reward function, and save a video of your result. Make sure to use an np backend for quick evaluation!

    If you would like to rollout older policies, check the directory of your past training runs. There should be a config there, and you can simply replace the config above with that one (running that specific older policy). Note that your code might have changed, so this config holds a git commit that references when the training was run.

Release files for minimal-mjx 0.1.15

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for minimal-mjx 0.1.15
File Size Uploaded
minimal_mjx-0.1.15.tar.gz 22.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for minimal-mjx 0.1.15
File Interpreter ABI Platform
minimal_mjx-0.1.15-py3-none-any.whl Python 3 none any Details

Total release size: 48.4 kB

Release files / minimal_mjx-0.1.15.tar.gz

Download URL minimal_mjx-0.1.15.tar.gz
Size 22.9 kB
Tags Source
SHA-256 checksum
How to use checksums
abc1ab932e23270f694a336635bdf2741266b37d2cc5f1d8fa06ca939679f7f2
BLAKE2b-256 checksum
How to use checksums
a97817535c93ace38297771b3463a845ce7afda5dd70000dbe59dd61156f7773
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 28, 2026.

Transparency log

Release files / minimal_mjx-0.1.15-py3-none-any.whl

Download URL minimal_mjx-0.1.15-py3-none-any.whl
Size 25.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
8c1d647f2431136cc662d0c5b1c2f25c384256ccfa7064a9b3c34f480ad503f7
BLAKE2b-256 checksum
How to use checksums
b28cb637de1da1c2125ed3d7a6e1551707da0d9c1d0311d7a7fa30f995810e05
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 28, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.15 This release

2 release files

0.1.13

2 release files

0.1.12

2 release files

0.1.11

2 release files

0.1.10

2 release files

0.1.9

2 release files

0.1.8

2 release files

0.1.6

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page