Hyperopt概念
本文描述了你需要知道的一些概念使用分布式Hyperopt。
的例子說明如何使用Hyperopt磚,明白了與Hyperopt Hyperparameter調優。
fmin ()
你使用fmin ()
執行Hyperopt運行。的理由fmin ()
表中所示;看到Hyperopt文檔為更多的信息。如何使用每個參數的例子,請參閱筆記本電腦的例子。
參數名稱 |
描述 |
---|---|
|
目標函數。Hyperopt調用這個函數的值生成hyperparameter空間提供的參數。這個函數可以返回損失作為標量值或在一個字典Hyperopt文檔詳情)。這個函數通常包含代碼模型訓練和損失計算。 |
|
定義了hyperparameter空間搜索。Hyperopt在這個空間是如何定義提供極大的靈活性。你可以選擇一個分類選擇等算法,或概率分布均勻和日誌等數值。 |
|
Hyperopt搜索算法用於搜索hyperparameter空間。最常用的是 |
|
hyperparameter設置嚐試(模型)的數量。 |
|
許多hyperparameter設置Hyperopt應該提前產生。因為Hyperopt TPE生成算法可以花一些時間,它可以幫助增加這超出的默認值1,但一般不大於 |
|
一個 |
|
一個可選的早期停止函數來確定 |
的SparkTrials
類
SparkTrials
是一個磚開發的API,允許你分發Hyperopt Hyperopt代碼運行不作其他變化。SparkTrials
加速單機優化分配試驗引發工人。
請注意
SparkTrials
設計為單機並行化計算毫升scikit-learn等模型。為模型創建分布式ML算法如MLlib或Horovod,不要使用SparkTrials
。在這種情況下,模型建立過程是自動並行集群,您應該使用默認Hyperopt類試用
。
本節描述如何配置參數傳遞給SparkTrials
和實施方麵的SparkTrials
。
SparkTrials
和MLflow
磚運行時毫升支持日誌MLflow從工人。你可以添加自定義日誌代碼的目標函數傳遞給Hyperopt。
SparkTrials
日誌優化結果嵌套MLflow運行如下:
主要或父運行:調用
fmin ()
記錄為主要運行。如果有一個活躍的運行,SparkTrials
這個活躍日誌運行,不結束運行時fmin ()
的回報。如果沒有積極運行,SparkTrials
創建一個新的運行時,日誌,並結束之前運行fmin ()
的回報。孩子:每個hyperparameter設置測試記錄(“審判”)作為一個孩子的主要運行下運行。MLflow日誌記錄從工人也存儲在相應的孩子。
當調用fmin ()
,磚建議積極MLflow運行管理;也就是說,包裝的調用fmin ()
在一個與mlflow.start_run ():
聲明。這將確保每一個fmin ()
調用記錄到一個單獨的MLflow主要運行,並使它容易日誌額外的標簽,運行參數或指標。
請注意
當你打電話fmin ()
多次在同一活躍MLflow運行,MLflow這些調用相同的主要運行日誌。為記錄參數和標簽解決名稱衝突,MLflow附加一個UUID名稱與衝突。
當伐木工人,您不需要顯式地管理運行的目標函數。調用mlflow.log_param (“param_from_worker”,x)
目標函數的日誌給孩子一個參數運行。您可以登錄參數、指標、標簽、目標函數和工件。