如何在本地正确启动 MLflow 跟踪服务器并创建实验

10次阅读

如何在本地正确启动 MLflow 跟踪服务器并创建实验

本文详解解决“cannot define a mlflow experiment”错误的核心方法:必须先启动本地 mlflow 后端服务器,否则 `mlflow.set_experiment()` 会因无法连接追踪 uri 而抛出连接拒绝异常。

当你在代码中调用 mlflow.set_tracking_uri(“http://127.0.0.1:8080”) 和 mlflow.set_experiment(“MLflow Quickstart”) 却遇到类似以下报错:

MlflowException: API request to http://127.0.0.1:8080/api/2.0/mlflow/experiments/get-by-name failed... Caused by NewConnectionError(... [winError 10061] Aucune connexion n’a pu être établie car l’ordinateur cible l’a expressément refusée)

并非认证或权限问题,而是最基础的连接前提未满足:你尚未启动 MLflow 跟踪服务器

MLflow 的 set_tracking_uri 指向的是一个运行中的 HTTP 服务端点(即后端),它负责接收日志、管理实验与运行。若该服务未启动,客户端(你的 python 脚本)自然无法建立连接——就像试图访问一个未开启的网站。

✅ 正确操作流程如下:

  1. 在终端(非 Python 环境)中启动 MLflow 服务器

    mlflow server --host 127.0.0.1 --port 8080 --backend-store-uri sqlite:///mlflow.db --default-artifact-root ./mlruns
    • –host 和 –port 需与代码中 set_tracking_uri 的地址严格一致;
    • –backend-store-uri 指定元数据存储(推荐 SQLite 快速起步);
    • –default-artifact-root 指定模型/图表等二进制文件的本地保存路径。
  2. 保持该终端持续运行(服务器进程需常驻),再执行你的 Python 脚本。

  3. 验证服务是否就绪:打开浏览器访问 http://127.0.0.1:8080,应能看到 MLflow UI 界面(含“Experiments”标签页)。

? 补充说明:

  • 不要尝试在 jupyteride 的 Python 控制台中直接运行 mlflow server 命令(它会阻塞线程且无法后台运行);
  • 端口被占用,可更换端口(如 –port 5000),并同步更新代码中的 URI;
  • 初次运行时,mlflow.set_experiment(…) 会自动创建同名实验(无需手动初始化);
  • 使用 SQLite 时,请确保 mlflow.db 所在目录有写入权限;生产环境建议切换为 postgresqlmysql

完成上述步骤后,你的原始代码即可正常运行:

import mlflow mlflow.set_tracking_uri("http://127.0.0.1:8080") mlflow.set_experiment("MLflow Quickstart")  # ✅ 成功创建/获取实验  with mlflow.start_run():     mlflow.log_param("alpha", 0.5)     mlflow.log_metric("accuracy", 0.92)

总结:MlflowException: Failed to establish a new connection 是典型的“服务未启动”信号,而非配置或权限错误。先启服务,再写代码,是本地使用 MLflow 跟踪功能不可跳过的第一步。

text=ZqhQzanResources