LightGBM

Snowflake ML モデルレジストリは、 LightGBM を使用して作成されたモデル(scikit-learn API ラッパーから派生したモデル、例: lightgbm。 LGBMClassifier またはネイティブ API 、例: lightgbm.Booster )をサポートしています。

以下の追加オプションは、 options ディクショナリで log_model を呼び出すときに使用できます。

オプション

説明

target_methods

モデルオブジェクトで利用可能なメソッドの名前のリスト。API から派生したモデル( LGBMClassifier など)は、メソッドが存在すると仮定して、デフォルトで predictpredict_proba のターゲットメソッドを持ちます。ネイティブ API から派生したモデル(例: Booster )はデフォルトで predict メソッドを持ちます。

enable_explainability

SHAP を使用してモデルの説明可能性を有効にするかどうか。デフォルトは True です。有効にすると、 explain メソッドはログに記録されたモデルで利用可能になります。

cuda_version

GPUを持つプラットフォームへの展開時に使用する CUDAランタイムのバージョン。デフォルトで11.8。手動で None に設定した場合、モデルは GPU を持つプラットフォームには展開できません。

sample_input_data モデルをログする場合は、 signatures か LightGBM のどちらかのパラメーターを指定する必要があります。

これらの例では、 regsnowflake.ml.registry.Registry のインスタンスであると想定しています。

Scikit-Learn API ( LGBMClassifier )

次の例は、scikit-learn API を使用して LightGBM 分類子をトレーニングし、Snowflake ML モデルレジストリにログを記録し、推論と説明可能性に登録されたモデルを使用するための主なステップを示しています。ワークフローには以下が含まれます。

  • サンプルデータセットで LightGBM 分類子をトレーニングします。

  • Snowflake ML モデルレジストリにモデルのログを記録します。

  • 予測を行い、予測確率を取得します。

  • モデルの予測用の 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 モデルレジストリにログを記録し、推論に登録されたモデルを使用するための主なステップを示しています。ワークフローでは以下を行います。

  • サンプルデータセットで LightGBM モデルをトレーニングします。

  • Snowflake ML モデルレジストリにモデルのログを記録します。

  • 予測を行います。

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