Libraries such as lightgbm-ray let users scale model training across multiple workers with minimal Ray internals.
import ray
from sklearn import datasets
from sklearn.model_selection import train_test_split
from lightgbm_ray import RayDMatrix, RayParams, train
ray.init(address="<ray-client-endpoint>")
data, labels = datasets.load_breast_cancer(return_X_y=True)
train_x, test_x, train_y, test_y = train_test_split(data, labels, test_size=0.25)
train_set = RayDMatrix(train_x, train_y)
test_set = RayDMatrix(test_x, test_y)
bst = train(
params={
"objective": "binary",
"metric": ["binary_logloss", "binary_error"],
},
dtrain=train_set,
valid_sets=[test_set],
valid_names=["eval"],
ray_params=RayParams(num_actors=4, cpus_per_actor=2),
num_boost_round=100,
)
bst.booster_.save_model("model.lgbm")
print("Model saved.")