微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决使用 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 举报,一经查实,本站将立刻删除。