Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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 jednouzlové nebo distribuované trénování a hodnocení modelů hlubokého učení z datových sad, které jsou již načtené jako datové rámce Apache Spark. Mosaic Streaming primárně podporuje Mosaic Composer, ale také se integruje s nativními 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 poskytovatelů cloudového úložiště (AWS, OCI, GCS, Azure, Databricks UC Volume a libovolného úložiště objektů kompatibilních 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 je předinstalovaný Mosaic Streaming.
Načtení dat z datových rámců Sparku pomocí streamování Mosaic
Mosaic Streaming poskytuje jednoduchý pracovní postup pro převod z Apache Spark do formátu Mosaic Data Shard (MDS), který pak lze načíst a použít 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_mdsuložte datový rámec na disk pro přechodné úložiště nebo na svazek katalogu Unity 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í mohou zahrnovat také předběžné zpracování dat pomocí uživatelsky definovaných funkcí. Další informace najdete v tutoriálu k datovému rámci Spark na MDS. - Slouží
streaming.StreamingDatasetk načtení potřebných dat do paměti.StreamingDatasetje verze PyTorch IterableDataset, která obsahuje elasticky deterministické náhodné prohazování, což umožňuje rychlé obnovení uprostřed epochy. Další informace najdete v dokumentaci ke streamované sadě Dataset. - Slouží
streaming.StreamingDataLoaderk načtení potřebných dat pro trénování, vyhodnocení nebo testování.StreamingDataLoaderje 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šte načítání dat ze Sparku do PyTorchu za použití poznámkového bloku Mosaic Streaming.
Řešení problémů
Chyba ověřování
Pokud se při načítání dat ze svazku katalogu Unity pomocí StreamingDatasetzobrazí následující chyba, nastavte 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é nastavit 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)
Problémy se sdílenou pamětí Pythonu 3.11
Kvůli problémům s implementací StreamingDataset sdílené paměti Pythonu 3.11 může narazit na přechodné problémy v Databricks Runtime 15.4 LTS pro Machine Learning. Těmto problémům se můžete vyhnout upgradem na Databricks Runtime 16.4 LTS pro Machine Learning, protože Python 3.12 tyto problémy řeší.