Snowpark ML Data Connector

Das DataConnector-Modul bietet eine einheitliche Schnittstelle zum Lesen von Snowflake-Daten und zur Konvertierung in Formate, die mit gängigen Machine Learning-Frameworks wie PyTorch und TensorFlow kompatibel sind.

DataConnector verwendet automatisch eine optimierte Datenaufnahme, wenn es im Container Runtime für ML läuft.

Bemerkung

Dieses Thema setzt voraus, dass das Snowpark ML-Modul installiert ist. Wenn dies nicht der Fall ist, finden Sie weitere Informationen unter Lokale Verwendung von Snowflake ML.

Erstellen einer DataConnector

Sie können eine DataConnector-Instanz auf verschiedene Weise erstellen:

from snowflake.ml import dataset
from snowflake.ml.data import DataConnector

# Create a DataConnector from a SQL query
connector = DataConnector.from_sql("SELECT * FROM my_table", session=session)

# Create a DataConnector from a Snowpark DataFrame
df = session.table(my_table)
connector = DataConnector.from_dataframe(df)

# Create a DataConnector from a Snowflake Dataset
ds = dataset.load_dataset(session, "my_dataset", "v1")
connector = DataConnector.from_dataset(ds)
Copy

Verwenden mit PyTorch

Für die Verwendung mit PyTorch verwenden Sie to_torch_dataset(), um ein IterableDataset zu erhalten, das dann an ein PyTorch DataLoader übergeben werden kann. Der DataLoader iteriert über die -Daten und liefert PyTorch-Tensoren in Batches. Das Laden von Daten erfolgt in einem Streaming-Verfahren für maximale Effizienz.

from torch.utils.data import DataLoader

torch_ds = connector.to_torch_dataset(
    batch_size=4,
    shuffle=True,
    drop_last_batch=True
)

for batch in DataLoader(torch_ds, batch_size=None, num_workers=0):
    print(batch)
Copy

Verwenden mit TensorFlow

Verwenden Sie für die Verwendung mit TensorFlow to_tf_dataset()-Methode, um einen Tensorflow-Datensatz zu erhalten: Durch Iterieren über den Datensatz erhalten Sie TensorFlow in Batches. Das Laden von Daten erfolgt in einem Streaming-Verfahren für maximale Effizienz.

tf_ds = connector.to_tf_dataset(
    batch_size=4,
    shuffle=True,
    drop_last_batch=True
)

for batch in tf_ds:
    print(batch)
Copy

Optionen für die Datenverarbeitung

Shuffling

Übergeben Sie shuffle=True, um die Daten während der Aufnahme zufällig zu mischen. Dies kann helfen, eine Überanpassung während des Modelltrainings zu verhindern. Eine Diskussion über den Wert des Shufflings finden Sie unter Warum sollten Daten für maschinelles Lernen neu angeordnet werden? (auf Englisch)

Batching

Verwenden Sie den Parameter batch_size, um die Größe der Datenbatches zu steuern. Batching wird effizient auf der Datenaufnahmeebene durchgeführt. Wenn Sie PyTorch DataLoaders verwenden, müssen Sie bei der Instanziierung von DataLoader explizit batch_size=None übergeben, um eine doppelte Batchverarbeitung zu vermeiden. Ein Beispiel zur Verwendung mit DataLoader finden Sie unter Verwenden mit PyTorch

Sie können den letzten Batch auch löschen, wenn dieser unvollständig ist, indem Sie drop_last_batch=True an to_torch_datapipe oder to_tf_dataset übergeben.