Sdílet prostřednictvím


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 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:

  1. K načtení a volitelnému předběžnému zpracování dat použijte Apache Spark.
  2. Pomocí streaming.base.converters.dataframe_to_mds ulož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.
  3. Slouží streaming.StreamingDataset k načtení potřebných dat do paměti. StreamingDataset je 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.
  4. 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šte načítání dat ze Sparku do PyTorchu za použití poznámkového bloku Mosaic Streaming.

Pořiďte si poznámkový blok

Ř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ší.