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

为何自定义mlflow PythonModel的predict方法报参数数量不匹配错误?

问题分析与解决

第三个参数是什么

第三个参数是context,它是mlflow提供的mlflow.pyfunc.PythonModelContext对象,包含模型加载时的上下文信息(比如模型存储路径、额外配置项等)。

错误原因

mlflow的PythonModel对其子类的predict方法有强制签名要求:必须定义为def predict(self, context, model_input)。当通过mlflow记录或加载模型后调用predict时,mlflow会自动传入三个参数:实例本身(self)、context对象、输入数据。而你的ModelWrapper中predict只定义了self和json_input两个参数,无法接收mlflow传入的context,因此触发TypeError。

直接调用predict时没问题,是因为你手动调用时只传了输入数据,没有传入context参数,符合自己定义的方法签名。

修复方案

修改predict方法的签名,添加context参数(即使不需要使用它,也要保留该参数位置):

class ModelWrapper(mlflow.pyfunc.PythonModel):
    def predict(self, context, json_input):
        # 保留原有的预测逻辑,context参数可直接忽略
        return your_prediction_logic(json_input)

修复后,mlflow就能正常调用predict方法,同时依赖捕获的警告也会自动消失——因为mlflow可以正常运行input_example来检测依赖了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 19:58:11