Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
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_mdsfö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. Visa självstudiekursen Spark DataFrame till MDS för mer information. - Använd
streaming.StreamingDatasetför att läsa in nödvändiga data till minnet.StreamingDatasetär en version av PyTorchs IterableDataset som har elastisk deterministisk omblandning, vilket möjliggör snabb återstart mitt under epoken. Mer information finns i dokumentationen för StreamingDataset. - Använd
streaming.StreamingDataLoaderfö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 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)
Problem med delat minne i Python 3.11
På grund av problem med implementeringen av delat minne i Python 3.11 StreamingDataset kan stöta på tillfälliga problem i Databricks Runtime 15.4 LTS för Machine Learning. Du kan undvika dessa problem genom att uppgradera till Databricks Runtime 16.4 LTS för Machine Learning, eftersom Python 3.12 åtgärdar dessa problem.