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

在Databricks中使用MLflow出现空实验运行,无法获取模型

问题分析

你的代码仅完成了模型训练,但未通过MLflow将模型、训练参数、数据集等信息**记录到实验运行(Run)**中,因此在Databricks的MLflow界面看不到对应的模型和数据集条目。

解决步骤

1. 记录训练超参数

在MLflow Run中记录关键超参数,便于后续实验复现和对比:

mlflow.log_param("max_iter", iter_max)
mlflow.log_param("C", CC)

2. 保存训练好的模型

使用mlflow.sklearn.log_model()将Pipeline模型存入MLflow,这是生成模型条目并支持后续注册的核心操作:

mlflow.sklearn.log_model(
    sk_model=text_clf,
    artifact_path="text-classification-model",
    registered_model_name="Text-Classifier"  # 可选:直接注册到模型仓库,无需手动注册可保留
)

若想后续手动注册,移除registered_model_name参数即可,先将模型保存到Run的artifact中。

3. 可选:追踪数据集信息

如果需要记录数据集相关信息,可添加指标记录或上传数据集文件(大文件建议记录路径/版本而非直接上传):

# 记录数据集基础指标
mlflow.log_metric("train_samples", len(X_train))
mlflow.log_metric("train_feature_num", X_train.shape[1] if hasattr(X_train, 'shape') else "Unknown")

# 上传数据集文件(示例,根据实际存储路径调整)
# mlflow.log_artifact("train_data.parquet", artifact_path="datasets")

4. 完整修改代码

iter_max = 100
CC = 1
save_model = True  # 启用模型保存
with mlflow.start_run(run_name=run_name, experiment_id=experiment.experiment_id, nested=True) as run:
    # 记录超参数
    mlflow.log_param("max_iter", iter_max)
    mlflow.log_param("C", CC)
    
    # 训练模型
    text_clf = Pipeline([
        ('vect', CountVectorizer()),
        ('tfidf', TfidfTransformer()),
        ('clf', LogisticRegression(max_iter=iter_max, C=CC))
    ])
    text_clf.fit(X_train, y_train)
    
    # 保存并注册模型
    mlflow.sklearn.log_model(
        sk_model=text_clf,
        artifact_path="text-classification-model",
        registered_model_name="Text-Classifier"
    )
    
    # 记录数据集指标
    mlflow.log_metric("train_samples_count", len(X_train))
    
    run_id = mlflow.active_run().info.run_id

5. Databricks中模型的注册与使用

  • 若代码中使用了registered_model_name,运行后模型会直接出现在Databricks的模型仓库(Model Registry),可手动将其切换到Staging或Production环境。
  • 若未使用该参数,进入MLflow实验的Run详情页,找到Models板块下的模型,点击Register Model完成注册。
  • 加载已注册模型进行预测:
# 加载生产环境的模型
model = mlflow.sklearn.load_model("models:/Text-Classifier/Production")
# 执行预测
predictions = model.predict(X_test)

内容的提问来源于stack exchange,提问作者Daniel Castro Hernandez

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 23:20:14