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
Copy
python -m pip install pyarrow
Copy

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

  1. 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
    
    Copy
  2. Aktivieren Sie die Conda-Umgebung:

    conda activate snowpark-ml
    
    Copy
  3. Installieren Sie Snowpark ML aus dem Snowflake-Conda-Kanal:

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

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.

  1. Wechseln Sie in Ihr Projektverzeichnis, und aktivieren Sie Ihre virtuelle Python-Umgebung:

    cd ~/projects/ml
    source .venv/bin/activate
    
    Copy
  2. Installieren Sie das Snowpark ML-Paket:

    python -m pip install snowflake-ml-python
    
    Copy

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
Copy

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]'
Copy

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]'
Copy

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)
Copy

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()
Copy

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()
Copy

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

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)
Copy