본문으로 건너뛰기
snowflake검색
AI

Snowflake ML (Notebooks, Feature Store, Model Registry)

Snowflake 안에서 모델을 학습하고 배포하는 Snowflake ML 의 구성, Workspaces 의 Notebooks 와 Container Runtime, Feature Store 와 Online Feature Store, ML 실험 추적, Model Registry 와 추론, 비용과 흔한 실수를 정리합니다.

Snowflake MLNotebooksContainer RuntimeFeature StoreModel RegistryMLOps2026-10 기준, 약 9분상태 표시 설명

구성 한눈에 보기

Snowflake ML 은 데이터를 밖으로 빼지 않고 준비, 학습, 실험 추적, 등록, 추론, 모니터링까지 이어 주는 기능 묶음입니다. 파이썬 패키지 snowflake-ml-python 이 대부분의 API 를 제공합니다.

단계기능2026-10 기준
개발 환경Workspaces 의 NotebooksGA (2026-02-05)
실행 환경Container Runtime (CPU, GPU 컴퓨트 풀)GA
피처 관리Feature Store, Online Feature StoreGA (2026-10-20)
실험 추적ML ExperimentsGA (2026-02-19)
모델 관리Model RegistryGA
추론웨어하우스 추론, Snowpark Container Services 서빙GA
감시ML Observability (모델 모니터)GA

Notebooks 의 변화

2026년 Snowflake 노트북은 두 갈래가 되었습니다.

  • Workspaces 의 Notebooks (2026-02-05 GA): 파일 기반 노트북으로 Git 연동, 여러 파일 프로젝트, Container Runtime 실행을 기본으로 합니다. 새로 만드는 노트북은 이쪽을 씁니다.
  • Legacy Notebooks: 예전 Snowsight 노트북은 2026년 3월 16일부터 Legacy Notebooks 라고 부릅니다. 계속 열 수 있지만 새 기능은 Workspaces 쪽에 들어갑니다.
  • 2026년 8월 3일 Notebook Project Objects 는 Code Bundles 로 이름이 바뀌었습니다. 노트북과 코드를 묶어 태스크로 예약 실행할 때 씁니다.

Container Runtime

Container Runtime 은 컴퓨트 풀 위의 컨테이너에서 노트북과 학습 작업을 돌리는 실행 환경입니다. 인기 ML 라이브러리와 GPU 드라이버가 미리 들어 있고, pip install 로 패키지를 더할 수 있습니다 (외부 접근 통합 필요).

-- GPU 컴퓨트 풀 예 (인스턴스 패밀리 이름은 클라우드와 리전에 따라 다름)
CREATE COMPUTE POOL ml_gpu_pool
  MIN_NODES = 1 MAX_NODES = 2
  INSTANCE_FAMILY = GPU_NV_S
  AUTO_SUSPEND_SECS = 600;

-- PyPI 접근 허용 (Snowflake 제공 통합을 쓰거나 직접 만듦)
GRANT USAGE ON INTEGRATION pypi_access_integration TO ROLE ml_engineer;

주의 컴퓨트 풀은 노드가 떠 있는 동안 계속 크레딧을 씁니다. 노트북 세션을 닫아도 풀의 AUTO_SUSPEND_SECS 가 지나기 전까지는 과금되니, 실험이 끝나면 ALTER COMPUTE POOL ... SUSPEND 를 습관처럼 실행합니다.

Feature Store

Feature Store 는 피처 정의를 엔티티(조인 키)와 피처 뷰 객체로 관리하고, 학습용 데이터셋을 시점 정확(point-in-time correct)하게 만들어 줍니다. 피처 뷰는 내부적으로 Dynamic Table 이나 뷰로 만들어집니다.

from snowflake.ml.feature_store import FeatureStore, Entity, FeatureView, CreationMode

fs = FeatureStore(session, database="ML", name="FS", default_warehouse="ML_WH",
                  creation_mode=CreationMode.CREATE_IF_NOT_EXIST)

customer = Entity(name="CUSTOMER", join_keys=["CUSTOMER_ID"])
fs.register_entity(customer)

df = session.sql("""
  SELECT customer_id, event_ts,
         COUNT(*) OVER (PARTITION BY customer_id ORDER BY event_ts
                        RANGE BETWEEN INTERVAL '30 DAYS' PRECEDING AND CURRENT ROW) AS orders_30d
  FROM sales.orders""")

fv = FeatureView(name="CUSTOMER_ORDERS", entities=[customer], feature_df=df,
                 timestamp_col="EVENT_TS", refresh_freq="1 hour")
fv = fs.register_feature_view(fv, version="v1")

train = fs.generate_training_set(spine_df=labels_df, features=[fv])
  • Online Feature Store (2026-10-20 GA) 는 실시간 추론에 필요한 최신 피처 값을 낮은 지연으로 돌려줍니다. 배치 학습용 오프라인 저장과 같은 정의를 쓰므로 학습과 서빙의 피처가 어긋나는 문제를 줄입니다.
  • 피처 뷰의 갱신 주기는 Dynamic Table 의 TARGET_LAG 처럼 비용과 직결됩니다. 실시간이 필요 없는 피처는 길게 잡습니다.

실험 추적과 학습

ML Experiments (2026-02-19 GA) 는 실행(run)마다 매개변수, 지표, 산출물을 기록하고 Snowsight 에서 비교하게 해 줍니다.

from snowflake.ml.experiment import ExperimentTracking
exp = ExperimentTracking(session=session)
exp.set_experiment("churn_xgb")
with exp.start_run():
    exp.log_params({"max_depth": 6, "n_estimators": 300})
    model.fit(X_train, y_train)
    exp.log_metric("auc", auc_score)
  • 큰 데이터는 Container Runtime 의 분산 학습 API(XGBoost, LightGBM, PyTorch 등)를 쓰면 여러 노드에 나눠 학습합니다.
  • snowflake.ml.modeling 의 scikit-learn 호환 클래스는 웨어하우스에서 전처리와 학습을 돌립니다. 데이터가 작고 단순한 모델이라면 충분합니다.
  • API 이름과 인자는 snowflake-ml-python 버전마다 바뀌므로, 위 코드는 흐름을 보여 주는 예시로 보고 설치한 버전의 문서를 확인합니다.

Model Registry 와 추론

from snowflake.ml.registry import Registry
reg = Registry(session=session, database_name="ML", schema_name="MODELS")

mv = reg.log_model(model, model_name="CHURN", version_name="V3",
                   sample_input_data=X_train.head(100),
                   target_platforms=["WAREHOUSE", "SNOWPARK_CONTAINER_SERVICES"],
                   metrics={"auc": auc_score})

# 웨어하우스에서 배치 추론
preds = mv.run(score_df, function_name="predict_proba")
-- SQL 에서 바로 추론
SELECT customer_id,
       CHURN!PREDICT_PROBA(*) AS p
FROM ml.features.customers_today;
  • 모델은 스키마 객체(MODEL)이고 버전, 별칭(default, production 등), 태그, 지표를 가집니다. 권한도 일반 객체처럼 역할로 줍니다.
  • 실시간 API 가 필요하면 Snowpark Container Services 에 추론 서비스를 띄웁니다. GPU 가 필요한 대형 모델도 이 경로입니다.
  • 모델 모니터를 붙이면 예측 분포와 성능 지표의 변화를 추적합니다.

비용

항목과금줄이는 법
Notebooks, 학습컴퓨트 풀 노드 시간 (인스턴스 종류별 크레딧)작은 노드로 시작, 자동 일시 중지 짧게
웨어하우스 추론웨어하우스 크레딧배치로 모아서, 필요한 열만
컨테이너 추론 서비스서비스가 떠 있는 시간최소 노드 수 조정, 야간 중지
Feature Store피처 뷰 갱신 (Dynamic Table) 과 저장갱신 주기 늘리기

컴퓨트 풀 인스턴스 종류별 크레딧은 Service Consumption Table 의 Snowpark Container Services 표에 있습니다.

트러블슈팅

  • 증상: 노트북에서 pip install 이 시간 초과로 실패합니다.

  • 원인: 노트북에 외부 접근 통합이 연결되지 않아 PyPI 로 나갈 수 없습니다.

  • 해결: 관리자가 PyPI 용 네트워크 규칙과 외부 접근 통합을 만들고 역할에 USAGE 를 준 뒤, 노트북 설정에서 그 통합을 켭니다.

  • 증상: 학습할 때는 성능이 좋았는데 운영 예측이 엉망입니다.

  • 원인: 학습 데이터에 미래 정보가 섞였거나(시점 누수), 학습과 서빙의 피처 계산이 다릅니다.

  • 해결: Feature Store 의 시점 정확 조인으로 학습 세트를 다시 만들고, 서빙도 같은 피처 뷰에서 값을 읽게 합니다.

  • 증상: 컴퓨트 풀 비용이 생각보다 큽니다.

  • 원인: 실험 뒤 풀이 계속 떠 있거나, 최소 노드 수가 1 이상으로 고정되어 있습니다.

  • 해결: SHOW COMPUTE POOLS 로 상태를 보고, 쓰지 않는 풀은 일시 중지합니다. 자동 일시 중지 시간을 줄입니다.

공식 문서

이 문서에서