Snowflake 데이터 세트¶
Datasets는 머신 러닝 워크플로를 위해 특별히 설계된 새로운 Snowflake 스키마 수준 오브젝트입니다. Snowflake Datasets는 버전으로 구성된 데이터 모음을 보관합니다. 각 버전은 불변성, 효율적인 데이터 액세스, 널리 사용되는 딥러닝 프레임워크와의 상호 운용성을 보장하는 데이터의 구체화된 스냅샷을 제공합니다.
다음 상황에서는 Snowflake Datasets를 사용합니다.
재현 가능한 머신 러닝 모델 훈련 및 테스트를 위해서는 대규모 데이터 세트를 관리하고 버전을 관리해야 합니다.
분산형 훈련이나 데이터 스트리밍을 위해서는 세분화된 파일 수준 액세스 및/또는 데이터 셔플링이 필요합니다.
외부 머신 러닝 프레임워크 및 도구와 통합해야 합니다.
ML 모델을 만드는 데 사용된 계보를 추적해야 합니다.
데이터 세트는 구체화된 데이터 오브젝트입니다. Snowflake ML 또는 SQL 명령을 사용하여 상호 작용할 수 있습니다. Snowsight 데이터베이스 오브젝트 탐색기에는 표시되지 않습니다.
참고
데이터 세트에는 저장소 비용이 발생합니다. 사용하지 않는 데이터 세트를 삭제하여 비용을 최소화하십시오.
2025년 3월 20일 의 일반 공급 출시 이전에 생성된 데이터 세트는 복제를 지원하지 않습니다. 자세한 내용은 여러 계정에 걸쳐 복제 및 장애 조치 도입 섹션을 참조하십시오.
설치¶
Dataset Python SDK 는 버전 1.7.5부터 Snowpark ML (Python 패키지 snowflake-ml-python)에 포함되어 있습니다. 설치 지침은 로컬에서 Snowflake ML 사용하기 섹션을 참조하십시오.
필수 권한¶
데이터 세트를 생성하려면 CREATE DATASET 스키마 수준 권한이 필요합니다. 데이터 세트 버전을 추가하거나 삭제하는 등 데이터 세트를 수정하려면 데이터 세트에 대한 OWNERSHIP이 필요합니다. 데이터 세트에서 읽으려면 데이터 세트에 대한 USAGE 권한(또는 OWNERSHIP)만 있으면 됩니다. Snowflake에서 권한을 부여하는 방법에 대한 자세한 내용은 GRANT <privileges> … TO ROLE 섹션을 참조하십시오.
팁
setup_feature_store 메서드 또는 권한 설정 SQL 스크립트 를 사용하여 Snowflake Feature Store에 대한 권한을 설정하면 데이터 세트 권한도 설정됩니다. 이러한 방법 중 하나를 사용하여 이미 기능 스토어 권한을 설정한 경우 추가적인 작업이 필요하지 않습니다.
데이터 세트 만들기 및 사용하기¶
SQL 또는 Python으로 데이터 세트를 만들고 관리할 수 있습니다. SQL 명령 사용에 대한 자세한 내용은 SQL 명령 섹션을 참조하십시오. Python API 사용에 대한 자세한 내용은 snowflake.ml.dataset 섹션을 참조하십시오.
snowflake.ml.dataset.create_from_dataframe 함수에 Snowpark DataFrame 을 전달하여 데이터 세트를 생성합니다.
데이터 세트에는 버전이 지정됩니다. 각 버전은 데이터 세트에서 관리하는 데이터의 변경 불가능한 특정 시점 스냅샷입니다. Python API에는 주어진 데이터 세트가 사용하도록 선택되었는지 여부를 나타내는 Dataset.selected_version 속성이 포함되어 있습니다. 이 속성은 dataset.create_from_dataframe 및 dataset.load_dataset 팩토리 메서드에 의해 자동으로 설정되므로 데이터 세트를 생성하면 생성된 버전이 자동으로 선택됩니다. Dataset.select_version 및 Dataset.create_version 메서드를 사용하여 버전 간에 명시적으로 전환할 수도 있습니다. Dataset에서 읽기는 활성화된 선택 버전에서 읽기를 실행합니다.
Dataset에서 데이터 읽기¶
Dataset 버전 데이터는 Apache Parquet 형식의 균일한 크기의 파일로 저장됩니다. API는 사용자 지정 프레임워크 커넥터를 지원하도록 확장할 수 있습니다.
Dataset에서 읽으려면 선택한 버전이 활성화되어 있어야 합니다.
TensorFlow에 연결¶
효율적인 훈련과 평가를 위해 데이터 세트를 TensorFlow의 tf.data.Dataset 으로 변환하고 일괄 스트리밍할 수 있습니다.
PyTorch에 연결¶
또한 데이터 세트는 PyTorch DataPipes로의 변환을 지원하며 효율적인 훈련과 평가를 위해 일괄 스트리밍할 수 있습니다.
Snowpark ML에 연결¶
데이터 세트는 Snowpark ML 모델링과의 통합을 위해 다시 Snowpark DataFrames로 변환할 수도 있습니다. 변환된 Snowpark DataFrame은 Dataset 생성 시 제공된 DataFrame과 동일하지 않으며, Dataset 버전에서 구체화된 데이터를 가리킵니다.
직접 파일 액세스¶
또한 데이터 세트 API에는 fsspec 인터페이스가 노출되어 있어 PyArrow, Dask 또는 fsspec 를 지원하고 분산 및/또는 스트림 기반 모델 훈련이 가능한 기타 패키지 등 외부 라이브러리와의 사용자 지정 통합을 구축하는 데 사용할 수 있습니다.
데이터 세트, 기능 스토어, 모델 레지스트리, ML 계보¶
데이터 세트는 Snowflake ML 생태계에 긴밀히 통합되어 Snowflake 내부에서 원활한 엔드투엔드 모델 개발 및 MLOps 환경을 제공합니다.
FeatureStore.generate_datasetAPI를 사용하여 Snowflake Feature Store 기능에서 데이터 세트를 생성할 수 있습니다. 그런 다음, 데이터 세트를 Snowpark DataFrames로 변환하고 모델 학습을 위해 Snowpark ML Modeling으로 전달할 수 있습니다. 그러면 학습된 모델을 Snowflake Model Registry에 로깅하여 전체 엔드투엔드 거버넌스를 위해 소스 데이터, 기능 뷰, 데이터 세트, 모델을 연결하는 ML 계보 그래프를 자동으로 완성할 수 있습니다.
SQL 을 사용하여 데이터 세트 버전에서 읽기¶
표준 Snowflake SQL 명령을 사용하여 데이터 세트 버전에서 데이터를 읽을 수 있습니다. SQL 명령을 사용하여 다음 작업을 수행할 수 있습니다.
파일 나열
스키마 추론
스테이지에서 직접 데이터 쿼리
중요
데이터 세트를 읽으려면 USAGE 또는 OWNERSHIP 권한이 있어야 합니다.
데이터 세트 버전에서 파일 목록 가져오기¶
LIST snow_url 명령을 사용하여 데이터 세트 버전에서 파일을 나열합니다. 다음 SQL 구문을 사용하여 데이터 세트 버전 내의 모든 파일을 나열합니다.
파일 분석 및 열 정의 가져오기¶
INFER_SCHEMA 함수를 사용하여 데이터 세트 버전에서 파일을 분석하고 열 정의를 검색합니다. 다음 SQL 예제를 사용하여 데이터 세트 버전 내의 모든 파일을 나열합니다.
데이터 세트 버전의 위치를 가져오려면 예제에 지정된 패턴을 사용해야 합니다.
FILE_FORMAT 의 경우 PARQUET 를 지정합니다.
다음 예제에서는 파일 형식을 만들고 INFER_SCHEMA 함수를 실행합니다.
스테이지 쿼리¶
외부 테이블을 쿼리하는 것과 비슷한 방식으로 데이터 세트 버전에 저장된 파일에서 직접 데이터를 쿼리할 수 있습니다. 다음 SQL 예를 참조하여 시작하십시오.
SQL 명령¶
SQL 명령을 사용하여 데이터 세트를 만들고 관리할 수 있습니다. 자세한 내용은 다음을 참조하십시오.
현재 제한 사항 및 알려진 문제¶
데이터 세트 이름은 SQL 식별자이며 Snowflake 식별자 요구 사항 을 따릅니다.
데이터 세트 버전은 문자열이며 최대 128자까지 가능합니다. 일부 문자는 허용되지 않으며 오류 메시지가 표시됩니다.
스키마가 광범위한 데이터 세트(약 4,000개 이상의 열)에 대한 특정 쿼리 작업은 완전히 최적화되지 않았습니다. 이 문제는 향후 릴리스에서 개선될 예정입니다.