當在Hyperopt中啟用SparkTrials時,運行不是嵌套的
問題
SparkTrials是Hyperopt這使得運行可以分配給Spark的工作人員。
當您開始運行MLflow時嵌套= True
在工作者函數中,結果應該嵌套在父運行下。
有時結果是不正確嵌套在父運行下,即使你運行SparkTrials與嵌套= True
在工作者函數中。
例如:
從hyperopt進口fmin,山丘,惠普,試用,STATUS_OKdef火車(參數個數):"""一個計算輸入平方的示例訓練方法。這個方法將被傳遞給' hyperopt.fmin() '。: param參數:hyperparameters。它的結構與搜索空間的定義一致。見下文。:return: dict帶有字段'loss'(標量丟失)和'status'(運行的成功/失敗狀態)"""與mlflow.start_run(run_name=“inner_run”,嵌套的=真正的)作為運行:x,=參數個數返回{“損失”:x**2,“狀態”:STATUS_OK}與mlflow.start_run(run_name=“outer_run_with_sparktrials”):spark_trials_run_id=mlflow.active_run().信息.run_idargmin=fmin(fn=火車,空間=search_space,算法=算法,max_evals=16,試用=spark_trials)
預期結果:
實際結果: