與MLflow Hyperparameter調優,Apache MLlib和Hyperopt火花
2019年6月7日 在數據科學和毫升
Hyperparameter調優是一種常見的技術來優化基於hyperparameters機器學習模型,或配置不學會在模型訓練。調優這些配置可以顯著改善模型性能。然而,hyperparameter調優可以計算昂貴,緩慢,甚至不直觀的專家。
磚運行時的5.4和5.4毫升(Azure|AWS)引入新功能,這有助於規模和簡化hyperparameter調優。這些功能支持調優毫升在Python中,重點是通過Apache火花和自動跟蹤通過MLflow可伸縮性。
MLflow:跟蹤優化工作流程
Hyperparameter優化創建複雜的工作流,涉及測試許多Hyperparameter設置,生成了大量的模型和迭代ML管道。為了簡化跟蹤和再現性優化工作流程,我們使用MLflow,一個開源的平台來幫助管理機器學習Beplay体育安卓版本的完整生命周期。了解更多關於MLflowMLflow文檔和最近的火花+人工智能峰會2019 MLflow談判。
我們的集成鼓勵一些最佳實踐對組織運行和跟蹤hyperparameter調優。在高級別上,我們組織運行如下,匹配使用的結構調優本身:
調優 | MLflow運行 | MLflow日誌 |
Hyperparameter優化算法 | 父母運行 | 元數據,例如,numFoldsCrossValidator |
適合hyperparameter設置# 1 &評估模型 | 子跑1 | Hyperparameters # 1,評價指標# 1 |
健康&評估模型與hyperparameter設置# 2 | 孩子跑2 | Hyperparameters # 2、評估指標# 2 |
… | … | … |
要了解更多,請查看這個演講”最佳實踐與MLflow Hyperparameter調優從火花+人工智能峰會2019”。
管理MLflow現在通常可以在磚,兩個集成我們接下來討論利用管理MLflow MLflow庫時默認安裝在集群。
Apache火花MLlib + MLflow集成
Apache火花MLlib用戶經常調整hyperparameters使用MLlib內置的工具CrossValidator
和TrainValidationSplit
。這些用網格搜索嚐試一組指定的hyperparameter值;看到火花文檔在調優更多信息。
磚運行時的5.3和5.3毫升以上支持自動MLflow跟蹤MLlib調優在Python中。
有了這個特性,PySparkCrossValidator
和TrainValidationSplit
將自動日誌MLflow,組織運行在一個層次結構和日誌hyperparameters和評價指標。例如,調用CrossValidator.fit ()
將日誌一方。在這種運行下,CrossValidator
將為每個hyperparameter設置,運行日誌一個孩子,每個孩子將包括hyperparameter設置和運行評價指標。比較這些運行MLflow UI有助於每個hyperparameter可視化優化的效果。
https://www.youtube.com/watch?v=DFn3hS-s7OA
在磚運行時的5.3和5.3毫升,自動跟蹤在默認情況下不啟用。打開自動跟蹤,設置火花配置spark.databricks.mlflow.trackMLlib.enabled
“真正的”。與5.4版本中,自動跟蹤默認情況下是啟用的。
分布式Hyperopt + MLflow集成
Hyperopt是一個流行的開源hyperparameter調優庫與強大的社會支持(600000 + PyPI下載,3300 +明星Github截至2019年5月)。數據科學家使用Hyperopt因其簡單性和有效性。Hyperopt提供了兩種優化算法:隨機搜索和Parzen估計的貝葉斯方法樹,提供改善計算效率比蠻力方法,如網格搜索。然而,分發Hyperopt之前沒有工作的,需要手工設置。
在磚運行時的5.4毫升,我們介紹一個實現Hyperopt由Apache火花。使用新的試用
類SparkTrials
,您可以輕鬆地分發Hyperopt運行不作任何更改當前Hyperopt api。你隻需要通過的SparkTrials
類在應用hyperopt.fmin ()
函數(參見下麵的示例代碼)。此外,所有優化實驗,連同他們的hyperparameters和評估指標,自動記錄到MLflow磚。有了這個特性,我們的目標是提高效率,可伸縮性和簡單hyperparameter優化工作流程。
#新SparkTrials類分配調優< b > spark_trials = SparkTrials(並行=24)< / b >
fmin (fn =火車,#方法訓練和評估模型空間= search_space,#定義hyperparameters空間算法= tpe.suggest,#搜索算法:樹Parzen估計max_evals =8,# hyperparameter設置嚐試show_progressbar =假,
試驗= < b > spark_trials < / b >)
結果可以使用工具,如平行坐標可視化情節。在下麵的圖中,我們可以看到最好的深度學習模型(最低)損失被訓練使用中型到大型批量大小、中小學習速度,和各種動力設置。注意,這個情節是由手通過情節
,但MLflow將提供本機支持平行坐標圖在不久的將來。
在磚,我們擁抱開源社區和api。我們正在與Hyperopt社區貢獻這個Spark-powered實現開源Hyperopt。請繼續關注。
開始吧!
更多地了解一般hyperparameter調優:
- 不要錯過我們即將舉行的研討會自動化Hyperparameter調優、縮放、磚和跟蹤更深層次的潛水和現場演示——周四6月20日。
- 看看這些會談的火花+人工智能2019年峰會:
- “與MLflow Hyperparameter調優的最佳實踐”由約瑟夫•布拉德利
- “深度學習與MLflow高級Hyperparameter優化”由Maneesh Bhide
了解更多關於MLflow,看看這些資源:
開始使用這些特定功能,看看下麵的文檔頁麵及其嵌入式例子筆記本。和新的磚運行時的5.4毫升試用版本。