使用 Hyperopt 禁用自动记录标签到 MLflow

问题描述

我目前正在尝试在 Azure Databricks 上使用 Hyperopt 和 MLflow 进行超参数调整。在 Databricks 中使用默认跟踪 URI 没有错误,但在切换到本地(文件)MLflow 后端后,我遇到了一个烦人的问题。明确地说,我已经切换到:

mlflow.set_tracking_uri('file://dbfs/mnt/my_experiments/')

我运行以下代码块,用于使用 Hyperopt 和 SparkTrials 并行化运行:

with mlflow.start_run():

    trials = SparkTrials(parallelism=parallelism)
    fmin_objective = cross_validation_func

    best = fmin(
        fn=fmin_objective,space=search_space,algo=algo,trials=trials,max_evals=n_iters
    )

...并以错误告终:

Hyperopt 无法在跟踪 URI 处登录到 MLflow 服务器:file://dbfs/mnt/my_experiments/ 异常:标签值 {插入搜索空间} 的长度为 9393,超过了 5000 的长度限制

我开始明白这可以使用 Databricks MLflow 后端而不是本地后端,因为标签值大小有不同的限制(来自 https://www.mlflow.org/docs/latest/rest-api.html):

{tag value:} 正在记录的标签的字符串值。最大大小取决于存储后端。所有存储后端都保证支持最大 5000 字节的键值。此字段为必填项。

由于 MLflow 在运行 fmin() 时会自动记录搜索空间,我在这里很难找到解决方法。我曾尝试研究禁用 MLflow 自动记录此功能,但还没有运气。有什么提示吗?

编辑:或者我误解了 Hyperopt 应该如何与 SparkTrials 一起使用?它可以与本地 MLflow 后端一起使用吗?我尝试减小搜索空间的大小,虽然上面提到的错误消失了,但运行 fmin()algo = tpe.suggestalgo = rand.suggest 会导致奇怪的行为,并显示一条错误消息说此操作不是支持...

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...