You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MLFlow实验追踪报错:No such file or directory问题排查与解决

问题分析与解决方案

这个FileNotFoundError是MLFlow写入运行元数据时找不到对应目录导致的,核心原因是路径配置不当或手动干预了MLFlow的自动目录生成流程,以下是具体修正方案:

1. 移除手动创建mlruns目录的代码

MLFlow会自动根据追踪URI生成所需目录结构,手动提前创建mlruns可能导致目录权限或结构不匹配,直接删除这行代码:

# 删除此行,无需手动创建
# Path("mlruns").mkdir(parents=True, exist_ok=True)

2. 修正追踪URI的格式

Windows环境下file:mlruns的路径解析容易出问题,推荐使用绝对路径或标准file URI格式:

import os
# 绝对路径方案(推荐,避免工作目录差异问题)
mlflow.set_tracking_uri(f"file:///{os.path.abspath('mlruns').replace(os.sep, '/')}")

# 相对路径方案(仅Linux/macOS更稳妥,Windows优先用绝对路径)
# mlflow.set_tracking_uri("file:./mlruns")

3. 简化实验创建流程(更稳妥)

手动调用MlflowClient.create_experiment偶尔会和mlflow.start_run的自动逻辑冲突,建议改用mlflow.set_experiment自动创建并切换实验:

EXPERIMENT_NAME = "你的实验名称"
# 自动创建实验(不存在时)并切换
mlflow.set_experiment(EXPERIMENT_NAME)
# 给实验添加标签
client = mlflow.MlflowClient()
experiment = client.get_experiment_by_name(EXPERIMENT_NAME)
client.set_experiment_tag(experiment.experiment_id, "author", "me")

4. 修正后的完整代码示例

import mlflow
import os

# 配置追踪URI(绝对路径版本)
mlflow.set_tracking_uri(f"file:///{os.path.abspath('mlruns').replace(os.sep, '/')}")

# 配置实验
EXPERIMENT_NAME = "test_experiment"
mlflow.set_experiment(EXPERIMENT_NAME)
# 添加实验标签
client = mlflow.MlflowClient()
experiment = client.get_experiment_by_name(EXPERIMENT_NAME)
client.set_experiment_tag(experiment.experiment_id, "author", "me")

# 运行实验并记录图表
with mlflow.start_run(run_name="foobar", description="Lorem Ipsum dolor sit amet") as run:
    # 假设fig是你创建的matplotlib/seaborn等图表对象
    mlflow.log_figure(fig, "figure_name.png")

额外排查点

  • 检查Jupyter当前工作目录:执行os.getcwd()确认是否在预期目录,避免MLFlow在错误路径创建mlruns。
  • 确认目录写入权限:Linux/macOS检查当前用户对工作目录的写入权限;Windows避免在系统目录(如C:\Program Files)运行Notebook。

内容的提问来源于stack exchange,提问作者João Areias

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 03:41:42