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

使用mlflow.spark.log_model记录ALS模型时input_sample参数报错求助

解决MLflow Spark日志ALS模型时sample_example触发MLeap依赖错误的问题

问题原因

当你向mlflow.spark.log_model传入sample_example参数时,MLFlow会自动尝试启用MLeap flavor来序列化模型和示例数据,但Databricks Runtime 15.3默认未预装MLeap库,因此触发ModuleNotFoundError: No module named 'mleap'错误。

解决方案

1. 安装MLeap依赖(原生支持sample_example)

直接在Databricks Notebook中安装MLeap,即可正常使用sample_example参数:

%pip install mleap

安装完成后,原代码中sample_example = df_train.limit(20)的写法可以直接生效,无需修改数据格式。注意:ALS模型在Spark 3.5环境下与MLeap兼容,不会出现兼容性问题。

2. 优化现有字典转换方案

你当前使用的input_example=df_train.limit(20).toPandas().to_dict(orient="records")是完全可行的,且无需引入额外依赖。MLFlow会将字典格式的输入示例存储为JSON,在模型UI中可正常展示和测试。
若想简化转换步骤,也可以直接用Spark原生API处理:

import json
# 取单条样本转为字典(若需多条可循环处理)
input_example = json.loads(df_train.limit(1).toJSON().collect()[0])

3. 手动记录样本数据(跳过示例参数)

如果不需要在MLFlow模型UI中直接测试示例,可去掉sample_example/input_example参数,改用mlflow.log_artifact手动保存样本:

# 将样本保存为CSV并上传到MLFlow artifacts
df_train.limit(20).write.mode("overwrite").csv("/tmp/training_sample.csv", header=True)
mlflow.log_artifact("/tmp/training_sample.csv", "training_samples")

最优方案选择

  • 若需要保留sample_example的原生Spark DataFrame支持,优先选择安装MLeap依赖,这是最贴合MLFlow设计的方式。
  • 若不想引入额外依赖,你的字典转换方案已经是最优选择,既满足输入示例的展示需求,又避免了MLeap的依赖问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 23:37:03