LightGBM#

Users can now use LightGBM with BentoML with the following API: load_model, save_model, and get as follow:

import bentoml
import lightgbm as lgb
import pandas as pd

# load a dataset
df_train = pd.read_csv("regression.train", header=None, sep="\t")
df_test = pd.read_csv("regression.test", header=None, sep="\t")

y_train = df_train[0]
y_test = df_test[0]
X_train = df_train.drop(0, axis=1)
X_test = df_test.drop(0, axis=1)

# create dataset for lightgbm
lgb_train = lgb.Dataset(X_train, y_train)
lgb_eval = lgb.Dataset(X_test, y_test, reference=lgb_train)

# specify your configurations as a dict
params = {
   "boosting_type": "gbdt",
   "objective": "regression",
   "metric": {"l2", "l1"},
   "num_leaves": 31,
   "learning_rate": 0.05,
}

# train
gbm = lgb.train(
   params, lgb_train, num_boost_round=20, valid_sets=lgb_eval
)

# `save` a given classifier and retrieve coresponding tag:
bentoml.lightgbm.save_model("my_lightgbm_model", gbm, booster_params=params)

# retrieve metadata with `bentoml.models.get`:
bento_model = bentoml.models.get("my_lightgbm_model:latest")

# `load` the model back in memory:
loaded_model = bentoml.lightgbm.load_model("my_lightgbm_model")

# Run a given model under `Runner` abstraction with `to_runner`
input_data = pd.from_csv("/path/to/csv")
runner = bentoml.lightgbm.get("my_lightgbm_model:latest").to_runner()
runner.init_local()
runner.run(input_data)

Note

You can find more examples for LightGBM in our bentoml/examples repo.