Načtení dat pomocí streamingu mosaic
Tento článek popisuje, jak pomocí systému Mosaic Streaming převést data z Apache Sparku do formátu kompatibilního s PyTorchem.
Mosaic Streaming je opensourcová knihovna pro načítání dat. Umožňuje jednouzlu nebo distribuované trénování a hodnocení modelů hlubokého učení z datových sad, které jsou již načteny jako datové rámce Apache Spark. Puzzle Streaming primárně podporuje Puzzle Composer, ale také se integruje s nativní PyTorch, PyTorch Lightning a TorchDistributor. Streaming společnosti Mosaic poskytuje řadu výhod oproti tradičním datovýmloaderům PyTorch, mezi které patří:
- Kompatibilita s jakýmkoli datovým typem, včetně obrázků, textu, videa a multimodálních dat.
- Podpora hlavních cloudových úložišť providers (AWS, OCI, GCS, Azure, Databricks UC Volume a libovolné úložiště objektů kompatibilní s S3, jako je Cloudflare R2, Coreweave, Backblaze b2 atd.)
- Maximalizace záruk správnosti, výkonu, flexibility a snadného použití Další informace najdete na stránce s klíčovými funkcemi .
Obecné informace o technologii Mosaic Streaming najdete v dokumentaci k rozhraní API pro streamování.
Poznámka:
Do všech verzí Databricks Runtime 15.2 ML a vyšších verzí je předinstalovaný systém Streaming systému Mosaic Streaming.
Načtení dat z datových rámců Sparku pomocí streamování Mosaic
Puzzle Streaming poskytuje jednoduchý pracovní postup pro převod z Apache Sparku do formátu MDS (Mosaic Data Shard), který se pak dá načíst pro použití v distribuovaném prostředí.
Doporučený pracovní postup je:
- K načtení a volitelnému předběžnému zpracování dat použijte Apache Spark.
- Pomocí
streaming.base.converters.dataframe_to_mds
uložte datový rámec na disk pro přechodné úložiště nebo do svazku Unity Catalog pro trvalé úložiště. Tato data budou uložena ve formátu MDS a dají se dále optimalizovat s podporou komprese a hashování. Pokročilé případy použití můžou zahrnovat také předběžné zpracování dat pomocí funkcí definovaných uživatelem. Další informace najdete v kurzu k datovému rámci Sparku do MDS. - Slouží
streaming.StreamingDataset
k načtení potřebných dat do paměti.StreamingDataset
je verze PyTorch iterableDataset, která obsahuje elasticky deterministické náhodné náhodné prohazování, což umožňuje rychlé obnovení střední epochy. Další informace najdete v dokumentaci ke streamovací saděDataset . - Slouží
streaming.StreamingDataLoader
k načtení potřebných dat pro trénování, vyhodnocení nebo testování.StreamingDataLoader
je verze dataloaderu PyTorch, která poskytuje další rozhraní kontrolních bodů/obnovení, pro které sleduje počet vzorků, které model v tomto pořadí viděl.
Kompletní příklad najdete v následujícím poznámkovém bloku:
Zjednodušení načítání dat ze Sparku do PyTorchu s využitím poznámkového bloku Pro streamování aplikace Mosaic
Řešení potíží: Chyba ověřování
Pokud se při načítání dat ze svazku Unity Catalog pomocí StreamingDataset
zobrazí následující chyba, set proměnné prostředí, jak je znázorněno níže.
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.
Poznámka:
Pokud se tato chyba zobrazí při spouštění distribuovaného trénování pomocí TorchDistributor
, musíte také set proměnné prostředí na pracovních uzlech.
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)