SnowparkML: Snowflake용 머신 러닝 툴킷

참고

Snowpark ML 라이브러리는 패키지 버전 1.1.1부터 일반 공급으로 제공됩니다. 아직 개발 중인 일부 기능은 미리 보기 기능으로 표시됩니다. 곧 출시될 Snowpark ML 특징에 대한 설명서를 일찍 살펴보고 싶으신 분은 Snowflake 담당자에게 문의하십시오.

Snowpark ML은 머신 러닝 모델을 개발하고 배포하기 위한 SDK와 기본 인프라를 포함한 도구 세트입니다. Snowpark ML과 함께, 데이터를 사전 처리하고 Snowflake 내에서 ML 모델을 전부 학습, 관리, 배포할 수 있습니다. 머신 러닝 워크플로의 모든 스테이지에서 Snowflake의 검증된 성능, 확장성, 안정성, 거버넌스의 이점을 누립니다.

Snowpark ML은 Snowpark Python과 함께 작동하므로 Snowpark DataFrames를 사용하여 학습 데이터나 테스트 데이터를 보유하고 예측 결과를 받을 수 있습니다.

호환 가능 IDE에서 Snowpark Python 클라이언트 애플리케이션을 작성할 때 Snowpark ML을 사용할 수 있습니다.

Snowpark ML의 핵심 구성 요소

Snowpark ML은 머신 러닝 개발 및 배포 프로세스 전체의 각 스테이지를 지원하는 API를 제공하며 Snowpark ML Development와 Snowpark ML Ops라는 두 가지 주요 구성 요소를 포함합니다.

Snowpark ML Development

Snowpark ML Development에는 Snowflake 내에서 모델을 효율적으로 개발하는 데 사용할 수 있는 Python API 모음이 포함됩니다.

  • 모델링 패키지 (snowflake.ml.modeling)는 데이터 전처리, 특징 공학, 모델 학습을 위한 API를 제공합니다. 패키지에는 확장 가능한 데이터 변환을 제공하는 Snowpark에 최적화된 웨어하우스 에서 제공하는 컴퓨팅 리소스를 사용하는 API가 있는 전처리 모듈도 포함됩니다. 이러한 API는 scikit-learn, xgboost, lightgbm을 포함하여 익숙한 ML 라이브러리를 기반으로 합니다.

  • 프레임워크 커넥터 세트는 네이티브 데이터 로더 형식으로 Pytorch 및 Tensorflow 프레임워크에 최적화되고 안전하며 성능이 우수한 데이터 프로비저닝을 제공합니다.

Snowpark ML Ops

Snowpark ML Ops는 Snowflake에 모델 관리 기능과 통합 배포를 제공하여 Snowpark ML Development API를 보완합니다.

  • FileSet API 는 쿼리 또는 Snowpark DataFrame에서 Snowflake 내부 스테이지로 데이터를 구체화하기 위한 Python fsspec 준수 API와 데이터를 사용하고 PyTorch 또는 TensorFlow 로 공급하는 여러 가지 편리한 방법을 제공합니다.

  • 모델 레지스트리는 Snowflake 내에서 모델을 관리하고 Snowflake 웨어하우스에 벡터화된 UDF(사용자 정의 함수)로 배포하기 위한 Python API입니다. 모델 레지스트리 설명서를 먼저 살펴보고 싶으신 분은 Snowflake 담당자에게 문의하십시오.

Snowpark ML 설치하기

중요

Python용 Snowpark 커넥터 라이브러리에 대한 최근 변경 사항을 통해 PyArrow 에 대한 종속성을 제거했습니다. Snowpark ML에는 PyArrow가 필요하지만 Snowpark ML 1.1.2 이전에는 그에 대한 명시적인 종속성이 없습니다. 최근에 Snowpark ML을 설치했거나 Python용 Snowpark 커넥터를 업그레이드한 경우 PyArrow를 수동으로 설치해야 할 수도 있습니다. 이렇게 하려면 프로젝트에서 conda 또는 pip를 사용하는지 여부에 따라 다음 명령 중 하나를 사용하십시오.

conda install pyarrow
Copy
python -m pip install pyarrow
Copy

모든 Snowpark ML 특징은 단일 패키지 snowflake-ml-python 에 제공됩니다.

conda 명령을 사용하여 Snowflake conda 채널에서 또는 pip 를 사용하여 PyPI(Python Package Index)에서 Snowpark ML을 설치할 수 있습니다. Conda가 기본 설정되어 있습니다.

Snowflake conda 채널에서 Snowpark ML 설치하기

  1. Snowpark ML을 설치할 conda 환경을 만듭니다. 기존 환경을 사용하려면 이 단계를 건너뛰십시오.

    conda create --name snowpark-ml
    
    Copy
  2. Conda 환경을 활성화합니다.

    conda activate snowpark-ml
    
    Copy
  3. Snowflake conda 채널에서 Snowpark ML을 설치합니다.

    conda install --override-channels --channel https://repo.anaconda.com/pkgs/snowflake/ snowflake-ml-python
    
    Copy

Snowpark ML로 작업할 때 가능하면 항상 Snowpark ML에서 검증된 패키지를 받을 수 있도록 Snowflake 리포지토리에서 패키지를 설치하십시오.

PyPI에서 Snowpark ML 설치하기

표준 Python 패키지 관리자 pip 를 사용하여 PyPI(Python Package Index)의 Snowpark ML 패키지를 설치할 수도 있습니다.

경고

conda 환경을 사용하는 경우 이 설치 프로시저를 사용하지 마십시오. 대신 conda 명령 을 사용하십시오.

  1. 프로젝트 디렉터리로 변경하고 Python 가상 환경을 활성화합니다.

    cd ~/projects/ml
    source .venv/bin/activate
    
    Copy
  2. Snowpark ML 패키지를 설치합니다.

    python -m pip install snowflake-ml-python
    
    Copy

선택적 모델링 종속성 설치하기

일부 Snowpark ML Modeling API에는 Snowpark ML의 종속성으로 설치되지 않은 종속성이 필요합니다. Snowpark ML Modeling을 설치할 때 scikit-learn 및 xgboost 패키지가 기본적으로 설치되지만, lightgbm은 선택적 종속성입니다. snowflake.ml.modeling.lightgbm 네임스페이스의 클래스를 사용하려면 lightgbm을 직접 설치하십시오.

다음 명령을 사용하여 conda 환경을 활성화하고 Snowflake conda 채널에서 lightgbm을 설치하십시오.

conda activate snowpark-ml
conda install --override-channels --channel https://repo.anaconda.com/pkgs/snowflake/ lightgbm
Copy

다음 명령을 사용하여 가상 환경을 활성화하고 pip를 사용하여 lightgbm을 설치하십시오.

.venv/bin/activate
python -m pip install 'snowflake-ml-python[lightgbm]'
Copy

Snowflake는 때때로 Snowpark ML에 선택적 종속성을 더 추가할 수 있습니다. pip를 사용하여 모든 선택적 종속성을 설치하려면 다음을 수행하십시오.

.venv/bin/activate
python -m pip install 'snowflake-ml-python[all]'
Copy

Snowpark Python 설정하기

Snowpark Python은 Snowpark ML의 종속 항목이며 Snowpark ML과 함께 자동으로 설치됩니다. Snowpark Python이 시스템에 설정되지 않은 경우 추가 구성 단계를 수행해야 할 수도 있습니다. Snowpark Python 설정 지침은 Snowpark Python을 위한 개발 환경 설정하기 섹션을 참조하십시오.

Snowflake에 인증하기

Snowpark ML의 일부 기능에서는 Snowflake로 인증해야 합니다. Python용 Snowflake 커넥터 Connection 오브젝트 또는 Snowpark Python Session 을 사용하여 이 작업을 수행할 수 있습니다. 두 가지 방법 모두 동일합니다. 해당 애플리케이션에 가장 효과적인 방법을 사용하십시오.

연결 또는 세션을 생성하기 위한 구성 설정을 가져오려면 snowflake.ml.utils.connection_params 모듈에서 SnowflakeLoginOptions 함수를 사용하십시오. 이 함수는 SnowSQL 구성 파일에 명명된 연결 또는 사용자가 설정한 환경 변수에서 연결에 대한 매개 변수를 읽을 수 있습니다. 이 함수는 연결 또는 세션 생성에 사용할 수 있는 이러한 매개 변수가 포함된 사전을 반환합니다. 다음 예에서는 SnowSQL 구성 파일에 있는 명명된 연결 myaccount 에서 연결 매개 변수를 읽습니다.

Python용 Snowflake 커넥터 연결을 생성하려면 connection_params 에서 반환된 구성 정보를 snowflake.connector.connect 에 전달하십시오.

from snowflake import connector
from snowflake.ml.utils import connection_params

params = connection_params.SnowflakeLoginOptions("myaccount")
sf_connection = connector.connect(**params)
Copy

Snowpark Python 세션을 생성하려면 Session 클래스에 대한 빌더를 생성하고 연결 정보를 빌더의 configs 메서드에 전달하십시오.

from snowflake.snowpark import Session
from snowflake.ml.utils import connection_params

params = connection_params.SnowflakeLoginOptions("myaccount")
sp_session = Session.builder.configs(params).create()
Copy

이제 연결 또는 세션이 필요한 Snowpark ML 함수에 연결 또는 세션을 전달할 수 있습니다.

기존 Python용 Snowflake 커넥터 연결에서 Snowpark Python 세션을 생성하려면 연결 오브젝트를 세션 빌더에 전달하십시오.

session = Session.builder.configs({"connection": connection}).create()
Copy

비용 고려 사항

Snowflake에서 모델을 학습시키고 사용할 때 가상 웨어하우스에서 코드를 실행하는데, 이로 인해 컴퓨팅 비용이 발생합니다. 이러한 비용은 모델 유형과 학습 및 예측에 사용된 데이터의 양에 따라 다릅니다.

Snowflake 컴퓨팅 비용에 대한 일반적인 정보는 컴퓨팅 비용 이해하기 섹션을 참조하십시오.

추가 자료

Snowpark ML Modeling과 Snowpark ML Ops에 대한 정보는 다음 리소스를 참조하십시오.

Modeling

Ops

곧 출시될 특징에 대한 설명서를 일찍 살펴보고 싶으신 분은 Snowflake 담당자에게 문의하십시오.

API 참조

Snowpark ML API 참조 에는 공개적으로 출시된 모든 기능에 대한 설명서가 포함됩니다. 대화식 Python 세션에서 Python의 help 함수를 사용하여 모든 클래스에 대한 자세한 API 설명서를 구할 수도 있습니다. 예:

from snowflake.ml.modeling.preprocessing import OneHotEncoder

help(OneHotEncoder)
Copy