MLflow未写入Databricks指定共享实验,默认写入本地mlruns目录
问题分析与解决方案
核心问题排查
- 代码参数误用:你调用
get_experiment_by_name时传入了'experiment_id',但该方法是按实验名称查询,而你已经持有experiment_id,应该用client.get_experiment(experiment_id)直接获取实验对象。 - 跟踪URI未关联工作区:如果代码运行环境未绑定Databricks工作区的MLflow服务,MLflow会默认以本地模式写入
mlruns文件夹。 - 实验权限未开放:需确保共享实验已为所有用户配置写入权限。
修正后的代码示例
import mlflow from mlflow.tracking import MlflowClient # Databricks环境下会自动关联工作区跟踪URI,外部环境需显式设置: # mlflow.set_tracking_uri("databricks") client = MlflowClient() # 替换为你的真实实验ID experiment_id = "xxx" experiment = client.get_experiment(experiment_id) # 验证实验信息 print("名称: {}".format(experiment.name)) print("实验ID: {}".format(experiment.experiment_id)) print("存储位置: {}".format(experiment.artifact_location)) print("生命周期状态: {}".format(experiment.lifecycle_stage)) # 启动运行并写入日志,with语句会自动结束运行 with mlflow.start_run(experiment_id=experiment.experiment_id): mlflow.log_param('test', 1) mlflow.log_param('test2', 2) mlflow.log_param('test3', 3)
额外配置说明
- 权限配置:在Databricks工作区找到该共享实验,进入详情页点击「权限」,添加所有用户(或对应用户组)并授予「可编辑」权限,确保用户能写入日志。
- 外部环境适配:如果在非Databricks环境运行代码,需先完成Databricks CLI认证,再设置跟踪URI为
databricks,确保连接到工作区MLflow服务。
内容的提问来源于stack exchange,提问作者Samarth D M
相关产品推荐
相关产品推荐

