diff --git a/README.md b/README.md index d81a237..52a98cc 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,18 @@ ## ✨ Features - * **No deep learning dependencies**: The policy stays on the server. This side needs only `gymnasium`, `websockets` and `msgpack`, so environments pinned to old `mujoco-py` or `cython<3` can be used with a modern training stack. + * **No deep learning dependencies**: The policy stays on the server. The base + install declares nine runtime dependencies - `gymnasium`, `websockets` and + `msgpack` do the environment and wire work, next to `loguru`, `dm-tree`, + `tyro`, `plugrl-protocol`, `pandas` and `imageio[ffmpeg]` - and none of them + is a deep learning framework, so environments pinned to old `mujoco-py` or + `cython<3` can be used with a modern training stack. E1 measures that bare + install at 30 packages and 224M on Linux with no CUDA wheels + (`plugrl-server/experiments/e1-dependency-conflict/`, round 4). Correction: + this line previously said the client needs "only `gymnasium`, `websockets` + and `msgpack`", which named three of the nine declared dependencies. + `pandas` is declared but is not imported anywhere in `src/` today - it is + weight in the install, not a requirement of the runtime. * **Distributed communication**: `websockets` plus `msgpack` for asynchronous transfer between the server and any number of env clients, across machines. * **Modular design**: Separates the environment-side runtime (`plugrl-env-client`) from the shared protocol layer (`plugrl-protocol`). * **Command-line interface**: A `tyro`-powered CLI for starting and managing env clients. @@ -50,16 +61,26 @@ The easiest way to get started is by cloning the repository and using `uv` to ma uv sync --extra mujoco ``` - Everything, with `uv`: + All six extras, with `uv`: ```bash - uv sync --extra mujoco --extra robomimic --extra atari --extra classic --extra libero + uv sync --extra mujoco --extra robomimic --extra atari --extra classic --extra libero --extra d4rl ``` ``` - pip install -e ".[mujoco, robomimic, atari, classic, libero]" + pip install -e ".[mujoco, robomimic, atari, classic, libero, d4rl]" ``` + Correction: these two lines were labelled "Everything" but listed only five + of the six extras `pyproject.toml` declares - `d4rl` was missing, while the + environment table below names it as the extra for `d4rl-v1`. Against the + committed `uv.lock`, all six resolve to 100 packages and the old five to 97 + (`uv sync --frozen --dry-run`, uv 0.9.8): `robomimic` already carries `d4rl` + and `mujoco-py`, so the `d4rl` extra itself adds `gymnasium-robotics`, + `mujoco-py-cython3` and `pettingzoo`. Note that "all six" is not a light + install - E1 measures the env client with the `robomimic` extra at 7.2G with + 16 CUDA wheels, because robomimic ships its own policy learning code. + Note: `robomimic` and `libero` pull in `egl-probe`, whose legacy CMake build needs `CMAKE_POLICY_VERSION_MINIMUM=3.5` when using CMake 4+. `uv` is configured in this repository to apply that automatically. If you install