問題
SparkTrials的延伸Hyperopt,它允許運行分布式引發工人。
當你開始一個MLflow運行嵌套= True在工人函數,結果應該是嵌套的父母下運行。
有時結果是不正確嵌套的父母下運行,即使你跑SparkTrials嵌套= True在工人的功能。
例如:
%的python hyperopt進口fmin, tpe,惠普,試驗,STATUS_OK def火車(params):“”一個例子訓練方法,計算輸入的平方。該方法將被傳遞給“hyperopt.fmin ()”。:param參數:hyperparameters。它的結構是一致的搜索空間是如何定義的。見下文。:返回:dict字段“損失”(標量損失)和“狀態”(成功/失敗運行狀態)與mlflow”“”。start_run (run_name = inner_run,嵌套= True)運行:x =參數返回{“損失”:x * * 2,“狀態”:STATUS_OK}與mlflow.start_run (run_name = outer_run_with_sparktrials): spark_trials_run_id = mlflow.active_run () .info.run_id argmin = fmin (fn =火車,空間= search_space算法=藻類,max_evals = 16,試驗= spark_trials)
預期結果:
實際結果:
導致
Hyperopt的開源版本不支持所需的功能必須正常巢SparkTrials MLflow磚上運行。
解決方案
磚運行時對機器學習與附加功能包括一個內部叉Hyperopt。如果你想使用SparkTrials,您應該使用磚為機器學習,而不是運行時安裝Hyperopt手動從開源庫。