Dela via


Ladda data för serverlös GPU-beräkning

Det här avsnittet beskriver information om hur du läser in data på serverlös GPU-beräkning specifikt för ML- och DL-program. Läs självstudien för att lära dig mer om hur du läser in och transformerar data med hjälp av Spark Python API:et.

Läsa in tabelldata

Använd Spark Connect för att läsa in tabellbaserade maskininlärningsdata från Delta-tabeller.

För träning med en nod kan du konvertera Apache Spark DataFrames till Pandas DataFrames med pyspark-metodentoPandas() och sedan konvertera till NumPy-format med pyspark-metodento_numpy().

Anmärkning

Spark Connect skjuter upp analys och namnupplösning till exekveringstid, vilket kan förändra hur din kod beter sig. Se Jämför Spark Connect med Spark Classic.

Spark Connect stöder de flesta PySpark-API:er, inklusive Spark SQL, Pandas API på Spark, Structured Streaming och MLlib (DataFrame-baserad). Se referensdokumentationen för PySpark API för de senaste API:erna som stöds.

Andra begränsningar finns i Begränsningar för serverlös beräkning.

Läs in data i dekoratören @distributed

När du använder det serverlösa GPU-API: et för distribuerad träning flyttar du datainläsningskoden i @distributed dekoratören. Datamängdens storlek kan överskrida den maximala storlek som tillåts av pickle, så vi rekommenderar att du genererar datamängden inuti dekoratören enligt nedan:

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)
  ....

Datainläsningsprestanda

/Workspace och /Volumes kataloger finns på fjärransluten Unity Catalog-lagring. Om din datauppsättning lagras i Unity Catalog begränsas datainläsningshastigheten av den tillgängliga nätverksbandbredden. Om du tränar flera epoker rekommenderar vi att du först kopierar data lokalt, särskilt till katalogen /tmp som finns på supersnabb lagring (NVMe SSD-diskar).

Om din datamängd är stor rekommenderar vi även följande tekniker för parallellisering av träning och datainläsning:

  • När du tränar flera träningsepocher, uppdatera datauppsättningen för att cacha filer lokalt i /tmp-katalogen innan du läser varje fil. På efterföljande epoker använder du den cachelagrade versionen.
  • Parallelisera datahämtningen genom att aktivera trådar i torch DataLoader-API:et. Ange num_workers till minst 2. Som förval hämtar varje arbetare i förväg två arbetsobjekt. För att förbättra prestandan ökar du num_workers (vilket ökar de parallella läsningarna) eller prefetch_factor (vilket ökar antalet objekt som varje arbetare förhämtar).