A Reinforcement Learning Library for Research and Education
| Section | Description |
|---|---|
| Goals | The philosophy of rlberry |
| Installation | How to install rlberry |
| Getting started | A quick usage guide of rlberry |
| Documentation | A link to the documentation |
| Contributing | A guide for contributing |
| Citation | How to cite this work |
-
Write detailed documentation and comprehensible tutorial/examples (Jupyter Notebook) for each implemented algorithm.
-
Provide a general interface for agents, that
-
puts minimal constraints on the agent code (=> making it easy to include new algorithms and modify existing ones);
-
allows comparison between agents using a simple and unified evaluation interface (=> making it easy, for instance, to compare deep and "traditional" RL algorithms).
-
-
Unified seeding mechanism: define only one global seed, from which all other seeds will inherit, enforcing independence of the random number generators.
-
Simple interface for creating and rendering new environments.
It is suggested to create a virtual environment using Anaconda or Miniconda:
git clone https://github.com/rlberry-py/rlberry.git
conda create -n rlberry python=3.7Install without heavy libraries (e.g. pytorch).
conda activate rlberry
pip install -e .Install with all features,
conda activate rlberry
pip install -e .[full]which includes:
Numbafor just-in-time compilation of algorithms based on dynamic programming,PyTorchfor Deep RL agents,Optunafor hyperparameter optimization,ffmpeg-pythonfor saving videos,PyOpenGLfor more rendering options.
To run tests, install test dependencies with pip install -e .[test] and run pytest. To run tests with coverage, install test dependencies and run bash run_testscov.sh. See coverage report in cov_html/index.html.
The documentation is under construction and will be available here.
Want to contribute to rlberry? Please check our contribution guidelines. A list of interesting TODO's will be available soon. If you want to add any new agents or environments, do not hesitate to open an issue!
-
When inheriting from the
Agentclass, make sure to callAgent.__init__(self, env, **kwargs)using**kwargsin case new features are added to the base class, and to make sure thatcopy_envandreseed_envare always an option to any agent. -
Convention for verbose in the agents:
verbose=0: nothing is printedverbose>1: print progress messages
Errors and warnings are printed using the logging library.