Snowpark ML: Umfassendes maschinelles Lernen in Snowflake

Bemerkung

Die Snowpark ML Modeling-API ist ab Paketversion 1.1.1 allgemein verfügbar, und die Snowpark Model Registry ist ab Paketversion 1.2.0 als Vorschau verfügbar. Für einen frühzeitigen Zugriff auf die Dokumentation der kommenden Snowpark ML-Features wenden Sie sich an Ihren Snowflake-Ansprechpartner.

Snowpark ML ist die Python-Bibliothek und die zugrundeliegende Infrastruktur für durchgängige ML-Workflows in Snowflake, einschließlich Komponenten für die Modellentwicklung und Modelloperationen. Mit Snowpark ML können Sie vertraute Python-Frameworks für Vorverarbeitung, Feature-Engineering und Training verwenden. Sie können Modelle vollständig in Snowflake bereitstellen und verwalten, ohne dass Datenbewegungen, Silos oder Governance-Kompromisse erforderlich sind.

Tipp

Ein Beispiel für einen durchgängigen Workflow in Snowpark ML finden Sie unter Einführung in maschinelles Lernen mit Snowpark ML.

Die Hauptkomponenten von Snowpark ML

Snowpark ML bietet APIs, um jede Phase eines durchgängigen Prozesses zur Entwicklung und Verwaltung von maschinellem Lernen zu unterstützen und umfasst die folgenden Kernfunktionen:

In Snowpark ML wird Ihren Modellen auch der Zugriff auf Daten ermöglicht.

Snowpark ML Modeling

Snowpark ML Modeling unterstützt die Datenvorverarbeitung, das Feature-Engineering und das Modelltraining in Snowflake mit gängigen Frameworks für maschinelles Lernen wie scikit-learn, xgboost und lightgbm. Diese API umfasst auch ein Vorverarbeitungsmodul, das die von einem Snowpark-optimierten Warehouse bereitgestellten Computeressourcen nutzen kann, um skalierbare Datentransformationen durchzuführen.

Snowpark ML-Operationen

Snowpark ML-Operationen (MLOps) mit der Snowpark ML Model Registry ergänzen die Snowpark ML Development-API. Die Modell-Registry ermöglicht die sichere Bereitstellung und Verwaltung von Modellen in Snowflake und unterstützt Modelle, die sowohl innerhalb als auch außerhalb von Snowflake trainiert wurden.

Snowpark ML Data Access

Snowpark ML Data Access bietet einfache und leistungsfähige Möglichkeiten, Daten in Ihre Machine-Learning-Modelle einzuspeisen.

  • 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 praktische Methoden für die Verarbeitung dieser Daten und deren Bereitstellung für PyTorch oder TensorFlow.

  • Ein Satz von Framework-Konnektoren ermöglicht eine optimierte, sichere und leistungsfähige Datenbereitstellung für Pytorch- und Tensorflow-Frameworks in deren nativen Datenladeformaten.

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 eine frühere Version verwenden und den Snowpark-Konnektor für Python 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

Warnung

Die Installation von Snowpark ML aus conda auf einem arm-basierten Mac (mit M1- oder M2-Chip) erfordert beim Erstellen der conda-Umgebung die Angabe der Systemarchitektur. Dies geschieht durch Einstellen von CONDA_SUBDIR=osx-arm64 im conda create-Befehl: CONDA_SUBDIR=osx-arm64 conda create --name snowpark-ml.

  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-conda-Kanal, 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.

Verbinden mit Snowflake

Snowpark ML erfordert, dass Sie eine Verbindung zu Snowflake über ein Snowpark-Session-Objekt herstellen. Verwenden Sie die Funktion SnowflakeLoginOptions im Modul snowflake.ml.utils.connection_params, um die Konfigurationseinstellungen für das Erstellen der Sitzung abzurufen. Die Funktion kann die Verbindungseinstellungen aus einer benannten Verbindung in Ihrer SnowSQL-Konfigurationsdatei oder aus von Ihnen festgelegten Umgebungsvariablen lesen. Die Funktion gibt ein Dictionary mit diesen Parametern zurück, das zum Erstellen einer Verbindung verwendet werden kann.

In den folgenden Beispielen werden die Verbindungsparameter aus der benannten Verbindung myaccount in der SnowSQL-Konfigurationsdatei gelesen. 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 Sitzung an jede Snowpark ML-Funktion übergeben, 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. Hier ist connection die Verbindung mit dem Snowflake-Konnektor für Python.

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

Angeben eines Warehouses

Viele Teile von Snowpark ML, z. B. das Trainieren eines Modells oder das Ausführen von Inferenzen, führen Code in einem Snowflake-Warehouse aus. Diese Operationen werden in dem Warehouse ausgeführt, das von der Sitzung vorgegeben wird, die Sie für die Verbindung verwenden. Wenn Sie beispielsweise eine Sitzung aus einer benannten Verbindung Ihrer SnowSQL-Konfigurationsdatei erstellen, können Sie ein Warehouse mit dem Parameter warehousename in der benannten Konfiguration angeben.

Sie können die Warehouse-Einstellung beim Erstellen des Session-Objekts hinzufügen, wie hier gezeigt, wenn es noch nicht in der Konfiguration vorhanden ist.

from snowflake.snowpark import Session
from snowflake.ml.utils import connection_params
# Get named connection from SnowQSL configuration file
params = connection_params.SnowflakeLoginOptions("myaccount")
# Add warehouse name for model method calls if it's not already present
if "warehouse" not in params:
    params["warehouse"] = "mlwarehouse"
sp_session = Session.builder.configs(params).create()
Copy

Wenn in der Sitzung kein Warehouse angegeben ist oder wenn Sie ein anderes Warehouse verwenden möchten, rufen Sie die Methode use_warehouse der Sitzung auf.

sp_session.use_warehouse("mlwarehouse")
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.

Umfassende ML-Workflows

Modellierung

Datenzugriff

ML-Operationen

Wenden Sie sich an Ihren Snowflake-Vertreter, um frühzeitigen Zugang zu den Dokumentationen der weiteren Features zu erhalten, die sich derzeit in der Entwicklung befinden.

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