온라인 기능 생성 및 제공하기

대기 시간에 민감한 머신 러닝 추론 워크플로를 위한 온라인 기능을 생성하고 제공합니다. 생성 중인 기능 뷰에서 온라인 기능을 활성화하거나 기존 기능 뷰를 업데이트하여 온라인 서비스를 활성화합니다.

중요

온라인 기능 제공을 사용하려면 Snowflake 버전 9.26 이상 및 snowflake-ml-python 버전 1.18.0을 사용해야 합니다.

온라인 기능 제공은 다음과 같은 이점을 제공합니다.

  • 실시간 추론을 위해 대기 시간이 짧은 지점 조회

  • 오프라인 소스에서 자동 데이터 동기화

  • 완전 관리형 인프라 및 유지 관리

  • 까다로운 워크로드를 위한 탄력적 확장

온라인 기능 제공은 :doc:`온라인 기능 테이블</sql-reference/commands-feature-store>`에 의해 지원됩니다.

데이터 최신성

온라인 기능을 제공하는 기능 뷰는 오프라인 저장소의 데이터를 자동으로 동기화합니다.

target_lag 매개 변수를 사용하여 데이터가 온라인 기능 테이블에 동기화되는 빈도를 구성합니다. 이 값은 최소 10초에서 최대 8일까지 설정할 수 있습니다.

새로 고침 모드

Snowflake는 다음 새로 고침 모드를 사용하여 데이터를 업데이트합니다.

  • 증분 새로 고침: 이 모드는 가장 선호되고 효율적인 모드입니다. Snowflake는 소스의 변경 사항을 추적하고 새 행 또는 업데이트된 행만 온라인 스토어에 병합합니다. 이를 통해 컴퓨팅 및 I/O 비용이 최소화됩니다.

  • 전체 새로 고침: 이 모드에서는 테이블의 모든 기존 데이터를 삭제하고 소스에서 모든 데이터를 다시 로드합니다. 리소스를 더 많이 사용하며 증분 새로 고침이 불가능한 경우에 사용됩니다.

새로 고침 모드를 INCREMENTAL 또는 FULL로 명시적으로 설정하거나 AUTO로 설정하여 Snowflake가 사용 가능한 가장 효율적인 새로 고침 모드를 결정하도록 할 수 있습니다.

시계열 데이터 처리

데이터 일관성을 보장하기 위해 :code:`timestamp_col`을 지정할 수 있습니다. 소스에서 기본 키가 동일한 여러 행이 발견되는 경우 Snowflake는 타임스탬프가 가장 최근인 버전만 수집합니다. 타임스탬프 열을 지정하지 않으면 가장 최근에 처리된 행이 우선합니다.

온라인 기능을 생성 및 제공할 수 있는 액세스 권한 제공

온라인 기능 스토어 사용을 시작하기 전에 관련 역할에 필요한 권한을 제공해야 합니다.

권한을 제공하려면 :ref:`label-snowflake_feature_store_setup_sql`에 설명된 액세스 제어 스크립트를 사용합니다. 스크립트를 실행한 후 다음 권한을 부여합니다.

GRANT CREATE ONLINE FEATURE TABLE ON SCHEMA IDENTIFIER($SCHEMA_FQN) TO ROLE IDENTIFIER($FS_ROLE_PRODUCER);

GRANT SELECT, MONITOR ON FUTURE ONLINE FEATURE TABLES IN SCHEMA IDENTIFIER($SCHEMA_FQN) TO ROLE IDENTIFIER($FS_ROLE_CONSUMER);

GRANT SELECT, MONITOR ON ALL ONLINE FEATURE TABLES IN SCHEMA IDENTIFIER($SCHEMA_FQN) TO ROLE IDENTIFIER($FS_ROLE_CONSUMER);
Copy

Python API를 사용하여 온라인 기능 관리 및 제공

다음 예제에서는 새 기능 뷰를 만들 때 온라인 기능 제공을 구성하는 방법을 보여줍니다. OnlineConfig 오브젝트를 사용하여 대상 데이터 최신성 지연과 같은 온라인 제공 설정을 지정할 수 있습니다.

from snowflake.ml.feature_store import FeatureView
from snowflake.ml.feature_store.feature_view import OnlineConfig

online_config = OnlineConfig(enable=True, target_lag="30 seconds")

fv = FeatureView(
    name="MY_FV",
    entities=[entity],
    feature_df=my_df, # Snowpark DataFrame containing feature transformations
    timestamp_col="ts", # optional timestamp column name in the dataframe
    refresh_freq="5 minutes",
    refresh_mode="AUTO", # refresh mode of the feature data
    desc="my feature view", # optional description
    online_config=online_config
)

fv = fs.register_feature_view(feature_view=fv, version="v1")
Copy

다음은 OnlineConfig 매개 변수입니다.

매개 변수

타입

설명

기본값

활성화

부울, 선택 사항

기능 뷰에 대해 온라인 기능 제공을 활성화할지 여부를 지정합니다.

기본값: False

target_lag

문자열, 선택 사항

대상 데이터 최신성 지연을 지정하는 “<num> (seconds|minutes|hours|days|s|m|h|d)” 형식의 문자열입니다.

기본값: 10초

참고

refresh_freq 및 :code:`OnlineConfig.target_lag`는 독립적으로 작동합니다. 위의 예제에서 ``my_df``로 표시되는 소스 데이터에서 온라인 데이터 저장소로의 유효 대상 데이터 전파 지연은 ``refresh_freq + online_config.target_lag``가 됩니다.

기능 뷰를 업데이트하여 온라인 기능 제공 활성화/비활성화

기존 기능 뷰의 경우 update_feature_view 메서드를 사용하여 온라인 기능 제공 구성을 업데이트할 수 있습니다. 이 메서드를 사용하여 기존 기능 뷰에 대한 온라인 기능 제공을 활성화할 수 있습니다.

다음 코드를 사용하여 온라인 기능 제공을 활성화합니다.

# Enable online feature serving

fs.update_feature_view(
    name="<name>",
    version="<version>",
    online_config=OnlineConfig(enable=True, target_lag="5 minutes")
)
Copy

다음 코드를 사용하여 온라인 기능 제공을 비활성화합니다.

# Disable online feature serving

fs.update_feature_view(
    name="<name>",
    version="<version>",
    online_config=OnlineConfig(enable=False)
)
Copy

온라인 저장소에서 기능 검색하기

주어진 샘플에 대한 온라인 저장소에서 기능 값을 검색하려면 read_feature_view 메서드를 사용하고 샘플의 조인 키뿐 아니라 기능 이름 목록도 전달합니다.

fs.read_feature_view(
    feature_view=fv,
    keys=[["<k_1>", "<k_2>"]],
    feature_names=["<feature1>", "<feature2>", "<feature3>"],
    store_type=StoreType.ONLINE
)
Copy

온라인 데이터 새로 고침 일시 중단/재개

다음 코드를 사용하여 데이터 새로 고침을 일시적으로 중단합니다.

fs.suspend_feature_view(feature_view=fv)
Copy

다음 코드를 사용하여 데이터 새로 고침을 재개합니다.

fs.resume_feature_view(feature_view=fv)
Copy

이러한 작업은 모든 저장소 유형에서 일관된 상태를 보장하기 위해 오프라인 기능 뷰(동적 테이블 및 관련 작업)와 온라인 기능 테이블(있는 경우)을 모두 일시 중단/재개합니다.

수동으로 기능 뷰 새로 고침

fs.refresh_feature_view(
    feature_view=fv,
    store_type=<store_type>
)
Copy

store_type 인자는 오프라인(StoreType.OFFLINE) 또는 온라인(StoreType.ONLINE) 기능 데이터를 새로 고침할지 여부를 지정합니다

새로 고침 기록 보기

fs.get_refresh_history(
    feature_view=fv,
    store_type=store_type
)
Copy

store_type 인자는 오프라인(StoreType.OFFLINE) 또는 온라인(StoreType.ONLINE) 저장소 새로 고침 기록을 반환할지 여부를 지정합니다.

비용 이해하기

온라인 기능 테이블은 다음 사용량 모드에서 비용이 발생합니다.

  • 가상 웨어하우스 컴퓨팅: 키 조회 및 데이터 수집 작업 모두 표준 요율로 가상 웨어하우스 크레딧을 사용합니다. 자세한 내용은 가상 웨어하우스 크레딧 사용 섹션을 참조하십시오.

  • 클라우드 서비스 컴퓨팅: 기본 오브젝트의 변경 사항을 식별하고 새로 고침 작업이 필요한 시점을 결정하는 데 필요합니다. 자세한 내용은 클라우드 서비스 크레딧 사용 섹션을 참조하십시오.

  • 하이브리드 테이블 저장소: 저장소 비용은 GB당 고정 월간 요금을 기준으로 합니다. 기존 Snowflake 저장소 비용보다는 비싸지만 하이브리드 테이블을 저장하는 비용과 동일합니다. 자세한 내용은 `크레딧 사용량 테이블<https://www.snowflake.com/legal-files/CreditConsumptionTable.pdf>`_의 테이블 3(b)를 참조하세요.

  • 하이브리드 테이블 요청: 해당 요청은 행 저장소 클러스터에 대한 읽기/쓰기 작업을 위해 :ref:`label-serverless_credit_usage`을 사용합니다. 이러한 클러스터에서 읽거나 쓰는 데이터의 양은 크레딧 사용량을 계산하는 데 사용되며, 작업당 최소 4KB의 사용량입니다. 압축 등의 백그라운드 작업을 수행하는 데 사용되는 컴퓨팅 리소스에도 크레딧이 소모됩니다. 자세한 내용은 `크레딧 사용량 테이블<https://www.snowflake.com/legal-files/CreditConsumptionTable.pdf>`_의 테이블 5를 참조하세요.

증분 새로 고침은 비용 절감에 도움이 될 수 있습니다. 증분 업데이트는 일반적으로 전체 새로 고침보다 비용 효율적이므로 컴퓨팅 및 데이터 수집 비용이 절감됩니다.

비용 모니터링

비용을 모니터링하려면 다음 뷰를 사용합니다.

-- Hybrid table request credits
SELECT * FROM SNOWFLAKE.ACCOUNT_USAGE.HYBRID_TABLE_USAGE_HISTORY;

-- Storage consumption
SELECT * FROM SNOWFLAKE.ACCOUNT_USAGE.STORAGE_USAGE;
SELECT * FROM SNOWFLAKE.ACCOUNT_USAGE.DATABASE_STORAGE_USAGE_HISTORY;

-- Overall costs
SELECT * FROM SNOWFLAKE.ACCOUNT_USAGE.METERING_HISTORY;
Copy