Snowpark ML: Machine Learning-Toolkit für Snowflake¶
Bemerkung
Die Snowpark ML-Bibliothek ist ab Paketversion 1.1.1 allgemein verfügbar. Einige Features, die sich noch in der Entwicklung befinden, sind als Vorschau-Features gekennzeichnet. Für einen frühzeitigen Zugriff auf die Dokumentation der kommenden Snowpark ML-Features wenden Sie sich an Ihren Snowflake-Ansprechpartner.
Snowpark ML ist ein Satz von Tools, einschließlich SDKs und der zugrunde liegenden Infrastruktur, für das Erstellen und den Einsatz von Modellen des maschinellen Lernens. Mit Snowpark ML können Sie Daten vorverarbeiten sowie ML-Modelle trainieren, verwalten und bereitstellen – alles in Snowflake. Sie profitieren in jeder Phase des Machine Learning-Workflows von der bewährten Leistung, Skalierbarkeit, Stabilität und Governance von Snowflake.
Snowpark ML nutzt Snowpark Python, sodass Sie Snowpark-DataFrames verwenden können, um Ihre Trainings- oder Testdaten zu speichern und Vorhersageergebnisse zu erhalten.
Sie können Snowpark ML verwenden, wenn Sie Snowpark Python-Clientanwendungen in einer beliebigen kompatiblen IDE schreiben.
Die Hauptkomponenten von Snowpark ML¶
Snowpark ML bietet APIs zur Unterstützung jeder Phase eines durchgängigen Entwicklungs- und Bereitstellungsprozesses für maschinelles Lernen und umfasst zwei Hauptkomponenten: Snowpark ML Development und Snowpark ML Ops.
Snowpark ML Development¶
Snowpark ML Development enthält eine Sammlung von Python-APIs, die Sie zur effizienten Entwicklung von Modellen in Snowflake verwenden können.
Das Modellierungspaket (
snowflake.ml.modeling
) stellt APIs für Datenvorverarbeitung, Feature-Engineering und Modelltraining bereit. Das Paket enthält auch ein Vorverarbeitungsmodul mit APIs, die von einem Snowpark-optimierte Warehouses bereitgestellten Computeressourcen nutzen, um skalierbare Datentransformationen zu ermöglichen. Diese APIs basieren auf bekannten ML-Bibliotheken wie scikit-learn, xgboost und lightgbm.Ein Satz von Framework-Konnektoren ermöglicht eine optimierte, sichere und leistungsfähige Datenbereitstellung für Pytorch- und Tensorflow-Frameworks in deren nativen Datenladeformaten.
Snowpark ML Ops¶
Snowpark ML Ops ergänzt die Snowpark ML Development-API durch Bereitstellung von Möglichkeiten zur Modellverwaltung und zur integrierten Bereitstellung in Snowflake.
Die FileSet-API bietet eine Python fsspec-konforme API für die Materialisierung von Daten in einem Snowflake-internen Stagingbereich über eine Abfrage oder aus einem Snowpark-DataFrame. Außerdem bietet sie eine Reihe von praktischen Methoden für die Verarbeitung dieser Daten und deren Bereitstellung für PyTorch oder TensorFlow.
Die Modell-Registry ist eine Python-API für die Verwaltung von Modellen in Snowflake und deren Bereitstellung in Snowflake-Warehouses als vektorisierte benutzerdefinierte Funktionen (UDFs). Für einen frühzeitigen Zugriff auf die Dokumentation der Modellregistrierung wenden Sie sich an Ihren Snowflake-Ansprechpartner.
Installieren von Snowpark ML¶
Wichtig
Jüngste Änderungen an der Snowpark-Konnektor für Python-Bibliothek haben die Abhängigkeit von PyArrow aufgehoben. Snowpark ML erfordert PyArrow, ist vor Snowpark ML 1.1.2 aber nicht explizit von diesem abhängig. Wenn Sie Snowpark ML installiert oder den Snowpark-Konnektor für Python erst kürzlich aktualisiert haben, müssen Sie PyArrow möglicherweise manuell installieren. Verwenden Sie dazu einen der folgenden Befehle, je nachdem, ob Sie in Ihrem Projekt conda oder pip verwenden.
conda install pyarrow
python -m pip install pyarrow
Sämtliche Features von Snowpark ML sind im Paket snowflake-ml-python
verfügbar.
Sie können Snowpark ML mit dem Befehl conda
aus dem Snowflake-Conda-Kanal oder mit pip
aus Python Package Index (PyPI) installieren. Conda wird bevorzugt.
Installation von Snowpark ML aus dem Snowflake-Conda-Kanal¶
Erstellen Sie die Conda-Umgebung, in der Sie Snowpark ML installieren werden: Wenn Sie es vorziehen, eine bestehende Umgebung zu verwenden, überspringen Sie diesen Schritt.
conda create --name snowpark-ml
Aktivieren Sie die Conda-Umgebung:
conda activate snowpark-ml
Installieren Sie Snowpark ML aus dem Snowflake-Conda-Kanal:
conda install --override-channels --channel https://repo.anaconda.com/pkgs/snowflake/ snowflake-ml-python
Tipp
Wenn Sie mit Snowpark ML arbeiten, installieren Sie nach Möglichkeit Pakete aus dem Snowflake-Repository, um sicherzustellen, dass Sie Pakete erhalten, die mit Snowpark ML validiert wurden.
Installieren von Snowpark ML über PyPI¶
Sie können das Snowpark ML-Paket über Python Package Index (PyPI) mithilfe des Standard-Python-Paketmanagers pip
installieren.
Warnung
Verwenden Sie dieses Installationsverfahren nicht, wenn Sie eine Conda-Umgebung verwenden. Verwenden Sie stattdessen die Conda-Anleitung.
Wechseln Sie in Ihr Projektverzeichnis, und aktivieren Sie Ihre virtuelle Python-Umgebung:
cd ~/projects/ml source .venv/bin/activate
Installieren Sie das Snowpark ML-Paket:
python -m pip install snowflake-ml-python
Installieren von optionalen Modellierungsabhängigkeiten¶
Einige Snowpark ML Modeling-APIs erfordern Abhängigkeiten, die nicht als Abhängigkeiten von Snowpark ML installiert sind. Die Pakete scikit-learn und xgboost werden standardmäßig bei der Installation von Snowpark ML Modeling mitinstalliert, wohingegen lightgbm eine optionale Abhängigkeit ist. Wenn Sie Klassen im snowflake.ml.modeling.lightgbm
-Namespace verwenden möchten, müssen Sie lightgbm selbst installieren.
Verwenden Sie die folgenden Befehle, um Ihre conda-Umgebung zu aktivieren und lightgbm aus dem Snowflake-Conda-Kanal zu installieren.
conda activate snowpark-ml
conda install --override-channels --channel https://repo.anaconda.com/pkgs/snowflake/ lightgbm
Verwenden Sie die folgenden Befehle, um Ihre virtuelle Umgebung zu aktivieren und lightgbm mit pip zu installieren.
.venv/bin/activate
python -m pip install 'snowflake-ml-python[lightgbm]'
Snowflake kann von Zeit zu Zeit zusätzliche optionale Abhängigkeiten zu Snowpark ML hinzufügen. So installieren Sie alle optionalen Abhängigkeiten mit pip:
.venv/bin/activate
python -m pip install 'snowflake-ml-python[all]'
Einrichten von Snowpark Python¶
Snowpark Python ist eine Abhängigkeit von Snowpark ML und wird automatisch installiert, wenn Sie Snowpark ML installieren. Wenn Snowpark Python nicht auf Ihrem System eingerichtet ist, müssen Sie möglicherweise zusätzliche Konfigurationsschritte ausführen. Unter Einrichten Ihrer Entwicklungsumgebung für Snowpark Python finden Sie eine Anleitung zum Einrichten von Snowpark Python.
Authentifizierung mit Snowflake¶
Einige Teile von Snowpark ML erfordern, dass Sie sich mit Snowflake authentifizieren. Sie können dies entweder mit einem Snowflake-Konnektor für Python-Connection
-Objekt oder einem Snowpark Python-Session
-Objekt tun. Beide Methoden sind gleichwertig. Verwenden Sie diejenige, die für Ihre Anwendung am besten geeignet ist.
Verwenden Sie die Funktion SnowflakeLoginOptions
im Modul snowflake.ml.utils.connection_params
, um die Konfigurationseinstellungen für das Erstellen der Verbindung oder Sitzung abzurufen. Die Funktion kann die Parameter für die Verbindung aus einer benannten Verbindung in Ihrer SnowSQL-Konfigurationsdatei oder aus von Ihnen festgelegten Umgebungsvariablen lesen. Sie gibt ein Wörterbuch mit diesen Parametern zurück, das zum Erstellen einer Verbindung oder einer Sitzung verwendet werden kann. In den folgenden Beispielen werden die Verbindungsparameter aus der benannten Verbindung myaccount
in der SnowSQL-Konfigurationsdatei gelesen.
Um eine Verbindung über den Snowflake Konnektor für Python zu erstellen, übergeben Sie die von connection_params
zurückgegebenen Konfigurationsinformationen an snowflake.connector.connect
:
from snowflake import connector
from snowflake.ml.utils import connection_params
params = connection_params.SnowflakeLoginOptions("myaccount")
sf_connection = connector.connect(**params)
Um eine Snowpark Python-Sitzung zu erstellen, erstellen Sie einen Builder für die Session
-Klasse und übergeben die Verbindungsinformationen an die configs
-Methode des Builders:
from snowflake.snowpark import Session
from snowflake.ml.utils import connection_params
params = connection_params.SnowflakeLoginOptions("myaccount")
sp_session = Session.builder.configs(params).create()
Sie können nun die Verbindung oder Sitzung an jede Funktion von Snowpark ML weitergeben, die diese benötigt.
Tipp
Um eine Snowpark Python-Sitzung aus einer bestehenden Verbindung des Snowflake-Konnektors für Python zu erstellen, übergeben Sie das Verbindungsobjekt an den Session-Builder.
session = Session.builder.configs({"connection": connection}).create()
Hinweise zu Kosten¶
Wenn Sie Modelle in Snowflake trainieren und verwenden, führen Sie den Code in einem virtuellen Warehouse aus, wodurch Computekosten anfallen. Diese Kosten variieren je nach Typ des Modells und der Menge der für das Training und die Vorhersage verwendeten Daten.
Allgemeine Informationen zu Snowflake-Computekosten finden Sie unter Erläuterungen zu den Computekosten.
Weiterführende Informationen¶
In den folgenden Ressourcen finden Sie Informationen zu Snowpark ML Modeling und Snowpark ML Ops.
Modellierung
Der Ordner „Examples“ im Snowpark ML Google Drive enthält Jupyter-Notebooks mit Informationen zu den Snowpark ML-Features.
Ops
Wenden Sie sich an Ihren Snowflake-Vertreter, um frühzeitigen Zugang zur Dokumentation der kommenden Features zu erhalten.
API-Referenz¶
Die Snowpark ML API-Referenz enthält die Dokumentation zu allen öffentlich freigegebenen Funktionen. Sie können auch eine ausführliche API-Dokumentation für jede Klasse erhalten. Nutzen Sie dazu die Python-Funktion help
in einer interaktiven Python-Sitzung. Beispiel:
from snowflake.ml.modeling.preprocessing import OneHotEncoder
help(OneHotEncoder)