Entwickeln von Features¶
Snowflake ML ermöglicht es Ihnen, Ihre Rohdaten in Features umzuwandeln, was eine effiziente Nutzung durch Machine Learning-Modelle ermöglicht. Sie können Daten mit verschiedenen Ansätzen transformieren, die jeweils für unterschiedliche Umfänge und Anforderungen geeignet sind:
Open Source-Software(OSS)-Präprozessoren – Für kleine bis mittelgroße Datensets und schnelles Prototyping verwenden Sie vertraute Python ML-Bibliotheken, die lokal oder auf einzelnen Knoten innerhalb von Container Runtime ausgeführt werden.
Snowflake ML-Präprozessoren – Für größere Datensets verwenden Sie Vorverarbeitungs-APIs von Snowflake ML, die nativ auf der Snowflake-Plattform ausgeführt werden. Diese APIs verteilen der Verarbeitung auf die Computeressourcen des Warehouses.
Ray map_batches – Für eine hochgradig anpassbare, umfangreiche Verarbeitung, insbesondere mit unstrukturierten Daten, verwenden Sie eine parallele, ressourcenverwaltete Ausführung in Container Runtime-Umgebungen mit einem oder mehreren Knoten.
Wählen Sie den Ansatz, der Ihrem Datenumfang, Ihren Leistungsanforderungen und Ihrem Bedarf an kundenspezifischer Transformationslogik am besten entspricht.
Die folgende Tabelle zeigt einen detaillierten Vergleich der drei Hauptansätze für das Feature-Engineering in Snowflake ML:
Feature/Aspekt |
OSS (einschließlich scikit-learn) |
Snowflake ML-Präprozessoren |
Ray |
|---|---|---|---|
Skalierung |
Kleine und mittelgroße Datensets |
Große/verteilte Daten |
Große/verteilte Daten |
Ausführungsumgebung |
Im Speicher |
Pushdown zu dem Standard-Warehouse, das Sie für die Ausführung von SQL-Abfragen verwenden |
Über mehrere Knoten in einem Computepool hinweg |
Computeressourcen |
Snowpark Container Services (Computepool) |
Warehouse |
Snowpark Container Services (Computepool) |
Integration |
Standardmäßiges Python ML-Ökosystem |
Lässt sich nativ in Snowflake ML integrieren |
Beide mit Python ML und Snowflake |
Verarbeitungsleistung |
Schnell für lokale, speicherinterne Workloads; Skalierung eingeschränkt und nicht verteilt |
Für skalierbares, verteiltes Feature-Engineering entwickelt |
Hochgradig parallel und ressourcenverwaltet, bietet hervorragende Leistung bei umfangreichen/unstrukturierten Daten |
Eignung für Anwendungsfälle |
Schnelles Prototyping und Experimentieren |
Produktions-Workflows mit großen Datensets |
Große Daten-Workflows, die benutzerdefinierte Ressourcenkontrollen erfordern |
Die folgenden Beispiele zeigen, wie Sie Feature-Transformationen mit den einzelnen Ansätzen implementieren können:
Verwenden Sie den folgenden Code, um scikit-learn für Ihre Vorverarbeitungs-Workflows zu implementieren:
Snowflake ML-Präprozessoren verarbeiten verteilte Transformationen direkt in Snowflake. Diese Präprozessoren werden übergeben, um sie über Warehouses hinweg zu skalieren. Verwenden Sie Snowflake ML-Präprozessoren für große Datensets und Produktions-Workloads.
Bemerkung
Die Snowflake ML-Präprozessoren sind eine Teilmenge der in scikit-learn verfügbaren Präprozessoren, decken aber die gängigsten Anwendungsfälle ab. Informationen zu den verfügbaren Präprozessoren finden Sie unter Snowflake ML-Modellierungs-Vorverarbeitung.
Der folgende Code verwendet die StandardScaler- und OneHotEncoder-Bibliotheken.
Verwenden Sie Ray für die verteilte, parallele Verarbeitung mit benutzerdefinierten Transformationen. Ray map_batches verwendet die Ausführung im Lazy-Modus, d. h. die Verarbeitung erfolgt erst, wenn Sie die Datensets materialisieren, wodurch der Verbrauch an Arbeitsspeicher reduziert werden kann. Dieser Ansatz ist ideal für die Verarbeitung großer Datenmengen mit kundenspezifischer Logik: