LightGBM¶
Die Snowflake ML-Modell-Registry unterstützt Modelle, die mit LightGBM erstellt wurden (Modelle, die vom scikit-learn-API-Wrapper abgeleitet wurden, z. B lightgbmLGBMClassifier, oder die native API, z. B lightgbm.Boost).
Die folgenden zusätzlichen Optionen können im options-Dictionary verwendet werden, wenn Sie log_model abrufen:
Option |
Beschreibung |
|---|---|
|
Liste mit den Namen der für das Modellobjekt verfügbaren Methoden. Von der scikit-learn-API abgeleitete Modelle (z. B. |
|
Gibt an, ob die Erklärbarkeit für das Modell mit SHAP aktiviert werden soll. Die Standardeinstellung ist |
|
Die Version der CUDA-Laufzeitumgebung, die beim Bereitstellen auf einer Plattform mit GPU verwendet werden soll. Der Standardwert ist 11.8. Wird das Modell manuell auf |
Sie müssen entweder den Parameter sample_input_data oder signatures angeben, wenn Sie ein LightGBM-Modell protokollieren, damit die Registry die Signaturen der Zielmethoden kennt.
Beispiele¶
Diese Beispiele gehen davon aus, dass reg eine Instanz von snowflake.ml.registry.Registry ist.
Scikit-Learn-API (LGBMClassifier)¶
Das folgende Beispiel zeigt die wichtigsten Schritte zum Trainieren eines LightGBM-Klassifikators unter Verwendung der scikit-learn-API, zum Protokollieren dieses Klassifikators in der ML-Modell-Registry von Snowflake und zum Verwenden des registrierten Modells zu Ableitungs- und Erklärbarkeitszwecken. Der Workflow umfasst:
Trainieren eines LightGBM-Klassifikators für ein Beispiel-Datenset
Protokollieren des Modells in der Snowflake ML-Modell-Registry
Erstellen von Vorhersagen und Abrufen der Vorhersagewahrscheinlichkeiten
Abrufen der SHAP-Werte für die Vorhersagen des Modells
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")
Native API (Booster)¶
Das folgende Beispiel zeigt die wichtigsten Schritte zum Trainieren eines LightGBM-Modells unter Verwendung der nativen ML-API von Snowflake, zum Protokollieren dieses Modells in der ML-Modell-Registry und zum Verwenden des registrierten Modells zu Ableitungszwecken. Der Workflow umfasst:
Trainieren eines LightGBM-Modells für einen Beispiel-Datenset
Protokollieren des Modells in der Snowflake ML-Modell-Registry
Erstellen von Vorhersagen
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")