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

使用mlflow与sklearn记录模型时出现多个artifact路径问题

MLflow记录模型时出现双模型文件夹问题说明

复现场景

使用MLflow记录Logistic Regression的参数与artifact时,模型训练完成后在MLflow UI的工件列表中看到两个独立文件夹:一个为默认命名的model文件夹,另一个为手动设置路径的自定义模型文件夹。
复现代码如下:

model = LogisticRegression()

mlflow.set_tracking_uri('file:///artifacts')
mlflow.set_experiment('test')
mlflow.autolog()

with mlflow.start_run(run_name=run_name) as run:
   model.train(X_train, y_train)
   mlflow.sklearn.log_model(model, 'logreg')

注:scikit-learn的LogisticRegression模型训练接口为fit(),上述代码中的model.train()为笔误。

问题原因

出现双文件夹是自动日志和手动日志重复记录模型导致的:

  • 开启mlflow.autolog()后,scikit-learn框架的适配逻辑会在模型训练完成时,自动将训练好的模型以model为默认artifact路径完成记录,无需手动调用模型记录接口。
  • 代码中额外手动调用mlflow.sklearn.log_model(model, 'logreg'),指定logreg为自定义artifact路径再次记录模型,最终就会在UI中展示两个独立的模型存储文件夹。

解决方案

根据实际需求二选一即可:

  • 不需要自定义模型存储路径:直接删除手动调用的mlflow.sklearn.log_model()代码,依赖autolog完成全量记录即可,最终UI中仅会展示默认的model文件夹。
    参考代码:
    model = LogisticRegression()
    
    mlflow.set_tracking_uri('file:///artifacts')
    mlflow.set_experiment('test')
    mlflow.autolog()
    
    with mlflow.start_run(run_name=run_name) as run:
       model.fit(X_train, y_train)
    
  • 需要使用自定义路径存储模型:在初始化autolog时关闭自动记录模型的开关,避免自动生成默认model文件夹,仅保留手动记录的自定义路径模型。
    参考代码:
    model = LogisticRegression()
    
    mlflow.set_tracking_uri('file:///artifacts')
    mlflow.set_experiment('test')
    # 关闭自动模型记录,仅自动记录参数、指标等内容
    mlflow.autolog(log_models=False)
    
    with mlflow.start_run(run_name=run_name) as run:
       model.fit(X_train, y_train)
       mlflow.sklearn.log_model(model, 'logreg')
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 14:01:13