Budowanie modeli predykcyjnych bez opuszczania hurtowni danych – Python + Snowflake ML

Dowiedz się, jak budować i trenować modele Machine Learning bezpośrednio w Snowflake z użyciem Pythona i Snowpark – bez potrzeby eksportu danych.
14 września 2025
blog
Poziom: Średnio zaawansowany

Artykuł przeznaczony dla analityków danych, inżynierów danych i data scientistów znających podstawy Pythona oraz pojęcia związane z machine learning, którzy chcą wdrażać modele w środowisku Snowflake.

Z tego artykułu dowiesz się

  • Czym są Snowflake, Snowpark i Snowflake ML oraz jak wspólnie umożliwiają tworzenie modeli uczenia maszynowego w hurtowni danych?
  • Jak wygląda budowanie, trenowanie i uruchamianie modeli predykcyjnych w Snowpark bez eksportu danych poza Snowflake?
  • Jak wykonać batch scoring w Snowflake oraz integrować Snowflake ML z narzędziami takimi jak scikit-learn, XGBoost czy MLflow?

Wprowadzenie do Snowflake i Snowpark

Snowflake to nowoczesna, w pełni zarządzana platforma hurtowni danych działająca w chmurze, która umożliwia skalowalne przechowywanie, przetwarzanie i analizę danych. Dzięki unikalnej architekturze rozdzielającej warstwę przechowywania od warstwy obliczeniowej, Snowflake pozwala na jednoczesny dostęp wielu użytkowników i aplikacji do tych samych danych bez wpływu na wydajność.

Snowpark to rozszerzenie Snowflake, które umożliwia programistom, analitykom danych i inżynierom danych pracę z danymi w językach takich jak Python, Java czy Scala – bez konieczności opuszczania środowiska Snowflake. Pozwala to na tworzenie zaawansowanych transformacji, przetwarzań danych oraz implementację logiki analitycznej bezpośrednio w hurtowni danych.

Jedną z kluczowych zalet Snowparka jest możliwość pisania kodu w znanym języku programowania i jego wykonywania blisko danych, co eliminuje potrzebę ich eksportu do zewnętrznych narzędzi czy środowisk. Oznacza to większe bezpieczeństwo, mniejsze opóźnienia i bardziej efektywne wykorzystanie zasobów chmurowych.

Snowflake i Snowpark wspólnie tworzą środowisko, w którym możliwe staje się:

  • przetwarzanie danych w języku Python bezpośrednio w hurtowni,
  • integracja z zewnętrznymi bibliotekami ML poprzez zdalne kontenery lub wbudowane funkcje,
  • budowanie, trenowanie i uruchamianie modeli predykcyjnych bez potrzeby przenoszenia danych poza Snowflake.

To podejście znacząco upraszcza przepływ pracy związany z analizą danych i uczeniem maszynowym, zapewniając jednocześnie wysoką wydajność i bezpieczeństwo operacji.

Fundamenty Snowflake ML i jego możliwości

Snowflake ML to zestaw narzędzi i funkcji wbudowanych bezpośrednio w platformę Snowflake, który umożliwia budowanie, trenowanie oraz uruchamianie modeli uczenia maszynowego bez konieczności opuszczania środowiska hurtowni danych. Kluczową rolę w tym procesie odgrywa framework Snowpark, który pozwala tworzyć logikę analityczną i modele ML w języku Python bezpośrednio na platformie Snowflake.

Snowflake ML różni się od tradycyjnych podejść do machine learning tym, że eliminuje potrzebę eksportowania danych do zewnętrznych systemów. Zamiast tego, dane, kod i modele znajdują się w jednym miejscu, co zwiększa bezpieczeństwo, zmniejsza opóźnienia i upraszcza zarządzanie przepływem pracy.

Najważniejsze możliwości Snowflake ML obejmują:

  • Trenowanie modeli ML bezpośrednio na danych przechowywanych w Snowflake, z wykorzystaniem bibliotek takich jak scikit-learn czy XGBoost.
  • Tworzenie funkcji użytkownika (UDF) w języku Python do predykcji i transformacji danych w ramach zapytań SQL.
  • Wbudowane funkcje ML do automatycznego przygotowania danych, inżynierii cech czy ewaluacji modeli.
  • Integrację z narzędziami MLOps, co pozwala na ciągłą integrację i wdrażanie modeli w środowiskach produkcyjnych.
  • Bezpośrednie wykonywanie batch scoringu, czyli przetwarzania dużych zbiorów danych predykcyjnych bez potrzeby ich przenoszenia.

Dzięki tym możliwościom Snowflake ML umożliwia analitykom i inżynierom danych pracę nad pełnym cyklem życia modelu ML – od przygotowania danych po wdrożenie – z poziomu jednej, skalowalnej platformy. Przykładowo, możemy trenować model klasyfikacyjny bezpośrednio na danych klientów i natychmiast wykorzystać go w zapytaniach SQL do prognozowania zachowań użytkowników.

Budowanie modeli predykcyjnych w Snowpark

Snowpark to potężna warstwa programistyczna platformy Snowflake, która umożliwia tworzenie transformacji danych, eksploracji oraz modeli uczenia maszynowego bez opuszczania środowiska hurtowni danych. Dzięki wsparciu dla języków takich jak Python, Java i Scala, Snowpark pozwala analitykom i inżynierom danych pracować w sposób zbliżony do tradycyjnych środowisk ML, lecz bez konieczności przenoszenia danych poza Snowflake.

Główna różnica między klasycznym podejściem ML a pracą w Snowpark polega na tym, że cały proces – od przygotowania danych, przez trenowanie modeli, aż po scoring – może odbywać się bez eksportu danych z hurtowni. To znacznie zwiększa bezpieczeństwo, skraca czas operacji i eliminuje potrzebę utrzymywania zewnętrznych silników obliczeniowych.

Cecha Tradycyjne podejście ML Snowpark
Środowisko obliczeniowe Poza hurtownią (np. lokalnie lub w chmurze) Bezpośrednio w Snowflake
Przemieszczanie danych Eksport wymagany Brak potrzeby eksportu
Bezpieczeństwo danych Zależne od infrastruktury zewnętrznej Spójne z polityką Snowflake
Języki programowania Python, R, Scala, itp. (zależne od środowiska) Python, Java, Scala (obsługiwane natywnie)

Snowpark Python API udostępnia konstrukcje znane z bibliotek takich jak pandas czy PySpark, co ułatwia migrację kodu i adaptację zespołów. Modele ML mogą być budowane zarówno przy użyciu klasycznych bibliotek (np. scikit-learn, XGBoost), jak i przy pomocy Snowflake ML (Snowpark ML), który oferuje uproszczony interfejs do typowych zadań predykcyjnych.

Poniższy przykład pokazuje uproszczony fragment kodu z wykorzystaniem Snowpark i scikit-learn:

from snowflake.snowpark import Session
from snowflake.snowpark.functions import col
from sklearn.linear_model import LogisticRegression

session = Session.builder.configs({...}).create()
df = session.table("klienci").select("wiek", "dochód", "czy_kupuje")

# Pobranie danych do Pandas
pdf = df.to_pandas()

# Trenowanie modelu lokalnie na danych z hurtowni
model = LogisticRegression()
model.fit(pdf[["wiek", "dochód"]], pdf["czy_kupuje"])

W tym przykładzie część obliczeń nadal odbywa się lokalnie, ale dane pozostają w Snowflake aż do ich przekształcenia i pobrania. Alternatywnie, dzięki Snowpark ML, możliwe jest przeprowadzenie całego procesu trenowania i scoringu wewnątrz Snowflake – bez opuszczania jego środowiska.

Budowanie modeli predykcyjnych w Snowpark nie tylko upraszcza architekturę systemu analitycznego, ale także sprzyja efektywnej współpracy między zespołami danych i inżynierii. Zintegrowane podejście pozwala skrócić czas od eksploracji danych do wdrożenia modelu produkcyjnego, eliminując tradycyjne wąskie gardła między etapami. Jeśli chcesz pogłębić swoją wiedzę z zakresu modelowania, optymalizacji i analizy danych w Pythonie, zapoznaj się z Kursem Machine Learning i Deep Learning w języku Python – modelowanie, optymalizacja, analiza danych.

💡 Pro tip: Unikaj to_pandas przy dużych zbiorach — trenuj i oceniaj modele bezpośrednio w Snowflake za pomocą Snowpark ML, aby wykorzystać skalowanie i poprawić bezpieczeństwo. Standaryzuj inżynierię cech w widokach/CTE i wersjonuj modele poprzez konsekwentne nazewnictwo UDF oraz tagi.

Batch scoring bezpośrednio w hurtowni danych

W tradycyjnych procesach uczenia maszynowego scoring – czyli etap stosowania wytrenowanego modelu do nowych danych – często wiąże się z koniecznością eksportu danych z hurtowni, przetwarzania ich w oddzielnym środowisku i ponownego ładowania wyników. Snowflake ML oraz Snowpark umożliwiają wykonanie batch scoringu bez opuszczania hurtowni danych, co upraszcza architekturę i zwiększa bezpieczeństwo oraz wydajność procesów analitycznych.

Batch scoring w Snowflake oznacza zastosowanie modelu ML (wytrenowanego lokalnie lub bezpośrednio w Snowflake) do dużych zbiorów danych przechowywanych w tabelach. Dzięki temu możliwe jest skalowalne i wydajne przetwarzanie predykcji bez potrzeby przenoszenia danych poza platformę.

Dlaczego batch scoring w Snowflake?

  • Bezpieczeństwo: dane nie opuszczają hurtowni, co zmniejsza ryzyko naruszenia polityk prywatności i bezpieczeństwa.
  • Szybkość wdrożeń: modele mogą być wykorzystywane bez potrzeby przenoszenia danych między narzędziami i środowiskami.
  • Skalowalność: Snowflake automatycznie skaluje zasoby potrzebne do masowego scoringu dużych zbiorów danych.
  • Jednolitość środowiska: cały pipeline – od przygotowania danych po scoring – znajduje się w jednym miejscu.

Przykładowy kod batch scoringu z użyciem Snowpark

from snowflake.snowpark import Session
from snowflake.snowpark.functions import call_udf

# Inicjalizacja sesji
session = Session.builder.configs(connection_parameters).create()

# Załaduj dane do predykcji z tabeli
df_input = session.table("CUSTOMER_FEATURES")

# Zastosuj model ML jako UDF
scored_df = df_input.with_column("PREDICTED_LABEL", call_udf("predict_churn", df_input["FEATURE_VECTOR"]))

# Zapisz wyniki do nowej tabeli
scored_df.write.save_as_table("CHURN_PREDICTIONS")

W powyższym przykładzie, model ML został zaimplementowany jako User-Defined Function (UDF), co pozwala na jego bezpośrednie wykorzystanie w Snowpark DataFrame. Takie podejście umożliwia stosowanie modeli do milionów rekordów z poziomu SQL lub Pythona bez opuszczania platformy.

Porównanie: Batch scoring tradycyjny vs w Snowflake

Aspekt Tradycyjny batch scoring Snowflake batch scoring
Transfer danych Wymagany eksport/import Brak transferu, dane lokalnie
Bezpieczeństwo Potencjalne ryzyko przy transmisji Pełna kontrola w hurtowni
Wydajność Ograniczona przez zewnętrzne środowisko Automatyczne skalowanie Snowflake
Złożoność infrastruktury Wymaga synchronizacji wielu komponentów Centralizacja w jednej platformie

Batch scoring w Snowflake z użyciem Snowpark i Snowflake ML to krok w stronę nowoczesnej analityki – uproszczonej, zintegrowanej i bezpiecznej. W kolejnych etapach można rozszerzyć to podejście o bardziej zaawansowane modele, harmonogramowanie scoringu oraz integracje z narzędziami MLOps.

💡 Pro tip: Pakuj cechy do kolumny VARIANT lub ARRAY i ładuj model z internal stage w UDF, buforując go w pamięci funkcji, by ograniczyć koszt inicjalizacji przy milionach wierszy. Uruchamiaj batch scoring jako Snowflake Task z dobranym rozmiarem warehouse oraz auto-suspend/auto-resume, aby kontrolować koszty.

Integracja z popularnymi narzędziami Machine Learning

Snowflake ML i Snowpark udostępniają elastyczne możliwości współpracy z najczęściej wykorzystywanymi narzędziami i bibliotekami w świecie uczenia maszynowego, takimi jak scikit-learn, XGBoost, TensorFlow, PyTorch czy MLflow. Dzięki temu możliwe jest budowanie i uruchamianie modeli predykcyjnych bez konieczności opuszczania hurtowni danych, a jednocześnie bez rezygnowania z dobrze znanych frameworków.

Podstawowa różnica w podejściu polega na tym, że zamiast eksportować dane z hurtowni do zewnętrznych środowisk obliczeniowych, kod ML może być uruchamiany bezpośrednio w Snowflake przy użyciu Snowpark i kontenerów Anaconda. Pozwala to skrócić ścieżkę wdrażania modeli i ograniczyć ryzyko związane z przesyłaniem danych.

Narzędzie Typowa integracja ze Snowflake ML Zastosowanie
scikit-learn Bezpośrednie trenowanie i predykcja w Snowpark (via UDF lub procedury) Modele klasyfikacyjne i regresyjne, szybkie prototypowanie
XGBoost Integracja przez Snowpark-ML lub własne UDF Modele o wysokiej dokładności, klasyfikacja, regresja
TensorFlow / PyTorch Trenowanie poza Snowflake, scoring w Snowpark Modele głębokiego uczenia, sieci neuronowe
MLflow Śledzenie eksperymentów i rejestr modeli, integracja z Snowflake jako źródłem danych Zarządzanie cyklem życia modelu

Dzięki środowisku Snowpark for Python, możliwe jest wykonywanie kodu Pythona z wykorzystaniem bibliotek ML bezpośrednio w Snowflake. Poniższy przykład ilustruje użycie prostego modelu z scikit-learn wewnątrz procedury Snowpark:

from snowflake.snowpark import Session
from snowflake.snowpark.functions import col
from sklearn.linear_model import LogisticRegression

# Załadowanie danych do DataFrame
session = Session.builder.configs(<...>).create()
df = session.table("CUSTOMER_DATA")

# Konwersja do Pandas i trenowanie modelu
pdf = df.to_pandas()
model = LogisticRegression().fit(pdf[["age", "income"]], pdf["response"])

W praktyce, modele mogą być również rejestrowane i uruchamiane jako UDF (User-Defined Functions) lub procedury składowane, co umożliwia ich korzystanie w zapytaniach SQL, harmonogramach zadań i pipeline'ach danych. Takie podejście zapewnia pełną integrację procesu uczenia maszynowego z platformą hurtowni danych. Jeśli chcesz lepiej zrozumieć, jak efektywnie wykorzystywać te narzędzia w codziennej pracy programisty, zapoznaj się z naszym Kursem Machine Learning dla programistów.

Zalety pracy w środowisku Snowflake bez eksportu danych

Tradycyjne podejście do budowania modeli predykcyjnych zakłada często eksport danych z hurtowni do zewnętrznych narzędzi analitycznych lub środowisk programistycznych, takich jak Jupyter Notebook czy środowiska chmurowe. W przypadku dużych zbiorów danych ta strategia wiąże się jednak z poważnymi wyzwaniami: wzrostem kosztów, ryzykiem naruszenia bezpieczeństwa i opóźnieniami wynikającymi z przenoszenia danych.

Rozwiązaniem tych problemów jest budowanie i uruchamianie modeli bezpośrednio w środowisku hurtowni danych — w tym przypadku, w ekosystemie Snowflake, z wykorzystaniem Snowpark i Snowflake ML. Dzięki temu podejściu możliwe jest tworzenie kompletnych pipeline’ów analitycznych i predykcyjnych bez konieczności opuszczania platformy.

Najważniejsze korzyści

  • Bezpieczeństwo i zgodność z regulacjami: dane pozostają w jednym miejscu, co eliminuje ryzyko ich nieautoryzowanego ujawnienia.
  • Oszczędność czasu i kosztów: brak potrzeby przenoszenia dużych zbiorów danych między systemami to mniej operacji I/O i niższe koszty transferów.
  • Jedno źródło prawdy: zachowanie danych w hurtowni pozwala uniknąć niespójności wynikających z kopiowania lub synchronizacji danych do zewnętrznych narzędzi.
  • Skalowalność: wykorzystanie skalowalnej architektury Snowflake pozwala na trenowanie i inferencję na dużych zbiorach danych bez potrzeby replikacji środowiska lokalnie.
  • Zintegrowane środowisko programistyczne: dzięki Snowpark, programiści mogą pisać kod w Pythonie z poziomu notebooka lub IDE, ale wykonywać go bezpośrednio w Snowflake.

Snowflake lokalnie vs. klasyczne podejście

Klasyczne podejście Modelowanie w Snowflake
Przenoszenie danych Wymagane Brak konieczności
Zarządzanie bezpieczeństwem Złożone Centralnie w Snowflake
Wydajność Ograniczona przez sieć i lokalne zasoby W pełni skalowalna chmura
Aktualność danych Zależna od synchronizacji Zawsze aktualne
Złożoność infrastruktury Wymaga integracji wielu komponentów Jednolite środowisko Snowflake

Przykład: szybkie scoringowanie modelu bez opuszczania hurtowni


from snowflake.snowpark.session import Session
from snowflake.ml.modeling.xgboost import XGBClassifier

session = Session.builder.configs(connection_parameters).create()
df = session.table("CUSTOMERS")

model = XGBClassifier()
model.fit(df["features"], df["label"])
predictions = model.predict(df["features"])

Powyższy kod ilustruje, jak można trenować i stosować model predykcyjny bezpośrednio na tabeli w Snowflake, bez pobierania danych lokalnie. To nie tylko bezpieczne, ale też efektywne kosztowo i logistycznie.

Przykładowy przepływ pracy z wykorzystaniem Snowpark i Snowflake ML

Snowflake ML w połączeniu z biblioteką Snowpark dla Pythona umożliwia tworzenie i wdrażanie modeli uczenia maszynowego bez konieczności opuszczania środowiska hurtowni danych. Dzięki temu możliwe jest nie tylko uproszczenie całego procesu, ale również znaczne zwiększenie bezpieczeństwa i efektywności operacji na danych.

Typowy przepływ pracy obejmuje kilka kluczowych kroków:

  • Przygotowanie danych: Dane znajdujące się w tabelach Snowflake są przetwarzane i przygotowywane do analizy z wykorzystaniem Snowpark DataFrame, co eliminuje potrzebę ich pobierania na zewnątrz.
  • Eksploracja i inżynieria cech: Użytkownik może korzystać z Pythona, by analizować dane w miejscu, tworzyć nowe zmienne, filtrować i agregować dane bez opuszczania hurtowni danych.
  • Trenowanie modelu: Snowflake ML pozwala tworzyć i trenować modele bezpośrednio w środowisku Snowflake, wykorzystując standardowe konstrukcje języka Python oraz wsparcie dla znanych frameworków.
  • Weryfikacja i ocena: Modele mogą być oceniane w tym samym środowisku, z dostępem do aktualnych danych i metryk jakości predykcji.
  • Wdrażanie i scoring: Gotowy model może być zapisany i wykorzystany do predykcji na danych produkcyjnych bez konieczności ich eksportowania — scoring odbywa się bezpośrednio w hurtowni danych.

Cały proces odbywa się z poziomu Pythona, przy użyciu interfejsu Snowpark, co pozwala analitykom i data scientistom zachować komfort pracy w znanym języku programowania, jednocześnie korzystając z wydajności i skalowalności Snowflake.

Przykładowy przepływ może rozpocząć się od utworzenia DataFrame’u na podstawie danych hurtowni:

session.table("CUSTOMER_TRANSACTIONS")

Następnie można przeprowadzić inżynierię cech, trening modelu i scoring, nie opuszczając platformy. Pozwala to uprościć architekturę rozwiązań ML oraz skrócić czas wdrożenia modelu na produkcję.

💡 Pro tip: Utrzymuj jeden spójny pipeline (przygotowanie cech → trening → walidacja → scoring) w Snowpark, a środowiska DEV/UAT/PROD rozdzielaj i testuj dzięki zero-copy cloning. Parametryzuj zasoby i wersje artefaktów w centralnym pliku konfiguracyjnym, co ułatwia przenoszenie i automatyzację wdrożeń.

Podsumowanie i rekomendacje

Wykorzystanie Snowflake jako platformy do tworzenia i wdrażania modeli predykcyjnych otwiera nowe możliwości dla zespołów analitycznych i data science. Dzięki integracji z biblioteką Snowpark oraz wprowadzeniu Snowflake ML możliwe staje się budowanie kompletnych pipeline’ów uczenia maszynowego bez konieczności opuszczania środowiska hurtowni danych.

Tradycyjnie proces tworzenia modeli ML wymagał ekstrakcji danych do zewnętrznych środowisk – co było kosztowne, czasochłonne i niosło ryzyko naruszenia bezpieczeństwa. Snowflake eliminuje te bariery, umożliwiając wykorzystanie języka Python bezpośrednio w środowisku hurtowni oraz operacje na danych bez kopiowania ich poza platformę.

Kluczowe zalety tego podejścia to:

  • Bezpieczeństwo i zgodność – dane pozostają w hurtowni, co minimalizuje ryzyka związane z ich przesyłaniem i duplikacją.
  • Skalowalność – obliczenia wykonywane są na tej samej infrastrukturze co zapytania SQL, dzięki czemu można łatwo skalować modele dla dużych zbiorów danych.
  • Elastyczność – dzięki wsparciu dla Pythona i integracji z narzędziami uczenia maszynowego, Snowflake ML pozwala na wdrażanie modeli zarówno klasycznych, jak i opartych o nowoczesne algorytmy.

Rekomendujemy rozważenie tego podejścia szczególnie w organizacjach, które chcą przyspieszyć proces wdrażania modeli predykcyjnych, uprościć zarządzanie danymi oraz wykorzystać istniejące kompetencje zespołów analitycznych bez konieczności migracji danych poza hurtownię.

icon

Formularz kontaktowyContact form

Imię *Name
NazwiskoSurname
Adres e-mail *E-mail address
Telefon *Phone number
UwagiComments