LightGBM

Snowflake ML Model Registry는 LightGBM(scikit-learn API 래퍼에서 파생된 모델(예: lightgbm.LGBMClassifier) 또는 네이티브 API(예: lightgbm.Booster))을 사용하여 생성된 모델을 지원합니다.

log_model 을 호출할 때 options 사전에서 다음 추가 옵션을 사용할 수 있습니다.

옵션

설명

target_methods

모델 오브젝트에서 사용할 수 있는 메서드 이름 목록입니다. scikit-learn API에서 파생된 모델(예: LGBMClassifier)에는 다음 대상 메서드가 존재한다고 가정하면 기본적으로 predict, predict_proba 대상 메서드가 있습니다. 네이티브 API에서 파생된 모델(예: Booster)에는 기본적으로 predict 메서드가 있습니다.

enable_explainability

SHAP를 사용하여 모델에 대한 설명 가능성을 활성화할지 여부입니다. 기본값은 True 입니다. 활성화하는 경우 explain 메서드는 로깅된 모델에서 사용할 수 있습니다.

cuda_version

GPU로 플랫폼에 배포할 때 사용할 CUDA 런타임 버전으로 기본값은 11.8입니다. 수동으로 None 으로 설정하면 GPU가 있는 플랫폼에 모델을 배포할 수 없습니다.

레지스트리가 대상 메서드의 서명을 알도록 sample_input_data 모델을 로깅할 때 signatures 또는 LightGBM 매개 변수를 지정해야 합니다.

이러한 예제에서는 ``reg``가 ``snowflake.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(Booster)

다음 예제에서는 네이티브 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