Sdílet prostřednictvím


Průvodce optimalizací výkonu odvozování modelů hlubokého učení

Tato část obsahuje několik tipů pro ladění a ladění výkonu pro odvozování modelů v Azure Databricks. Přehled najdete v pracovním postupu odvozování hlubokého učení.

Obvykle existují dvě hlavní části odvozování modelu: kanál vstupu dat a odvozování modelů. Vstupní datový kanál je náročný na vstupně-výstupní vstup a odvozování modelů je náročné na výpočet. Určení kritického bodu pracovního postupu je jednoduché. Tady je několik přístupů:

  • Snižte model na triviální model a změřte příklady za sekundu. Pokud je rozdíl koncového a koncového času mezi úplným modelem a triviálním modelem minimální, pak je kanál vstupu dat pravděpodobně kritickým bodem, jinak je odvozování modelu kritickým bodem.
  • Pokud spouštíte odvozování modelu s GPU, zkontrolujte metriky využití GPU. Pokud využití GPU není nepřetržitě vysoké, může být kritickým bodem vstupního datového kanálu.

Optimalizace kanálu vstupu dat

Použití GRAFICKÝch procesorů může efektivně optimalizovat rychlost spouštění pro odvozování modelů. S tím, jak se gpu a další akcelerátory stávají rychlejšími, je důležité, aby vstupní kanál dat zůstal vzhůru s poptávkou. Vstupní datový kanál načte data do datových rámců Sparku, transformuje je a načte jako vstup pro odvozování modelu. Pokud je vstupní data kritickým bodem, tady je několik tipů pro zvýšení propustnosti vstupně-výstupních operací:

  • Nastavte maximální počet záznamů na dávku. Větší počet maximálních záznamů může snížit režijní náklady na vstupně-výstupní operace volání funkce UDF, pokud se záznamy vejdou do paměti. Pokud chcete nastavit velikost dávky, nastavte následující konfiguraci:

    spark.conf.set("spark.sql.execution.arrow.maxRecordsPerBatch", "5000")
    
  • Načtěte data v dávkách a předem je načtěte při předběžném zpracování vstupních dat v UDF knihovny pandas.

    Pro TensorFlow doporučuje Azure Databricks používat rozhraní TF.data API. Mapu můžete parsovat paralelně nastavením num_parallel_calls funkce map a voláním prefetch a batch před načtením a dávkováním.

    dataset.map(parse_example, num_parallel_calls=num_process).prefetch(prefetch_size).batch(batch_size)
    

    Pro PyTorch azure Databricks doporučuje používat třídu DataLoader. Můžete nastavit batch_size dávkování a num_workers paralelní načítání dat.

    torch.utils.data.DataLoader(images, batch_size=batch_size, num_workers=num_process)