Laden von Daten mit Mosaic Streaming
In diesem Artikel wird beschrieben, wie Sie Mosaic Streaming verwenden, um Daten aus Apache Spark in ein mit PyTorch kompatibles Format zu konvertieren.
Mosaic Streaming ist eine Open Source-Bibliothek zum Laden von Daten. Sie ermöglicht Trainings mit einem Knoten oder verteilte Trainings sowie die Auswertung von Deep Learning-Modellen über Datasets, die bereits als Apache Spark-DataFrames geladen wurden. Mosaic Streaming unterstützt hauptsächlich Mosaic Composer, lässt sich aber auch in native Instanzen von PyTorch, PyTorch Lightning und TorchDistributor integrieren. Mosaic Streaming bietet eine Reihe von Vorteilen gegenüber herkömmlichen PyTorch-Datenladeprogrammen, u. a.:
- Kompatibilität mit jedem Datentyp, einschließlich Bildern, Text, Video und multimodalen Daten
- Unterstützung für wichtige Cloudspeicheranbieter (AWS, OCI, GCS, Azure, Databricks UC Volume und alle mit S3 kompatiblen Objektspeicher wie Cloudflare R2, Coreweave, Backblaze b2 usw.)
- Maximierung der Garantien für Richtigkeit sowie der Leistung, Flexibilität und Benutzerfreundlichkeit. Weitere Informationen finden Sie auf der Seite mit den wichtigsten Features.
Allgemeine Informationen zu Mosaic Streaming finden Sie in der Dokumentation zur Streaming-API.
Hinweis
Mosaic Streaming wurde in allen Versionen von Databricks Runtime 15.2 ML und höher vorinstalliert.
Laden von Daten aus Spark-DataFrames mithilfe von Mosaic Streaming
Mosaic Streaming bietet einen einfachen Workflow zum Konvertieren von Apache Spark in das MDS-Format (Mosaic Data Shard), das dann zur Verwendung in einer verteilten Umgebung geladen werden kann.
Dies ist der empfohlene Workflow:
- Verwenden Sie Apache Spark zum Laden und optional zum Vorverarbeiten von Daten.
- Verwenden Sie
streaming.base.converters.dataframe_to_mds
, um den DataFrame für die vorübergehende Speicherung auf dem Datenträger und/oder für die dauerhafte Speicherung auf einem Unity Catalog-Volume zu speichern. Diese Daten werden im MDS-Format gespeichert und können mit Unterstützung für Komprimierung und Hashing weiter optimiert werden. Erweiterte Anwendungsfälle können auch die Vorverarbeitung von Daten mithilfe von UDFs umfassen. Weitere Informationen finden Sie im Tutorial zum Konvertieren von Spark-DataFrame in das MDS-Format. - Verwenden Sie
streaming.StreamingDataset
, um die erforderlichen Daten in den Arbeitsspeicher zu laden.StreamingDataset
ist eine Version von IterableDataset von PyTorch, die elastisch deterministisches Shuffling bietet, was eine schnelle Wiederaufnahme mitten in einer Epoche ermöglicht. Weitere Informationen finden Sie in der StreamingDataset-Dokumentation. - Verwenden Sie
streaming.StreamingDataLoader
, um die erforderlichen Daten für Trainings, Auswertungen und Tests zu laden.StreamingDataLoader
ist eine Version von DataLoader von PyTorch, die eine zusätzliche Prüfpunkt-/Wiederaufnahmeschnittstelle bereitstellt, für die sie die Anzahl der Stichproben nachverfolgt, die vom Modell in dieser Rangfolge gesehen wurden.
Ein umfassendes Beispiel finden Sie im folgenden Notebook: