最佳實踐:使用Hyperopt進行超參數調優
最佳實踐
貝葉斯方法可以比網格搜索和隨機搜索更有效。因此,使用超opt樹的Parzen Estimators (TPE)算法,您可以探索更多的超參數和更大的範圍。利用領域知識來限製搜索領域可以優化調優,獲得更好的結果。
當你使用
hp.choice ()
, Hyperopt返回選擇列表的索引。因此,在MLflow中登錄的參數也是索引。使用hyperopt.space_eval ()
檢索參數值。對於長時間訓練的模型,開始使用小數據集和許多超參數進行實驗。使用MLflow來確定性能最好的模型,並確定可以修複哪些超參數。通過這種方式,您可以在準備進行大規模調優時減少參數空間。
利用Hyperopt支持條件維度和超參數。例如,當您評估多種類型的梯度下降時,您可以讓Hyperopt包含條件超參數,而不是將超參數空間限製為普通超參數,這些條件超參數隻適用於其中的一個子集。有關使用條件參數的詳細信息,請參見定義搜索空間.
當使用
SparkTrials
,為隻支持cpu的集群和支持gpu的集群配置適當的並行性。在Databricks中,CPU和GPU集群在每個worker節點上使用不同數量的執行線程。CPU集群在每個節點上使用多個執行線程。GPU集群每個節點隻使用一個執行線程,以避免多個Spark任務在使用同一GPU時發生衝突。雖然這對於為GPU編寫的庫來說通常是最優的,但這意味著GPU集群上的最大並行度會降低,所以在選擇GPU實例類型時,要知道每次試驗可以使用多少個GPU。看到GPU-enabled集群獲取詳細信息。不要使用
SparkTrials
在自動定量集群。Hyperopt在開始執行時選擇並行度值。如果集群以後自動伸縮,Hyperopt將無法利用新的集群大小。