Osvědčené postupy: Ladění hyperparametrů pomocí Hyperoptu

Osvědčené postupy

  • Bayesovské přístupy mohou být mnohem efektivnější než vyhledávání v mřížce a náhodné hledání. Proto pomocí hyperoptového stromu parzenových estimátorů (TPE) můžete prozkoumat více hyperparametrů a větších rozsahů. Použití znalostí domény k omezení vyhledávací domény může optimalizovat ladění a dosáhnout lepších výsledků.
  • Při použití hp.choice()vrátí Hyperopt index seznamu voleb. Proto je parametr přihlášený v MLflow také index. Slouží hyperopt.space_eval() k načtení hodnot parametrů.
  • U modelů s dlouhými dobami trénování začněte experimentovat s malými datovými sadami a mnoha hyperparametry. Pomocí MLflow identifikujte modely s nejlepším výkonem a určete, které hyperparametry je možné opravit. Tímto způsobem můžete snížit prostor parametrů při přípravě na ladění ve velkém měřítku.
  • Využijte podporu Hyperoptu pro podmíněné dimenze a hyperparametry. Pokud například vyhodnotíte více příchutí gradientního sestupu, místo omezení prostoru hyperparametrů jenom na běžné hyperparametry, můžete mít Hyperopt podmíněné hyperparametry – ty, které jsou vhodné pouze pro podmnožinu příchutí. Další informace o použití podmíněných parametrů naleznete v tématu Definování vyhledávacího prostoru.
  • Při použití SparkTrialskonfigurujte paralelismus pro clustery s podporou PROCESORu a GPU. V Azure Databricks používají clustery CPU a GPU různé počty vláken exekutoru na pracovní uzel. Clustery procesoru používají více vláken exekutoru na uzel. Clustery GPU používají pouze jedno vlákno exekutoru na uzel, aby nedocházelo ke konfliktům mezi několika úlohami Sparku, které se pokoušejí použít stejný GPU. I když je to obecně optimální pro knihovny napsané pro GPU, znamená to, že maximální paralelismus je omezen na clustery GPU, takže mějte na paměti, kolik GPU může každá zkušební verze použít při výběru typů instancí GPU. Podrobnosti najdete v clusterech s podporou GPU.
  • Nepoužívejte SparkTrials u clusterů automatického škálování. Hyperopt vybere hodnotu paralelismu při spuštění. Pokud se cluster později automaticky škáluje, Hyperopt nebude moct využít novou velikost clusteru.

Řešení potíží

  • Hlášená ztráta naN (ne číslo) obvykle znamená, že cílová funkce byla předána vrácenému fmin() naN. To nemá vliv na jiná spuštění a můžete ho bezpečně ignorovat. Pokud chcete zabránit tomuto výsledku, zkuste upravit prostor hyperparametru nebo upravit funkci cíle.
  • Vzhledem k tomu, že Hyperopt používá stochastické vyhledávací algoritmy, ztráta obvykle neklesne monotonicky při každém spuštění. Tyto metody ale často hledají nejlepší hyperparametry rychleji než jiné metody.
  • Hyperopt i Spark můžou mít režijní náklady, které můžou dominovat dobu trvání zkušebního období u krátkých zkušebních běhů (nízké desítky sekund). Rychlost, kterou zjistíte, může být malá nebo dokonce nula.

Ukázkový poznámkový blok: Osvědčené postupy pro datové sady různých velikostí

SparkTrials spustí zkušební verze na pracovních uzlech Sparku. Tento poznámkový blok obsahuje pokyny pro přesun datových sad různých řádů na pracovní uzly při použití SparkTrials.

Zpracování datových sad různých řádů poznámkového bloku

Získat poznámkový blok