Mottl/lightgbm3-rs

Rust bindings for LightGBM

59

stars

51

commits

Rust

primary language

Sep 8, 2026

updated

README

lightgbm3 — Rust bindings for LightGBM

Crates.io Docs.rs build

lightgbm3 is based on lightgbm crate (which is unsupported by now), but it is not back-compatible with it.

Installation

cargo add lightgbm3

Since lightgbm3 compiles LightGBM from source, you also need to install development libraries:

for Linux:

apt install -y cmake clang libclang-dev libc++-dev gcc-multilib

for Mac:

brew install cmake
brew install libomp # only required if you compile with "openmp" feature

for Windows

  1. Install CMake and VS Build Tools.
  2. Install LLVM and set LIBCLANG_PATH environment variable (i.e. C:\Program Files\LLVM\bin)

Please see below for details.

Usage

Training:

use lightgbm3::{Dataset, Booster};
use serde_json::json;

let features = vec![vec![1.0, 0.1, 0.2],
                    vec![0.7, 0.4, 0.5],
                    vec![0.9, 0.8, 0.5],
                    vec![0.2, 0.2, 0.8],
                    vec![0.1, 0.7, 1.0]];
let labels = vec![0.0, 0.0, 0.0, 1.0, 1.0];
let dataset = Dataset::from_vec_of_vec(features, labels, true).unwrap();
let params = json!{
   {
        "num_iterations": 10,
        "objective": "binary",
        "metric": "auc",
    }
};
let bst = Booster::train(dataset, &params).unwrap();
bst.save_file("path/to/model.lgb").unwrap();

Inference:

use lightgbm3::{Dataset, Booster};

let bst = Booster::from_file("path/to/model.lgb").unwrap();
let features = vec![1.0, 2.0, -5.0];
let n_features = features.len();
let y_pred = bst.predict_with_params(&features, n_features as i32, true, "num_threads=1").unwrap()[0];

Look in the ./examples/ folder for more details:

Features

lightgbm3 supports the following features:

Benchmarks

cargo bench

Add --features=openmp, --features=gpu and --features=cuda appropriately.

Development

git clone --recursive https://github.com/Mottl/lightgbm3-rs.git

Thanks

Great respect to vaaaaanquish for the LightGBM Rust package, which unfortunately no longer supported.

Much reference was made to implementation and documentation. Thanks.

Contributors

Mottl

21 commits

OctopusTakopi

20 commits

mongris

4 commits

StrikerRUS

3 commits

Mottl/lightgbm3-rs

Rust bindings for LightGBM

59

stars

51

commits

Rust

primary language

Sep 8, 2026

updated

README

lightgbm3 — Rust bindings for LightGBM

Crates.io Docs.rs build

lightgbm3 is based on lightgbm crate (which is unsupported by now), but it is not back-compatible with it.

Installation

cargo add lightgbm3

Since lightgbm3 compiles LightGBM from source, you also need to install development libraries:

for Linux:

apt install -y cmake clang libclang-dev libc++-dev gcc-multilib

for Mac:

brew install cmake
brew install libomp # only required if you compile with "openmp" feature

for Windows

  1. Install CMake and VS Build Tools.
  2. Install LLVM and set LIBCLANG_PATH environment variable (i.e. C:\Program Files\LLVM\bin)

Please see below for details.

Usage

Training:

use lightgbm3::{Dataset, Booster};
use serde_json::json;

let features = vec![vec![1.0, 0.1, 0.2],
                    vec![0.7, 0.4, 0.5],
                    vec![0.9, 0.8, 0.5],
                    vec![0.2, 0.2, 0.8],
                    vec![0.1, 0.7, 1.0]];
let labels = vec![0.0, 0.0, 0.0, 1.0, 1.0];
let dataset = Dataset::from_vec_of_vec(features, labels, true).unwrap();
let params = json!{
   {
        "num_iterations": 10,
        "objective": "binary",
        "metric": "auc",
    }
};
let bst = Booster::train(dataset, &params).unwrap();
bst.save_file("path/to/model.lgb").unwrap();

Inference:

use lightgbm3::{Dataset, Booster};

let bst = Booster::from_file("path/to/model.lgb").unwrap();
let features = vec![1.0, 2.0, -5.0];
let n_features = features.len();
let y_pred = bst.predict_with_params(&features, n_features as i32, true, "num_threads=1").unwrap()[0];

Look in the ./examples/ folder for more details:

Features

lightgbm3 supports the following features:

Benchmarks

cargo bench

Add --features=openmp, --features=gpu and --features=cuda appropriately.

Development

git clone --recursive https://github.com/Mottl/lightgbm3-rs.git

Thanks

Great respect to vaaaaanquish for the LightGBM Rust package, which unfortunately no longer supported.

Much reference was made to implementation and documentation. Thanks.

Contributors

Mottl

21 commits

OctopusTakopi

20 commits

mongris

4 commits

StrikerRUS

3 commits

Languages

Rust

99.9%