Python APIs für Snowflake ML¶
Das Python-Paket snowflake-ml-python
stellt Python-APIs bereit, die Verbindungen zu den verschiedenen Workflow-Komponenten von Snowflake-ML herstellen und enthält auch APIs für die Erstellung und das Training Ihrer eigenen Modelle. Sie können diese APIs in Ihrem bevorzugten Python-IDE auf Ihrer eigenen Workstation, in Snowsight Arbeitsblättern oder in Snowflake Notebooks verwenden.
Tipp
Ein Beispiel für einen durchgängigen Workflow zur Verwendung der Bibliothek finden Sie unter Einführung in maschinelles Lernen mit Snowpark ML.
Verwendung von Snowflake ML in Snowflake Notebooks¶
Snowflake Notebooks bietet eine einfach zu bedienende Notebook-Oberfläche für Ihre Datenarbeit, die Python, SQL und Markdown miteinander verbindet. Um die Features von Snowflake ML in Notebooks zu verwenden, wählen Sie das Anaconda Paket snowflake-ml-python
über das Menü Packages am oberen Rand des Notebooks.
Notebooks unterstützen sowohl die Laufzeitoptionen CPU als auch GPU. Für viele Modelle ist es erforderlich oder vorteilhaft, eine GPU zur Verfügung zu haben.
Wichtig
Das snowflake-ml-python
-Paket und seine Abhängigkeiten müssen von der Paketrichtlinie Ihrer Organisation zugelassen sein.
Snowflake ML in Snowsight-Arbeitsblättern verwenden¶
Snowsight Worksheets bietet eine leistungsstarke und vielseitige Methode zur Ausführung von Python-Code. Um die Features von Snowflake ML in Arbeitsblättern zu verwenden, wählen Sie das Paket Anaconda snowflake-ml-python
über das Menü Packages am oberen Rand des Arbeitsblatts.
Wichtig
Das snowflake-ml-python
-Paket und seine Abhängigkeiten müssen von der Paketrichtlinie Ihrer Organisation zugelassen sein.
Lokale Verwendung von Snowflake ML¶
Sie müssen das Paket snowflake-ml-python
installieren, um auf Ihrer eigenen Workstation oder an einem anderen Ort außerhalb von Snowflake zu entwickeln. Sämtliche Features von Snowpark ML sind im Paket snowflake-ml-python
verfügbar. Sie können das Paket aus dem Snowflake-Conda-Channel mit dem Befehl conda
oder aus dem Python Package Index (PyPI) mit pip
installieren. Conda wird bevorzugt.
Installation über den Snowflake-conda-Kanal¶
Wichtig
Die Installation von snowflake-ml-python
aus conda auf einem arm-basierten Mac (mit M1- oder M2-Chip) erfordert beim Erstellen der conda-Umgebung die Angabe der Systemarchitektur. Fügen Sie dazu CONDA_SUBDIR=osx-arm64
in den conda create
-Befehl ein: CONDA_SUBDIR=osx-arm64 conda create --name snowpark-ml
.
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
snowflake-ml-python
aus dem Snowflake-conda-Kanal:conda install --override-channels --channel https://repo.anaconda.com/pkgs/snowflake/ snowflake-ml-python
Tipp
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 PyPI¶
Sie können snowflake-ml-python
aus dem 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
snowflake-ml-python
-Paket:python -m pip install snowflake-ml-python
Installieren von optionalen Modellierungsabhängigkeiten¶
Einige Modeling-APIs erfordern Abhängigkeiten, die nicht als Abhängigkeiten von snowflake-ml-python
installiert sind. Die Pakete scikit-learn und xgboost werden standardmäßig installiert, aber lightgbm ist eine optionale Abhängigkeit. 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 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 snowflake-ml-python
und wird automatisch mit diesem installiert. Wenn Snowpark Python nicht bereits auf Ihrem System eingerichtet ist, müssen Sie möglicherweise zusätzliche Konfigurationsschritte durchführen. Unter Einrichten Ihrer Entwicklungsumgebung für Snowpark Python finden Sie eine Anleitung zum Einrichten von Snowpark Python.
Verbinden mit Snowflake¶
Bevor Sie die Features von Snowflake-ML in Python verwenden, stellen Sie eine Verbindung zu Snowflake über ein Snowpark Session
-Objekt her. 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()
Sie können die Sitzung nun an jeden weitergeben, der sie benötigt.
Tipp
Um eine Snowpark Python-Sitzung aus einer Verbindung des Snowflake Connector 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()
Angeben eines Warehouses¶
Viele Funktionen von Snowflake ML, z. B. das Training von Modellen oder die Inferenz, 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()
Wenn in der Sitzung kein Warehouse angegeben ist oder wenn Sie ein anderes Warehouse verwenden möchten, rufen Sie die use_warehouse
-Methode der Sitzung auf, um ein Warehouse anzugeben.
sp_session.use_warehouse("mlwarehouse")
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 API erhalten, indem Sie die help
-Funktion von Python in einer interaktiven Python-Sitzung verwenden. Beispiel:
from snowflake.ml.modeling.preprocessing import OneHotEncoder
help(OneHotEncoder)