LightGBM

O Snowflake ML Model Registry é compatível com modelos criados usando LightGBM (modelos derivados do wrapper da API scikit-learn, por exemplo, lightgbm.LGBMClassifier ou da API nativa, por exemplo, lightgbm.Booster).

As seguintes opções adicionais podem ser usadas no dicionário options quando você chamar log_model:

Opção

Descrição

target_methods

Uma lista dos nomes dos métodos disponíveis no objeto modelo. Modelos derivados da API scikit-learn (por exemplo, LGBMClassifier) têm os seguintes métodos de destino por padrão, assumindo que o método exista: predict, predict_proba. Modelos derivados da API nativa (por exemplo, Booster) têm o método predict por padrão.

enable_explainability

Indica se a explicabilidade deve ser ativada para o modelo que usa SHAP. O padrão é True. Quando ativado, um método explain estará disponível no modelo registrado.

cuda_version

A versão do tempo de execução CUDA a ser usada ao implantar em uma plataforma com GPU; o padrão é 11.8. Se definido manualmente como None, o modelo não poderá ser implementado em uma plataforma com GPU.

Você deve especificar o parâmetro sample_input_data ou signatures ao registrar um modelo LightGBM para que o registro conheça as assinaturas dos métodos de destino.

Exemplos

Estes exemplos pressupõem que reg seja uma instância de snowflake.ml.registry.Registry.

API scikit-learn (LGBMClassifier)

O exemplo a seguir demonstra as etapas principais para treinar um classificador LightGBM usando a API scikit-learn, registrá-lo no Snowflake ML Model Registry e usar o modelo registrado para inferência e explicabilidade. O fluxo de trabalho inclui:

  • Treinar um classificador LightGBM em um conjunto de dados de amostra.

  • Registrar o modelo no Snowflake ML Model Registry.

  • Fazer previsões e recuperar as probabilidades de previsão.

  • Obter valores SHAP para as previsões do modelo.

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 nativa (Booster)

O exemplo a seguir demonstra as etapas principais para treinar um modelo LightGBM usando a API nativa do Snowflake ML, registrá-lo no Snowflake ML Model Registry e usar o modelo registrado para inferência. O fluxo de trabalho faz o seguinte:

  • Treina um modelo LightGBM em um conjunto de dados de amostra.

  • Registrar o modelo no Snowflake ML Model Registry.

  • Faz previsões.

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