Läsa in data med Mosaic Streaming
Den här artikeln beskriver hur du använder Mosaic Streaming för att konvertera data från Apache Spark till ett format som är kompatibelt med PyTorch.
Mosaic Streaming är ett öppen källkod datainläsningsbibliotek. Det möjliggör enkel nod eller distribuerad träning och utvärdering av djupinlärningsmodeller från datauppsättningar som redan har lästs in som Apache Spark DataFrames. Mosaic Streaming stöder främst Mosaic Composer, men integreras också med inbyggda PyTorch, PyTorch Lightning och TorchDistributor. Mosaic Streaming ger en rad fördelar jämfört med traditionella PyTorch DataLoaders, inklusive:
- Kompatibilitet med alla datatyper, inklusive bilder, text, video och multimodala data.
- Stöd för större molnlagringsleverantörer (AWS, OCI, GCS, Azure, Databricks UC Volume och alla S3-kompatibla objektlager som Cloudflare R2, Coreweave, Backblaze b2 osv.)
- Maximerar korrekthetsgarantier, prestanda, flexibilitet och användarvänlighet. Mer information finns på sidan med viktiga funktioner .
Allmän information om Mosaic Streaming finns i dokumentationen för API för direktuppspelning.
Kommentar
Mosaic Streaming har förinstallerats i alla versioner av Databricks Runtime 15.2 ML och senare.
Läsa in data från Spark DataFrames med hjälp av Mosaic Streaming
Mosaic Streaming är ett enkelt arbetsflöde för konvertering från Apache Spark till MDS-formatet (Mosaic Data Shard) som sedan kan läsas in för användning i en distribuerad miljö.
Det rekommenderade arbetsflödet är:
- Använd Apache Spark för att läsa in och eventuellt förbearbeta data.
- Använd
streaming.base.converters.dataframe_to_mds
för att spara dataramen på disken för tillfällig lagring och/eller till en Unity Catalog-volym för beständig lagring. Dessa data lagras i MDS-format och kan optimeras ytterligare med stöd för komprimering och hashning. Avancerade användningsfall kan också omfatta förbearbetning av data med hjälp av UDF:er. Mer information finns i självstudiekursen Spark DataFrame till MDS. - Använd
streaming.StreamingDataset
för att läsa in nödvändiga data till minnet.StreamingDataset
är en version av PyTorchs IterableDataset som har elastiskt deterministisk blandning, vilket möjliggör snabb återupptagning mitt i epoken. Mer information finns i dokumentationen för StreamingDataset. - Använd
streaming.StreamingDataLoader
för att läsa in nödvändiga data för träning/utvärdering/testning.StreamingDataLoader
är en version av PyTorchs DataLoader som tillhandahåller ytterligare ett kontrollpunkts-/återupptagningsgränssnitt, för vilket den spårar antalet exempel som ses av modellen i den här rangordningen.
Ett exempel från slutpunkt till slutpunkt finns i följande notebook-fil:
Förenkla datainläsning från Spark till PyTorch med hjälp av Mosaic Streaming Notebook
Felsökning: Autentiseringsfel
Om du ser följande fel när du läser in data från en Unity Catalog-volym med StreamingDataset
konfigurerar du miljövariablerna enligt nedan.
ValueError: default auth: cannot configure default credentials, please check https://docs.databricks.com/en/dev-tools/auth.html#databricks-client-unified-authentication to configure credentials for your preferred authentication method.
Kommentar
Om du ser det här felet när du kör distribuerad utbildning med TorchDistributor
måste du också ange miljövariablerna på arbetsnoderna.
db_host = "https://your-databricks-host.databricks.com"
db_token = "YOUR API TOKEN" # Create a token with either method from https://docs.databricks.com/en/dev-tools/auth/index.html#databricks-authentication-methods
def your_training_function():
import os
os.environ['DATABRICKS_HOST'] = db_host
os.environ['DATABRICKS_TOKEN'] = db_token
# The above function can be distributed with TorchDistributor:
# from pyspark.ml.torch.distributor import TorchDistributor
# distributor = TorchDistributor(...)
# distributor.run(your_training_function)