Gradient Boosting Reinforcement Learning (GBRL)
GBRL is a Python-based Gradient Boosting Trees (GBT) library, similar to popular packages such as XGBoost, CatBoost, but specifically designed and optimized for reinforcement learning (RL). GBRL is implemented in C++/CUDA aimed to seamlessly integrate within popular RL libraries.
Overview
GBRL adapts the power of Gradient Boosting Trees to the unique challenges of RL environments, including non-stationarity and the absence of predefined targets. The following diagram illustrates how GBRL uses gradient boosting trees in RL:
GBRL features a shared tree-based structure for policy and value functions, significantly reducing memory and computational overhead, enabling it to tackle complex, high-dimensional RL problems.
Key Features:
- GBT Tailored for RL: GBRL adapts the power of Gradient Boosting Trees to the unique challenges of RL environments, including non-stationarity and the absence of predefined targets.
- Optimized Actor-Critic Architecture: GBRL features a shared tree-based structure for policy and value functions. This significantly reduces memory and computational overhead, enabling it to tackle complex, high-dimensional RL problems.
- Hardware Acceleration: GBRL leverages CUDA for hardware-accelerated computation, ensuring efficiency and speed.
- Seamless Integration: GBRL is designed for easy integration with popular RL libraries. We implemented GBT-based actor-critic algorithm implementations (A2C, PPO, and AWR) in stable_baselines3 GBRL_SB3.
Performance
The following results, obtained using the GBRL_SB3 repository, demonstrate the performance of PPO with GBRL compared to neural-networks across various scenarios and environments:
Getting started
Dependencies
- Python 3.9 or higher
Installation
GBRL provides pre-compiled binaries for easy installation. Choose one of the following options:
CPU-only installation (default):
pip install gbrl
GPU-enabled installation (requires CUDA 12 runtime libraries):
pip install gbrl-gpu
For further installation details and dependencies see the documentation.
Usage Example
For a detailed usage example, see tutorial.ipynb
Current Supported Features
Tree Fitting
- Greedy (Depth-wise) tree building - (CPU/GPU)
- Oblivious (Symmetric) tree building - (CPU/GPU)
- L2 split score - (CPU/GPU)
- Cosine split score - (CPU/GPU)
- Uniform based candidate generation - (CPU/GPU)
- Quantile based candidate generation - (CPU/GPU)
- Supervised learning fitting / Multi-iteration fitting - (CPU/GPU)
- MultiRMSE loss (only)
- Categorical inputs
- Input feature weights - (CPU/GPU)
- Monotonic constraints - (CPU/GPU, oblivious trees; the whole model must use SGD, Adam is not allowed on any output)
GBT Inference
- SGD optimizer - (CPU/GPU)
- ADAM optimizer - (CPU only)
- Control Variates (gradient variance reduction technique) - (CPU only)
- Shared Tree for policy and value function - (CPU/GPU)
- Linear and constant learning rate scheduler - (CPU/GPU, linear scheduler GPU only for Oblivious trees)
- Support for up to two different optimizers (e.g., policy/value) - (CPU/GPU if both are SGD)
- SHAP value calculation (optimizer-aware;
return_base=Truegives values that reconstruct the prediction)
Documentation
For comprehensive documentation, visit the GBRL documentation.
Contributing
To contribute to GBRL, please review and sign the Contributor License Agreement (CLA) available at: https://github.com/NVlabs/gbrl/blob/master/CLA.md
Citation
@inproceedings{
fuhrer2025gradient,
title={Gradient Boosting Reinforcement Learning},
author={Benjamin Fuhrer and Chen Tessler and Gal Dalal},
booktitle={Forty-second International Conference on Machine Learning},
year={2025},
url={https://arxiv.org/abs/2407.08250}
}
Licenses
Copyright © 2024-2026, NVIDIA Corporation. All rights reserved.
This work is made available under the NVIDIA MIT License. Click here to view a copy of this license.
Metadata
Release files for gbrl-gpu 1.1.9
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| gbrl_gpu-1.1.9.tar.gz | 272.9 kB | Details |
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| gbrl_gpu-1.1.9-cp312-cp312-win_amd64.whl | CPython 3.12 | CPython 3.12 | Windows x86-64 | Details |
| gbrl_gpu-1.1.9-cp312-cp312-manylinux_2_31_x86_64.whl | CPython 3.12 | CPython 3.12 | Linux glibc 2.31+ x86-64 | Details |
| gbrl_gpu-1.1.9-cp311-cp311-win_amd64.whl | CPython 3.11 | CPython 3.11 | Windows x86-64 | Details |
| gbrl_gpu-1.1.9-cp311-cp311-manylinux_2_31_x86_64.whl | CPython 3.11 | CPython 3.11 | Linux glibc 2.31+ x86-64 | Details |
| gbrl_gpu-1.1.9-cp310-cp310-win_amd64.whl | CPython 3.10 | CPython 3.10 | Windows x86-64 | Details |
| gbrl_gpu-1.1.9-cp310-cp310-manylinux_2_31_x86_64.whl | CPython 3.10 | CPython 3.10 | Linux glibc 2.31+ x86-64 | Details |
| gbrl_gpu-1.1.9-cp39-cp39-win_amd64.whl | CPython 3.9 | CPython 3.9 | Windows x86-64 | Details |
| gbrl_gpu-1.1.9-cp39-cp39-manylinux_2_31_x86_64.whl | CPython 3.9 | CPython 3.9 | Linux glibc 2.31+ x86-64 | Details |
Total release size: 20.1 MB
Release files / gbrl_gpu-1.1.9.tar.gz
| Download URL | gbrl_gpu-1.1.9.tar.gz |
|---|---|
| Size | 272.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
7e6875af4b8e7489e4c9e3ef5c8ff80a67f3f6685860d88614a539303e94cb3e
|
|
BLAKE2b-256 checksum How to use checksums |
6ce9679162a7daa9b58740d3328db8985acd45904468df77d6a668390e6bb80b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.10.15
|
Release files / gbrl_gpu-1.1.9-cp312-cp312-win_amd64.whl
| Download URL | gbrl_gpu-1.1.9-cp312-cp312-win_amd64.whl |
|---|---|
| Size | 2.3 MB |
| Tags | CPython 3.12 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
0751f1e7c5ae492e5893ff471916cfa0b32a3aa0b6d0ce9e1045e2fa4bbd6c0e
|
|
BLAKE2b-256 checksum How to use checksums |
5ae5d8ec316f64c02aa0fbcdf3f6c195ce5ae04686296589506c657a583c95fe
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.9.13
|
Release files / gbrl_gpu-1.1.9-cp312-cp312-manylinux_2_31_x86_64.whl
| Download URL | gbrl_gpu-1.1.9-cp312-cp312-manylinux_2_31_x86_64.whl |
|---|---|
| Size | 2.6 MB |
| Tags | CPython 3.12 Linux glibc 2.31+ x86-64 |
|
SHA-256 checksum How to use checksums |
9929046ff9a484b102e70dc79f95cb8783f6756bbfdbd1d022f04bf4dc467b5a
|
|
BLAKE2b-256 checksum How to use checksums |
772c3e9ada50e250d333cec1efcd8497ae35b2e17ef2b29a155a223f62f090d4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.10.13
|
Release files / gbrl_gpu-1.1.9-cp311-cp311-win_amd64.whl
| Download URL | gbrl_gpu-1.1.9-cp311-cp311-win_amd64.whl |
|---|---|
| Size | 2.3 MB |
| Tags | CPython 3.11 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
e64be236e4f83d9eb0d8f7f1d76c4c5d6ac1befa6af7b6d32e8726c46d50fe7c
|
|
BLAKE2b-256 checksum How to use checksums |
4a7be310090da47fc01b97d9e777b395a161b6c8bf5a60b4f69470ad16d397e4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.9.13
|
Release files / gbrl_gpu-1.1.9-cp311-cp311-manylinux_2_31_x86_64.whl
| Download URL | gbrl_gpu-1.1.9-cp311-cp311-manylinux_2_31_x86_64.whl |
|---|---|
| Size | 2.6 MB |
| Tags | CPython 3.11 Linux glibc 2.31+ x86-64 |
|
SHA-256 checksum How to use checksums |
213f285946b43aa3acad7efc1d79e749aad49a902828a6c22e981557f4a29c2e
|
|
BLAKE2b-256 checksum How to use checksums |
971c88b112c8979192918b4e6d278577644473bc6ea88b3d1137fbeb81c29d73
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.10.13
|
Release files / gbrl_gpu-1.1.9-cp310-cp310-win_amd64.whl
| Download URL | gbrl_gpu-1.1.9-cp310-cp310-win_amd64.whl |
|---|---|
| Size | 2.3 MB |
| Tags | CPython 3.10 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
21c11c5a3f2aefaafaf0c0bb291718097e3c573d87d01c403a0e784b33e13604
|
|
BLAKE2b-256 checksum How to use checksums |
4d7e04efdb1dfbd50faea1760a8c05f39089b7b40b573923e9a5e6d3e398e3e0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.9.13
|
Release files / gbrl_gpu-1.1.9-cp310-cp310-manylinux_2_31_x86_64.whl
| Download URL | gbrl_gpu-1.1.9-cp310-cp310-manylinux_2_31_x86_64.whl |
|---|---|
| Size | 2.6 MB |
| Tags | CPython 3.10 Linux glibc 2.31+ x86-64 |
|
SHA-256 checksum How to use checksums |
6f80a94a8b5e41ae76265d17896ad53d6fd21e9fe0e882a0d6c74329dfcc4950
|
|
BLAKE2b-256 checksum How to use checksums |
8774a795dd7f68865fb90b9ec838705e6f463d6d4a6e1009678a0eb758e888a4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.10.13
|
Release files / gbrl_gpu-1.1.9-cp39-cp39-win_amd64.whl
| Download URL | gbrl_gpu-1.1.9-cp39-cp39-win_amd64.whl |
|---|---|
| Size | 2.3 MB |
| Tags | CPython 3.9 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
f197fc2bbe393a8501d5beb8e4796c37af8c068f515383df286fad2f46aee29c
|
|
BLAKE2b-256 checksum How to use checksums |
810fceb6d3d406beb0d4388bc4754355d1879246487abdcc1f6e34e7c5efb573
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.9.13
|
Release files / gbrl_gpu-1.1.9-cp39-cp39-manylinux_2_31_x86_64.whl
| Download URL | gbrl_gpu-1.1.9-cp39-cp39-manylinux_2_31_x86_64.whl |
|---|---|
| Size | 2.6 MB |
| Tags | CPython 3.9 Linux glibc 2.31+ x86-64 |
|
SHA-256 checksum How to use checksums |
0541d8bd7152aefb51668c6cc9c709389633015555cacd330535b5def1d25a4f
|
|
BLAKE2b-256 checksum How to use checksums |
65b3ddcfb96778ad490e9aca0dc4b39420b658c691f4d421990ba4d64cb1fc45
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.10.13
|