在Databricks用dbx提交任务时遇mlflow.sklearn无eval_and_log_metrics属性错误
解决
mlflow.sklearn无eval_and_log_metrics属性的问题 核心原因
你遇到的问题本质是运行代码的环境中MLflow版本低于1.30.0。虽然1.30.0的官方文档包含eval_and_log_metrics函数,但该函数是在MLflow 1.26.0版本才新增的,若环境中的MLflow版本低于这个版本,就会触发该属性错误。
排查与解决步骤
1. 确认当前环境的MLflow版本
在Databricks集群中运行以下代码,查看实际使用的MLflow版本:
import mlflow print(mlflow.__version__)
如果输出版本低于1.30.0,就需要进行升级。
2. 升级MLflow版本
根据你使用的dbx提交方式,选择对应的升级方案:
方案一:通过requirements.txt指定版本
在项目根目录的requirements.txt文件中添加:
mlflow>=1.30.0
确保dbx部署任务时会安装指定版本的MLflow。
方案二:在Databricks集群中手动安装指定版本
进入集群的库页面,选择安装PyPI包,输入mlflow==1.30.0(或更高兼容版本),等待安装完成后重新提交任务。
方案三:通过dbx配置文件指定依赖
如果使用dbx的配置文件(如deploy.json或conf/deployment.yml),可在任务配置中添加依赖声明:
tasks: - task_key: model_train spark_python_task: python_file: "path/to/your/train_script.py" libraries: - pypi: package: "mlflow>=1.30.0"
3. 验证升级结果
重新提交任务前,再次运行步骤1的代码确认版本已升级到1.30.0及以上,再执行任务即可解决该错误。
内容的提问来源于stack exchange,提问作者zacharyclement
相关产品推荐
相关产品推荐

