nvForest
Project description
nvForest - Highly Optimized Decision Tree Inference
nvForest is a highly-optimized and lightweight RAPIDS library that enables fast inference for decision tree models on NVIDIA GPUs and CPUs. It does not train models; it runs inference on models trained elsewhere (e.g., XGBoost, LightGBM, scikit-learn, or cuML).
nvForest uses Treelite as the common format for importing tree models. You can load a model from a file or from an in-memory scikit-learn or Treelite object, then run predictions with a scikit-learn-like API. Setting device="auto" lets you deploy the same script on machines with or without GPUs.
As an example, the following Python snippet loads an XGBoost model and runs inference on GPU:
import nvforest
# Load XGBoost model for GPU inference
fm = nvforest.load_model("/path/to/xgboost_model.ubj", device="gpu",
model_type="xgboost_ubj")
# Run inference (X can be a NumPy array or CuPy array)
pred = fm.predict(X)
Load a scikit-learn random forest model and get class probabilities:
import nvforest
from sklearn.ensemble import RandomForestClassifier
# Train with scikit-learn (or load a saved model)
skl_model = RandomForestClassifier(...)
skl_model.fit(X_train, y_train)
# Load into nvForest for fast GPU inference
fm = nvforest.load_from_sklearn(skl_model, device="gpu")
class_probs = fm.predict_proba(X)
For more examples and the full API, see the Getting started guide and the Python API documentation.
Supported Models
| Source | Formats |
|---|---|
| XGBoost | UBJSON, JSON, legacy binary |
| LightGBM | Text (.txt) |
| scikit-learn | In-memory (RandomForest, ExtraTrees, GradientBoosting) |
| cuML | Via Treelite export |
| Treelite | Checkpoint / in-memory treelite.Model |
Inference Modes
| Method | Description |
|---|---|
predict(X) |
Standard predictions (class labels or regression values) |
predict_proba(X) |
Class probabilities (classification only) |
apply(X) |
Leaf indices per tree |
predict_per_tree(X) |
Prediction from each tree in the ensemble |
You can tune performance with layout (e.g., depth_first, breadth_first) and chunk_size; use fm.optimize() to auto-tune.
Installation
See the RAPIDS Release Selector for the command line to install either nightly or official release nvForest packages via conda, pip, or Docker.
Build/Install from Source
See the build guide.
Contributing
We welcome contributions. For guidelines and how to get started, see the RAPIDS contributing guide.
Contact
Find out more on the RAPIDS site.
Open GPU Data Science
The RAPIDS suite of open source software libraries aims to enable execution of end-to-end data science and analytics pipelines entirely on GPUs. It relies on NVIDIA® CUDA® primitives for low-level compute optimization, exposing GPU parallelism and high-bandwidth memory through user-friendly Python interfaces.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file libnvforest_cu12-26.4.0-py3-none-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.
File metadata
- Download URL: libnvforest_cu12-26.4.0-py3-none-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 75.6 MB
- Tags: Python 3, manylinux: glibc 2.27+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.10.20
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
575571e14c2706ac9cb5e6340ed78a24c978b60f5fb909d28ef3b89b09aaa341
|
|
| MD5 |
33f7fbe6b5d0adb91ada72ab36862338
|
|
| BLAKE2b-256 |
007feb8f3da0ec855ef1c936dad8ef5e5359e1f623bd6548e4a65e5eace33020
|
File details
Details for the file libnvforest_cu12-26.4.0-py3-none-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.
File metadata
- Download URL: libnvforest_cu12-26.4.0-py3-none-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
- Upload date:
- Size: 75.5 MB
- Tags: Python 3, manylinux: glibc 2.27+ ARM64, manylinux: glibc 2.28+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.10.20
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ccf6b3530bdc046dcd2df5c4780dd467d2897c9c44d1b178b5ab4699b240d2ec
|
|
| MD5 |
286ba38492b0a9154523e87bcb6a1cfe
|
|
| BLAKE2b-256 |
2ec442e41aa2b3cfa9f5bec38f0ad82976a67b8e9db5b0114a8f1ca450a863c4
|