LightGBM

Snowflake ML Model Registry 支持使用 LightGBM 创建的模型(模型源自 scikit-learn API 包装器,例如 lightgbm.LGBMClassifier 或原生 API,例如 lightgbm.Booster)。

调用 options 时,可以在 log_model 字典中使用下列附加选项:

选项

描述

target_methods

可在模型对象上使用的方法的名称列表。从 scikit-learn API(例如 LGBMClassifier)派生的模型默认具有以下目标方法(假设方法存在):predictpredict_proba。从原生派生的模型 API(例如 Booster)默认具有 predict 方法。

enable_explainability

是否使用 SHAP 启用模型的可解释性功能。默认为 True。启用后,explain 方法将在已记录的模型上可用。

cuda_version

部署到具有 GPU 的平台时使用的 CUDA 运行时版本;默认值为 11.8。如果手动设置为 None,则无法将模型部署到具有 GPU 的平台。

在登记 LightGBM 模型时,您必须指定 sample_input_datasignatures 参数,以确保注册表了解目标方法的签名。

示例

这些示例假设 regsnowflake.ml.registry.Registry 的一个实例。

Scikit-Learn API (LGBMClassifier)

以下示例演示了使用 scikit-learn API 训练 LightGBM 分类器、将其注册到 Snowflake ML Model Registry 并使用注册模型实现推理和可解释性的关键步骤。工作流程包括:

  • 训练示例数据集上的 LightGBM 分类器。

  • 将模型记录到 Snowflake ML Model Registry。

  • 进行预测并检索预测概率。

  • 获取模型预测的 SHAP 值。

import lightgbm as lgb
from sklearn import datasets, model_selection

# Load dataset
cal_data = datasets.load_breast_cancer(as_frame=True)
cal_X = cal_data.data
cal_y = cal_data.target

# Normalize column names (replace spaces with underscores)
cal_X.columns = [col.replace(' ', '_') for col in cal_X.columns]

cal_X_train, cal_X_test, cal_y_train, cal_y_test = model_selection.train_test_split(
    cal_X, cal_y, test_size=0.2
)

# Train LightGBM Classifier
classifier = lgb.LGBMClassifier(
    n_estimators=100,
    learning_rate=0.05,
    num_leaves=31
)
classifier.fit(cal_X_train, cal_y_train)

# Log the model
model_ref = reg.log_model(
    model=classifier,
    model_name="my_lightgbm_classifier",
    version_name="v1",
    sample_input_data=cal_X_test,
)

# Make predictions
result_df = model_ref.run(cal_X_test[-10:], function_name="predict")

# Get prediction probabilities
proba_df = model_ref.run(cal_X_test[-10:], function_name="predict_proba")

# Get explanations (SHAP values)
explanations_df = model_ref.run(cal_X_test[-10:], function_name="explain")
Copy

原生 API(提升器)

以下示例演示了使用原生 Snowflake ML API 训练 LightGBM 模型、将模型记录到 Snowflake ML Model Registry 并使用已注册模型进行推理的关键步骤。工作流程执行以下操作:

  • 训练示例数据集上的 LightGBM 模型。

  • 将模型记录到 Snowflake ML Model Registry。

  • 进行预测。

import lightgbm as lgb
import pandas as pd
from sklearn import datasets, model_selection

# Load dataset
cal_data = datasets.load_breast_cancer()
cal_X = pd.DataFrame(cal_data.data, columns=cal_data.feature_names)
cal_y = cal_data.target

# Normalize column names (replace spaces with underscores)
cal_X.columns = [col.replace(' ', '_') for col in cal_X.columns]

cal_X_train, cal_X_test, cal_y_train, cal_y_test = model_selection.train_test_split(
    cal_X, cal_y, test_size=0.2
)

# Prepare LightGBM Data Structure
lgb_train = lgb.Dataset(cal_X_train, cal_y_train)

# Define parameters and train the model
params = {
    'objective': 'binary',
    'metric': 'binary_logloss',
    'boosting_type': 'gbdt',
    'num_leaves': 31,
    'learning_rate': 0.05,
    'feature_fraction': 0.9,
}

num_round = 100
booster = lgb.train(
    params,
    lgb_train,
    num_round
)

# Log the model
model_ref = reg.log_model(
    model=booster,
    model_name="my_lightgbm_booster",
    version_name="v1",
    sample_input_data=cal_X_test,
)

# Make predictions
result_df = model_ref.run(cal_X_test[-10:], function_name="predict")
Copy
语言: 中文