Dela via


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:

  1. Använd Apache Spark för att läsa in och eventuellt förbearbeta data.
  2. 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.
  3. 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.
  4. 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

Hämta notebook-fil

Felsökning: Autentiseringsfel

Om du ser följande fel när du läser in data från en Unity Catalog-volym med StreamingDatasetkonfigurerar 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 TorchDistributormå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)