모델 학습 및 추론

참고

Snowflake Feature Store API는 Snowpark ML Python 패키지(snowflake-ml-python) v1.5.0 이상에서 사용할 수 있습니다.

훈련을 위한 데이터 세트 만들기

기능 스토어의 generate_training_set 메서드를 사용해 훈련 데이터 세트를 생성하여 소스 데이터가 포함된 Snowpark DataFrame을 파생된 기능 값으로 보강할 수 있습니다. 피처 뷰에서 기능 하위 집합을 선택하려면 fv.slice 를 사용합니다.

시계열 기능의 경우 타임스탬프 열 이름을 제공하여 특정 시점의 피처 값 조회를 자동화합니다.

training_set = fs.generate_training_set(
    spine_df=MySourceDataFrame,
    features=[registered_fv],
    save_as="data_20240101",                    # optional
    spine_timestamp_col="TS",                   # optional
    spine_label_cols=["LABEL1", "LABEL2"],      # optional
    include_feature_view_timestamp_col=False,   # optional
)
Copy

참고

여기서 spine_df (MySourceDataFrame)는 원본 데이터의 엔터티 IDs, 타임스탬프, 레이블 열, 훈련 데이터가 포함된 추가 열을 포함하는 DataFrame입니다. 엔터티 IDs의 목록에 대해 요청된 기능이 검색되며, 제공된 타임스탬프와 관련하여 정확한 시점을 기준으로 검색됩니다.

훈련 세트는 기본적으로 일시적이며, Snowpark DataFrames로만 존재하고 구체화되지 않습니다. 훈련 집합을 테이블로 구체화하려면 save_as 인자에 존재하지 않는 유효한 테이블 이름을 지정합니다. 훈련 세트는 새로 생성된 테이블에 기록됩니다.

현재 구체화된 테이블은 불변성을 보장하지 않으며 메타데이터 지원이 제한적입니다. 이러한 기능이 필요한 경우 대신 Snowflake 데이터 세트 를 사용하는 것이 좋습니다.

참고

generate_training_set API는 snowflake-ml-python 버전 1.5.4 이상에서 사용할 수 있습니다.

훈련을 위한 Snowflake 데이터 세트 만들기

기능 스토어의 generate_dataset 메서드를 사용하여 Snowflake Dataset 를 생성할 수 있습니다. 메서드 서명은 generate_training_set 와 유사하지만 주요 차이점은 필수 name 인자, 선택적 version 인자 및 추가 메타데이터 필드입니다. generate_dataset 는 항상 결과를 구체화합니다.

Snowflake 데이터 세트는 변경 불가능한 파일 기반 데이터 스냅샷을 제공하여 대규모 데이터 세트 및/또는 분산형 훈련에 대한 모델 재현성과 효율적인 데이터 수집을 보장하는 데 도움이 됩니다. 데이터 세트의 메타데이터 지원도 확장되어 검색과 소비가 더욱 쉬워졌습니다.

다음 코드는 기능 뷰에서 데이터 세트를 생성하는 방법을 보여줍니다.

dataset: Dataset = fs.generate_dataset(
    name="MY_DATASET",
    spine_df=MySourceDataFrame,
    features=[registered_fv],
    version="v1",                               # optional
    spine_timestamp_col="TS",                   # optional
    spine_label_cols=["LABEL1", "LABEL2"],      # optional
    include_feature_view_timestamp_col=False,   # optional
    desc="my new dataset",                      # optional
)
Copy

모델 훈련

훈련 데이터 세트를 생성한 후 다음과 같이 훈련할 때 모델에 전달할 수 있습니다.

Snowpark DataFrame을 생성한 경우, 이를 모델에 직접 전달합니다.

my_model = train_my_model(training_set)
Copy

Snowflake 데이터 세트한 경우 이를 Snowpark DataFrame으로 변환하여 모델에 전달합니다.

my_model = train_my_model(dataset.read.to_snowpark_dataframe())
Copy

훈련이 완료되면 모델은 Snowflake Model Registry 에 기록할 수 있습니다.

기능 검색 및 예측 만들기

Python 세션에서 모델을 생성한 경우 다음과 같이 기능 스토어에서 기능 뷰를 검색하여 예측을 위해 모델에 전달할 수 있습니다.

prediction_df: snowpark.DataFrame = fs.retrieve_feature_values(
    spine_df=prediction_source_dataframe,
    features=[registered_fv],
    spine_timestamp_col="TS",
    exclude_columns=[],
)

# predict with your previously trained model
my_model.predict(prediction_df)
Copy

exclude_columns 인자를 사용하여 지정된 열을 제외하거나 include_feature_view_timestamp_col 을 설정하여 기능 뷰에서 타임스탬프 열을 포함할 수 있습니다.