搭配 Hyperopt 使用分散式訓練演算法
注意
不再維護 Hyperopt 的開放原始碼版本。
Hyperopt 將在下一個主要 DBR ML 版本中移除。 Azure Databricks 建議針對類似的體驗使用 Optuna ,並存取更最新的超參數微調演算法。
除了單一機器訓練演算法 (例如來自 scikit-learn) 外,您還可以搭配分散式訓練演算法使用 Hyperopt。 在此案例中,Hyperopt 會在驅動程式節點上使用不同超參數設定產生試用。 每個試用都會從驅動程式節點執行,讓其能夠存取完整的叢集資源。 此設定適用於任何分散式機器學習演算法或程式庫,包括 Apache Spark MLlib 和 HorovodRunner。
當您搭配分散式訓練演算法使用 Hyperopt 時,請勿將 trials
引數傳遞至 fmin()
,具體而言,不要使用 SparkTrials
類別。 SparkTrials
專為針對自身未散發的演算法散發試用而設計。 使用分散式訓練演算法時,請使用在叢集驅動程式上執行的預設 Trials
類別。 Hyperopt 會評估驅動程式節點上的每個試用,讓 ML 演算法本身可以起始分散式訓練。
注意
Azure Databricks 不支援使用 Trials
類別自動記錄至 MLflow。 使用分散式訓練演算法時,您必須手動呼叫 MLflow 來記錄 Hyperopt 的試用。
筆記本範例:搭配 MLlib 演算法使用 Hyperopt
該範例筆記本示範如何使用 Hyperopt 來微調 MLlib 的分散式訓練演算法。
Hyperopt 和 MLlib 分散式訓練筆記本
筆記本範例:搭配 HorovodRunner 使用 Hyperopt
HorovodRunner 是用於在 Databricks 上執行分散式深度學習工作負載的一般 API。 HorovodRunner 整合了 Horovod 與 Spark 的屏障模式,可針對 Spark 上長時間執行的深度學習訓練工作提供更高的穩定性。
該範例筆記本示範如何使用 Hyperopt 來根據 HorovodRunner 微調針對深度學習的分散式訓練。