LightGBM¶
Snowflake ML Model Registry는 LightGBM(scikit-learn API 래퍼에서 파생된 모델(예: lightgbm.LGBMClassifier) 또는 네이티브 API(예: lightgbm.Booster))을 사용하여 생성된 모델을 지원합니다.
log_model 을 호출할 때 options 사전에서 다음 추가 옵션을 사용할 수 있습니다.
옵션 |
설명 |
|---|---|
|
모델 오브젝트에서 사용할 수 있는 메서드 이름 목록입니다. scikit-learn API에서 파생된 모델(예: |
|
SHAP를 사용하여 모델에 대한 설명 가능성을 활성화할지 여부입니다. 기본값은 |
|
GPU로 플랫폼에 배포할 때 사용할 CUDA 런타임 버전으로 기본값은 11.8입니다. 수동으로 |
레지스트리가 대상 메서드의 서명을 알도록 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")
네이티브 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")