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 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-1.1.9.tar.gz | 272.7 kB | Details |
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| gbrl-1.1.9-cp312-cp312-win_amd64.whl | CPython 3.12 | CPython 3.12 | Windows x86-64 | Details |
| gbrl-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-1.1.9-cp312-cp312-macosx_15_0_arm64.whl | CPython 3.12 | CPython 3.12 | macOS 15.0+ ARM64 | Details |
| gbrl-1.1.9-cp312-cp312-macosx_11_0_x86_64.whl | CPython 3.12 | CPython 3.12 | macOS 11.0+ x86-64 | Details |
| gbrl-1.1.9-cp311-cp311-win_amd64.whl | CPython 3.11 | CPython 3.11 | Windows x86-64 | Details |
| gbrl-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-1.1.9-cp311-cp311-macosx_15_0_arm64.whl | CPython 3.11 | CPython 3.11 | macOS 15.0+ ARM64 | Details |
| gbrl-1.1.9-cp311-cp311-macosx_11_0_x86_64.whl | CPython 3.11 | CPython 3.11 | macOS 11.0+ x86-64 | Details |
| gbrl-1.1.9-cp310-cp310-win_amd64.whl | CPython 3.10 | CPython 3.10 | Windows x86-64 | Details |
| gbrl-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-1.1.9-cp310-cp310-macosx_15_0_arm64.whl | CPython 3.10 | CPython 3.10 | macOS 15.0+ ARM64 | Details |
| gbrl-1.1.9-cp310-cp310-macosx_11_0_x86_64.whl | CPython 3.10 | CPython 3.10 | macOS 11.0+ x86-64 | Details |
| gbrl-1.1.9-cp39-cp39-win_amd64.whl | CPython 3.9 | CPython 3.9 | Windows x86-64 | Details |
| gbrl-1.1.9-cp39-cp39-manylinux_2_31_x86_64.whl | CPython 3.9 | CPython 3.9 | Linux glibc 2.31+ x86-64 | Details |
| gbrl-1.1.9-cp39-cp39-macosx_15_0_arm64.whl | CPython 3.9 | CPython 3.9 | macOS 15.0+ ARM64 | Details |
| gbrl-1.1.9-cp39-cp39-macosx_11_0_x86_64.whl | CPython 3.9 | CPython 3.9 | macOS 11.0+ x86-64 | Details |
Total release size: 15.0 MB
Release files / gbrl-1.1.9.tar.gz
| Download URL | gbrl-1.1.9.tar.gz |
|---|---|
| Size | 272.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
fddbd7f178be6b84b147b9c77b88ade03ff8a92d02607e01c2da019c5e60cc03
|
|
BLAKE2b-256 checksum How to use checksums |
24edfd00c89ee7263165f5a967252d279b52a29d72590663cfc034ef0c8d74a1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.10.15
|
Release files / gbrl-1.1.9-cp312-cp312-win_amd64.whl
| Download URL | gbrl-1.1.9-cp312-cp312-win_amd64.whl |
|---|---|
| Size | 819.1 kB |
| Tags | CPython 3.12 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
f5d220c3ff4f86b0cf448dc309f2c14c51a4fd44e3d5d1aad1fc8055368941e8
|
|
BLAKE2b-256 checksum How to use checksums |
090cfbbb1d3d499edfbbbd979aa591607cc4c82a5b0e9595c1b11208b663bf94
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.9.13
|
Release files / gbrl-1.1.9-cp312-cp312-manylinux_2_31_x86_64.whl
| Download URL | gbrl-1.1.9-cp312-cp312-manylinux_2_31_x86_64.whl |
|---|---|
| Size | 1.1 MB |
| Tags | CPython 3.12 Linux glibc 2.31+ x86-64 |
|
SHA-256 checksum How to use checksums |
e0930fba694a25372f4f320b1249600fcf64920f420b90d77318b73cdc6831e8
|
|
BLAKE2b-256 checksum How to use checksums |
af59d2d06172d533da4ed62701c68f9a98c88c8038c1e38f3465dbb330f3ab85
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.10.13
|
Release files / gbrl-1.1.9-cp312-cp312-macosx_15_0_arm64.whl
| Download URL | gbrl-1.1.9-cp312-cp312-macosx_15_0_arm64.whl |
|---|---|
| Size | 1.3 MB |
| Tags | CPython 3.12 macOS 15.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
0f381803a131b0f2c1b706688a4492d5aa4624278322fa474b451f71b18337c6
|
|
BLAKE2b-256 checksum How to use checksums |
adf1091ef944a1243185eb1549d22f0a104005bbb01d6229f68f24dcb0bd1bec
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.9.23
|
Release files / gbrl-1.1.9-cp312-cp312-macosx_11_0_x86_64.whl
| Download URL | gbrl-1.1.9-cp312-cp312-macosx_11_0_x86_64.whl |
|---|---|
| Size | 538.6 kB |
| Tags | CPython 3.12 macOS 11.0+ x86-64 |
|
SHA-256 checksum How to use checksums |
c860063dc1a1b16f45540442cd2e83db29fd77b2a351ca6711ef536333ddc27a
|
|
BLAKE2b-256 checksum How to use checksums |
bc170a12081a13fc398921643680567fd4282bf9c40c70c1fe4d290b7f77aaa3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.9.23
|
Release files / gbrl-1.1.9-cp311-cp311-win_amd64.whl
| Download URL | gbrl-1.1.9-cp311-cp311-win_amd64.whl |
|---|---|
| Size | 821.2 kB |
| Tags | CPython 3.11 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
9fc064eb6855a62774a19ee01bb84f36db853459d3d3338918e0ddfe48b428f2
|
|
BLAKE2b-256 checksum How to use checksums |
bf0b5cd84567f6361b203872b1ef9cbf2d4c696e7ade7237aef12cfb494ec211
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.9.13
|
Release files / gbrl-1.1.9-cp311-cp311-manylinux_2_31_x86_64.whl
| Download URL | gbrl-1.1.9-cp311-cp311-manylinux_2_31_x86_64.whl |
|---|---|
| Size | 1.1 MB |
| Tags | CPython 3.11 Linux glibc 2.31+ x86-64 |
|
SHA-256 checksum How to use checksums |
881156176f408c2eb787f07f5f287c69f7964f67d470bbc04a699e596b78bc80
|
|
BLAKE2b-256 checksum How to use checksums |
e2776b09e15e4219f825440c5ea96dca4d56698f6b0add4e300221e1022c0a37
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.10.13
|
Release files / gbrl-1.1.9-cp311-cp311-macosx_15_0_arm64.whl
| Download URL | gbrl-1.1.9-cp311-cp311-macosx_15_0_arm64.whl |
|---|---|
| Size | 1.3 MB |
| Tags | CPython 3.11 macOS 15.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
adebd3f8cc8ab8e5479f0c4112b67f4e2e93922ab71612f99adc85625e9adb5d
|
|
BLAKE2b-256 checksum How to use checksums |
11330de9f655452a4080f4ae97809161bf6578dbee4fb0cac219a727565dab3d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.9.23
|
Release files / gbrl-1.1.9-cp311-cp311-macosx_11_0_x86_64.whl
| Download URL | gbrl-1.1.9-cp311-cp311-macosx_11_0_x86_64.whl |
|---|---|
| Size | 539.1 kB |
| Tags | CPython 3.11 macOS 11.0+ x86-64 |
|
SHA-256 checksum How to use checksums |
34d8cb02e380d18f8ff072219deaa229c78b1229fc4edf2ab6b847b782137825
|
|
BLAKE2b-256 checksum How to use checksums |
18dc7ab44f21eebef62ebacb824980805daf9c519ea0bcb9e3ce7a2cb6a6dd74
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.9.23
|
Release files / gbrl-1.1.9-cp310-cp310-win_amd64.whl
| Download URL | gbrl-1.1.9-cp310-cp310-win_amd64.whl |
|---|---|
| Size | 820.2 kB |
| Tags | CPython 3.10 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
aeed15dfc2bc3bcc028d63a8df06f3c703aaf2f3ee1d3ca0e099ca1205e89b79
|
|
BLAKE2b-256 checksum How to use checksums |
789dfc818bc06d600fa90738fadd3b6792a265419e4265475bbbf731810c4f95
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.9.13
|
Release files / gbrl-1.1.9-cp310-cp310-manylinux_2_31_x86_64.whl
| Download URL | gbrl-1.1.9-cp310-cp310-manylinux_2_31_x86_64.whl |
|---|---|
| Size | 1.0 MB |
| Tags | CPython 3.10 Linux glibc 2.31+ x86-64 |
|
SHA-256 checksum How to use checksums |
9c75e67e7a138b9cfe82ef5e9f34504afca1f932a99fff8ca642adf7160fba1a
|
|
BLAKE2b-256 checksum How to use checksums |
72ba50dc26640d5f649cd38bbb135b2aa222a9a55e9c9975c17388b9899123e9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.10.13
|
Release files / gbrl-1.1.9-cp310-cp310-macosx_15_0_arm64.whl
| Download URL | gbrl-1.1.9-cp310-cp310-macosx_15_0_arm64.whl |
|---|---|
| Size | 1.3 MB |
| Tags | CPython 3.10 macOS 15.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
c13b4e51de10263590bd6d1451a662c4a63cb360cd768786038c2e6b5369955e
|
|
BLAKE2b-256 checksum How to use checksums |
2d1b3517acdaea8bfad2b0364ae3df0855f37b44cc97c032abf0cc30f8db8e98
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.9.23
|
Release files / gbrl-1.1.9-cp310-cp310-macosx_11_0_x86_64.whl
| Download URL | gbrl-1.1.9-cp310-cp310-macosx_11_0_x86_64.whl |
|---|---|
| Size | 537.7 kB |
| Tags | CPython 3.10 macOS 11.0+ x86-64 |
|
SHA-256 checksum How to use checksums |
3311fc2d1cdcedd945bf7bd2d29a86782d2a71a2feb609174272ffd1284693a1
|
|
BLAKE2b-256 checksum How to use checksums |
60abb25d5cc6fa0b34e82b95df85370d61e808a1a36f8a0c016c2dad518c1954
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.9.23
|
Release files / gbrl-1.1.9-cp39-cp39-win_amd64.whl
| Download URL | gbrl-1.1.9-cp39-cp39-win_amd64.whl |
|---|---|
| Size | 815.6 kB |
| Tags | CPython 3.9 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
d9b2e264d7004e2b4738b3207b980f8e09f326f59419f4a289941b81239305bf
|
|
BLAKE2b-256 checksum How to use checksums |
0d06656820d066ff1f29cf70beb759b349d0bc2c8941c3eb8cb75c84c80b7f2d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.9.13
|
Release files / gbrl-1.1.9-cp39-cp39-manylinux_2_31_x86_64.whl
| Download URL | gbrl-1.1.9-cp39-cp39-manylinux_2_31_x86_64.whl |
|---|---|
| Size | 1.0 MB |
| Tags | CPython 3.9 Linux glibc 2.31+ x86-64 |
|
SHA-256 checksum How to use checksums |
bb8849fb96f55eab4fd5c1d04caf6340cb5310fb23df78179ea597a32f7c53c3
|
|
BLAKE2b-256 checksum How to use checksums |
0b0a4addda539342595a18fbe73e1407e6bedc787402d423e67da1c0aa8303ca
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.10.13
|
Release files / gbrl-1.1.9-cp39-cp39-macosx_15_0_arm64.whl
| Download URL | gbrl-1.1.9-cp39-cp39-macosx_15_0_arm64.whl |
|---|---|
| Size | 1.3 MB |
| Tags | CPython 3.9 macOS 15.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
f4cc04c885c5bd2b112a50995070f96095532252f0adcc6284ee988b8a7f22b2
|
|
BLAKE2b-256 checksum How to use checksums |
729ceafd78bba2920446d5e6d5d9419d12cdcc6af01a768c512989d86493be50
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.9.23
|
Release files / gbrl-1.1.9-cp39-cp39-macosx_11_0_x86_64.whl
| Download URL | gbrl-1.1.9-cp39-cp39-macosx_11_0_x86_64.whl |
|---|---|
| Size | 537.6 kB |
| Tags | CPython 3.9 macOS 11.0+ x86-64 |
|
SHA-256 checksum How to use checksums |
6520664d64a055b7cc1b4a7930def10e042f6d255406e593955558ef925373db
|
|
BLAKE2b-256 checksum How to use checksums |
b2b075c7308d91d2d24e0929eccfa8f35945bb6cf830a519e1d1f0543c7745d2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.9.23
|