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

target_methods

Liste mit den Namen der für das Modellobjekt verfügbaren Methoden. Von der scikit-learn-API abgeleitete Modelle (z. B. LGBMClassifier) haben standardmäßig die folgenden Zielmethoden, vorausgesetzt, die Methode existiert: predict, predict_proba. Von der nativen API abgeleitete Modelle (z. B Booster) haben standardmäßig die predict-Methode.

enable_explainability

Gibt an, ob die Erklärbarkeit für das Modell mit SHAP aktiviert werden soll. Die Standardeinstellung ist True. Wenn die Option aktiviert ist, ist für das protokollierte Modell eine explain-Methode verfügbar.

cuda_version

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 None gesetzt, kann es nicht auf einer Plattform mit GPU eingesetzt werden.

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")
Copy

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")
Copy