Sdílet prostřednictvím


Načtení dat na výpočetních prostředcích bezserverového GPU

Tato část popisuje informace o načítání dat na výpočetních prostředcích GPU bez serveru speciálně pro aplikace ML a DL. V tomto kurzu se dozvíte více o tom, jak načíst a transformovat data pomocí rozhraní Spark Python API.

Načítání tabulkových dat

Použijte Spark Connect k načtení tabulkových dat strojového učení z tabulek Delta.

Pro trénování s jedním uzlem můžete datové rámce Apache Sparku převést na datové rámce pandas pomocí metody toPandas() a pak volitelně převést na formát NumPy pomocí metody to_numpy().

Poznámka:

Spark Connect odkládá analýzu a řešení názvů na dobu provádění, což může změnit chování vašeho kódu. Viz Porovnání Spark Connect s Klasickým Sparkem.

Spark Connect podporuje většinu rozhraní API PySpark, včetně Spark SQL, rozhraní Pandas API ve Sparku, strukturovaném streamování a knihovně MLlib (založené na datovém rámci). Nejnovější podporovaná rozhraní API najdete v referenční dokumentaci k rozhraní API PySpark .

Další omezení najdete v tématu Omezení výpočetních prostředků bez serveru.

Načtení dat uvnitř dekorátoru @distributed

Při použití Serverless GPU API pro distribuované trénování přesuňte kód načítání dat do dekorátoru @distributed. Velikost datové sady může překročit maximální velikost povolenou funkcí pickle, takže je doporučeno vygenerovat datovou sadu uvnitř dekorátoru, jak je znázorněno níže:

from serverless_gpu import distributed

# this may cause pickle error
dataset = get_dataset(file_path)
@distributed(gpus=8, remote=True)
def run_train():
  # good practice
  dataset = get_dataset(file_path)
  ....

Výkon načítání dat

/Workspace a /Volumes adresáře jsou hostované ve vzdáleném úložišti Katalogu Unity. Pokud je vaše datová sada uložená v katalogu Unity, rychlost načítání dat je omezená dostupnou šířkou pásma sítě. Pokud trénujete více epoch, doporučuje se nejprve zkopírovat data místně, konkrétně do /tmp adresáře, který je hostovaný na super rychlém úložišti (disky SSD NVMe).

Pokud je vaše datová sada velká, doporučujeme použít také následující techniky pro paralelizaci trénování a načítání dat:

  • Při trénování více epoch aktualizujte datovou sadu tak, aby se soubory uložily místně v adresáři /tmp před čtením jednotlivých souborů. V dalších epochách použijte verzi uloženou v mezipaměti.
  • Provádějte paralelní načítání dat aktivací pracovníků v API torch DataLoader Nastavte num_workers na alespoň 2. Ve výchozím nastavení každý pracovník předem načte dvě pracovní položky. Pokud chcete zvýšit výkon, zvyšte num_workers (což zvýší počet paralelních čtení) nebo prefetch_factor (což zvýší počet položek, které každý pracovník předem načte).