自動超參數調優、縮放和跟蹤:按需網絡研討會和常見問題解答現已可用!
2019年7月18日 在工程的博客
6月20日,我們團隊舉辦了一場網絡直播研討會數據庫上的自動超參數調優、縮放和跟蹤——與軟件工程師Joseph Bradley和Databricks高級產品經理Yifan Cao合作。
自動化機器學習(AutoML)最近受到了極大的關注,因為它能夠縮短數據科學團隊的實現價值時間,並最大限度地提高模型的預測性能。然而,要達到這種理想狀態可能是一個複雜且耗費資源的過程。
在本次網絡研討會中,我們介紹了:
- Databricks上提供的AutoML產品的概況
- 最流行的超參數調優技術以及實現這些技術的開源工具。
- 我們在Databricks中為這些工具構建的改進,包括與MLflow的集成,特別是針對Apache PySpark MLlib和Hyperopt。
我們使用以下筆記本和教程演示了這些概念:
如果你想免費訪問Databricks統一分析平台Beplay体育安卓版本試一下我們的筆記本,你可以訪問免費試用.
最後,我們進行了問答環節,以下是問答環節。
問:有沒有雲平台可供我們進行實驗?Beplay体育安卓版本如果是這樣,我們如何進入?
Databricks AutoML特性在Azure Databricks和AWS中都可用。要開始,請按照我們的指示注冊一個免費試用.
問:我們期望從超參數調優中獲得多少精度收益?
執行超參數調優的精度收益取決於模型、超參數和其他因素。您可以期望從初始超參數調優中獲得最大的收益,但隨著您花費更多時間進行調優,收益會遞減。例如,在max_eval=50的情況下運行Hyperopt所帶來的準確度飛躍,可能比將max_eval從50增加到100所帶來的飛躍要大得多。
問:Hyperopt可以應用於scikit-learn, TensorFlow嗎?
是的。我們的分布式Hyperopt + MLflow特性適用於單節點機器學習訓練代碼,不受底層ML庫的影響。Hyperopt可以接收包含單機scikit-learn、TensorFlow或其他ML代碼的用戶函數。注意,對於分布式機器學習訓練,請考慮使用Apache Spark MLlib,它在Databricks的MLflow中被自動跟蹤。
問:開源到底是什麼?
我們正在通過“SparkTrials”使用Apache Spark進行開源分布式Hyperopt。對MLflow的自動跟蹤仍然是databicks特有的特性。
問:你能詳細說明什麼是條件超參數調優嗎?它將如何幫助模型搜索?
條件超參數調優是指某些超參數的搜索依賴於其他超參數的值的調優。例如,當調優線性模型的正則化時,可以在正則化參數“lambda”的一個範圍內搜索L2正則化,而在不同的“lambda”範圍內搜索L1正則化。這種技術有助於模型搜索,因為不同的模型有不同的超參數。例如,對於一個分類問題,你可以考慮在邏輯回歸和隨機森林之間進行選擇。在同一個Hyperopt搜索中,您可以測試這兩種算法,搜索與每個算法相關的不同超參數,例如邏輯回歸的正則化和隨機森林的樹數。
問:MLflow自動選擇最好的模型,並使其作為父運行和其他運行作為子?
我們的MLflow與MLlib和Hyperopt的集成會自動選擇最好的模型和結構運行在父子層次結構中。需要明確的是,這個集成有兩個處理不同方麵的部分:(a) MLflow僅用於記錄和跟蹤,而(b) MLlib和Hyperopt包含選擇最佳模型的調優邏輯。因此,MLlib和Hyperopt比較模型,選擇最佳模型,並決定如何在MLflow運行時跟蹤模型。
問:我可以設置一個作為超參數減慢/變化的計劃學習速率嗎?
是的,但是減速的邏輯需要在您的自定義ML代碼中。一些深度學習庫支持縮小學習率:例如,https://www.tensorflow.org/api_docs/python/tf/compat/v1/train/exponential_decay.
問:我們能在MLflow跟蹤UI中看到所有用於模型的特性嗎?
默認情況下,這些特性不會被記錄,但是您可以向日誌特性名稱中添加自定義MLflow日誌代碼。為此,我們建議在主運行下記錄特性名稱,以便進行調優。如果特性被記錄為一長串名稱,那麼最好將它們記錄為MLflow標記或工件,因為它們支持比Databricks中的MLflow參數更大/更長的值。
問:MLflow能夠處理自動化的特性工程嗎?
您可以輕鬆地安裝第三方庫(如Featuretools)來自動進行特性工程,並將生成的特性記錄到MLflow
問:MLflow如何幫助執行遷移學習?
遷移學習有很多種類型,所以很難給出一個單一的答案。與本網絡研討會主題最相關的遷移學習類型是使用一個模型的超參數調優結果來對另一個模型進行暖啟動調優。MLflow可以通過提供一個知識存儲庫來幫助理解過去的超參數和性能,幫助用戶選擇合理的超參數和將來要搜索的範圍來實現這一點。將過去的結果應用到新的調優運行中目前必須手動完成。
問:這些功能在社區版中可用嗎?
目前沒有。
問:MLflow自動跟蹤在Scala中可用嗎?
目前沒有。如果有足夠的客戶需求,我們會增加。
額外的資源:
文檔:
博客:
視頻:
要開始使用MLflow,請遵循mlflow.org或查看發布代碼Github.我們最近還創建了一個鬆弛的通道MLflow以及實時問題,你可以跟隨@MLflow在Twitter上。我們很高興聽到您對概念和代碼的反饋!