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

MLflow训练完成后未记录或展示模型工件问题求助

问题排查与解决方案

1. 核心问题:日志操作不在MLflow Run上下文范围内

你的代码中,mlflow.log_metric、mlflow.sklearn.log_model等操作写在了with mlflow.start_run()代码块之外。MLflow的Run上下文结束后,后续的日志调用不会关联到已结束的Run,导致工件无法被正确记录到对应的实验运行中。

修正后的代码需将所有日志操作放入Run上下文内:

import mlflow
import pickle
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score

mlflow.set_tracking_uri("https://dagshub.com/<username>/<repo>.mlflow")
mlflow.set_experiment("default")

# 所有日志操作必须在with块内部
with mlflow.start_run():
    model = RandomForestClassifier(n_estimators=200, random_state=42)
    model.fit(X_train, y_train)
    y_pred = model.predict(X_test)
    
    acc = accuracy_score(y_test, y_pred)
    mlflow.log_metric("accuracy", acc)
    
    # 二选一即可
    mlflow.sklearn.log_model(model, "model")
    # pickle.dump(model, open("model.pkl", "wb"))
    # mlflow.log_artifact("model.pkl")

2. 版本兼容性问题

Python 3.12 和 scikit-learn 1.5 都是较新的版本,旧版MLflow可能存在兼容性问题:

  • MLflow从2.8.0版本开始正式支持Python 3.12,更早版本会导致工件保存/上传失败
  • scikit-learn 1.5 需要MLflow 2.10.0及以上版本的sklearn集成支持

执行以下命令升级MLflow到最新稳定版:

pip install --upgrade mlflow

3. DagsHub追踪URI格式错误

你提供的URI中包含多余的转义反斜杠\\\<username\>,正确格式应为:

mlflow.set_tracking_uri("https://dagshub.com/<username>/<repo>.mlflow")

错误的URI解析可能导致MLflow能记录指标,但无法正确上传工件到DagsHub存储服务。

4. 缺少DagsHub认证配置

虽然指标可以被记录,但工件上传需要有效的DagsHub认证。请确保已配置以下环境变量:

export DAGSHUB_USERNAME="<你的DagsHub用户名>"
export DAGSHUB_TOKEN="<你的DagsHub访问令牌>"

或者在代码中添加认证步骤:

mlflow.login()

(执行后会引导你完成DagsHub的认证流程)

5. 调试方法:开启MLflow日志排查细节

如果以上方法都无效,开启MLflow的调试日志,查看工件上传时的具体错误:

import logging
logging.basicConfig(level=logging.DEBUG)

运行代码后,查看控制台输出,重点关注与artifact上传相关的日志信息,比如权限错误、网络问题等。


内容的提问来源于stack exchange,提问作者shahar cohen

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 04:03:11