ML Lineage: ML 데이터 흐름 추적¶
참고
ML Lineage는 snowflake-ml-python
패키지 버전 1.6.0 이상에서 사용 가능합니다.
ML Lineage는 머신 러닝 파이프라인을 통해 흐르는 데이터에 대한 포괄적인 추적을 제공합니다. 이 기능을 사용하면 원본 테이블/뷰/스테이지, 특성 뷰, 데이터 세트, 등록된 모델, 배포된 모델 서비스 등 다양한 데이터 아티팩트 간의 계보를 추적할 수 있습니다. 또한 ML Lineage는 복제본 아티팩트와 유사한 유형의 아티팩트 간의 관계를 캡처하여 데이터 파이프라인 내에서 데이터 변환 및 종속성에 대한 완벽한 뷰를 보장합니다. 가능한 파이프라인은 아래와 같습니다.

파이프라인의 노드 유형 간에 추적할 수 있는 계보 관계는 아래 표에 요약되어 있습니다. 각 행은 종속성의 원본을 나타내고 각 열은 대상을 나타냅니다. 행 또는 열의 교차점에는 해당 관계가 ML Lineage에 의해 캡처되었는지 여부를 나타내는 아이콘이 있습니다.
테이블/뷰/스테이지 |
특성 뷰 |
Datasets |
모델 |
배포된 모델 서비스 |
|
---|---|---|---|---|---|
테이블/뷰/스테이지 |
✔ |
✔ |
✔ |
✔ |
- |
특성 뷰 |
✔ (테이블에만 해당) |
✔ |
✔ |
- |
- |
Datasets |
✔ |
- |
✔ |
✔ |
- |
모델 |
❌ |
- |
- |
✔ |
✔ |
배포된 모델 서비스 |
❌ |
- |
- |
- |
- |
✔: 이 관계는 ML Lineage에서 캡처한 것입니다.
❌: 이 관계는 아직 ML Lineage에 포착되지 않았지만 로드맵에 포함되어 있습니다.
-: 이 오브젝트 조합은 관계를 나타내지 않습니다.
ML Lineage를 사용하면 머신 러닝 아티팩트가 서로 어떻게 연관되어 있는지 이해하고 다음과 같은 질문에 답할 수 있습니다.
모델 학습을 위한 데이터의 출처는 어디인가요?
내 데이터 세트는 어떤 특성 뷰에 종속되어 있나요?
내 데이터 세트의 데이터로 어떤 모델이 학습되었나요?
어떤 서비스가 내 모델을 사용하나요?
빠른 시작 노트북 에서 ML Lineage API 사용 방법을 확인하십시오. Feature Store와 Model Registry를 포함한 ML Lineage를 전체 ML 워크플로에 통합한 보다 완벽한 엔드 투 엔드 ML 빠른 시작 을 후속으로 제공합니다.
제한 사항¶
모델 예측에서 생성된 테이블 및 뷰는 현재 모델에 대한 계보 관계를 다시 캡처하지 않습니다.
현재 계보 정보는 복제되지 않습니다.
Snowflake는 향후 릴리스(ML Lineage)에서 이러한 제한 사항을 해결하고자 합니다.
필수 권한¶
사용자는 Python API에서 계보를 탐색하려면 VIEW LINEAGE 권한이 필요합니다. 이 권한은 ACCOUNTADMIN 역할에 자동으로 부여되며, 이 역할은 계정 수준에서 다른 역할에 권한을 부여할 수 있습니다. 예:
USE ROLE ACCOUNTADMIN;
GRANT VIEW LINEAGE ON ACCOUNT TO ROLE test_role;
ML Lineage 만들기¶
일반적으로 Snowflake는 오브젝트가 생성될 때 계보 정보를 기록합니다. 모델에 대한 계보는 모델이 Model Registry에 로그될 때 캡처됩니다. Snowpark ML 을 사용하여 모델을 학습하면 모델이 Snowpark DataFrame 에서 학습된 경우 계보 기록이 자동으로 생성됩니다.
아래 목록과 같은 다른 시나리오에서도 약간의 추가 노력으로 계보 기록을 생성할 수 있습니다.
Snowpark MLfrom 나 다른 종류의 데이터 원본(예: pandas DataFrame)을 사용하여 모델을 학습시키기.
Snowpark ML 또는 Snowpark DataFrame 을 사용하지 않고 모델 학습시키기.
Snowflake 외부에서 모델 학습시키기.
이러한 시나리오에서도 아래와 같이 원본 데이터 오브젝트를 sample_data
로 뒷받침하는 Snowpark DataFrame 을 Model Registry의 log_model
메서드에 전달하여 원본 데이터 오브젝트와 학습된 모델을 연결할 수 있습니다.
registry.log_model(...,
sample_input_data=df_backed_by_source_table)
참고
계정에서 ML Lineage 기능을 활성화한 후에 생성된 오브젝트에만 계보 정보가 포함됩니다.
ML Lineage 쿼리하기¶
ML 아티팩트의 계보를 여러 가지 방법으로 쿼리할 수 있습니다.
Snowsight UI¶
모든 아티팩트의 랜딩 페이지에는 Lineage 탭이 있습니다. 기본 뷰는 선택한 오브젝트에서 한 단계 떨어진 업스트림 및 다운스트림 오브젝트를 표시합니다. Snowsight UI 내의 계보에 대한 자세한 내용은 Snowsight 의 데이터 계보 섹션을 참조하십시오.
계보 데이터의 Snowsight 뷰 샘플은 아래와 같습니다.

Snowpark ML 라이브러리¶
Snowpark ML 라이브러리(snowflake-ml-python
패키지)는 모든 Snowflake ML 아티팩트 오브젝트에 대해 사용자 친화적인 API 를 제공하여 업스트림 및 다운스트림 방향 모두에서 계보를 탐색할 수 있습니다. 연결된 아티팩트 오브젝트를 반환하며 API 호출을 연결하여 원하는 방향으로 더 탐색할 수 있습니다. 이 API 는 Snowflake ML Python 오브젝트와 직접 작동합니다. 자세한 내용은 Snowpark ML lineage API 섹션을 참조하십시오.
Snowpark Python 라이브러리¶
Snowpark 라이브러리는 유연한 API 를 제공하여 원하는 방향으로 데이터를 탐색하고 지원되는 Snowflake 아티팩트의 ML 계보를 더 깊이 있게 살펴볼 수 있습니다. 도메인 및 정규화된 이름을 허용하여 연결된 아티팩트에 대한 세부 정보가 포함된 DataFrame 을 반환합니다. 자세한 내용은 Snowpark Python API Reference의 snowflake.snowpark.lineage.Lineage.trace 를 참조하십시오.
Snowflake SQL¶
SQL 함수 SNOWFLAKE.CORE.GET_LINEAGE
를 사용하면 Snowpark 라이브러리와 유사한 계보 정보를 쿼리할 수 있습니다. 자세한 내용은 GET_LINEAGE (SNOWFLAKE.CORE) 섹션을 참조하십시오.
Snowpark ML lineage API¶
FeatureView
, ModelVersion
및 Dataset
오브젝트에서 사용 가능한 lineage
메서드는 현재 오브젝트의 계보 관계를 검색하므로 Snowflake Feature Store 또는 Model Registry에서 검색된 데이터 오브젝트의 계보를 추적할 수 있습니다.
지원되는 모든 오브젝트에 대해 lineage
메서드는 다음 인자를 사용할 수 있습니다.
direction
으로,UPSTREAM
또는DOWNSTREAM
입니다.DOWNSTREAM
이 기본값입니다.domain_filter
는 계보를 검색할 대상 오브젝트 유형의 목록입니다. 기본값은 모든 계보 관계를 반환하는 것입니다. 사용 가능한 도메인은"feature_view"
,"dataset"
,"model"
,"table"
,"view"
입니다.
이 메서드는 연결된 계보 노드 목록을 반환합니다. 이러한 클래스를 Python 세션으로 가져온 경우 이러한 노드는 Dataset
, FeatureView
또는 ModelVersion
의 인스턴스일 수 있습니다. 그렇지 않으면 각 노드는 일반 LineageNode
인스턴스로 표시됩니다.
예¶
다음 예는 Snowpark ML lineage API 를 사용하여 일반적인 질문에 답하는 방법을 보여줍니다.
모델 버전이 주어졌을 때, 그 학습 데이터의 출처는 어디일까요?
model_version.lineage(direction="upstream")
특정 데이터 세트는 어떤 특성 뷰에 종속되어 있나요?
my_dataset.lineage(direction="upstream", domain_filter=["feature_view"])
주어진 데이터 세트의 데이터에 대해 어떤 모델이 학습되었나요?
my_dataset.lineage(direction="downstream", domain_filter=["model"])
더 자세한 예시는 다음 리소스 섹션을 참조하십시오.