Azure ML实时推理管道无Web服务输入及端点Schema缺失求助
解决Azure ML实时推理管道无输入Schema问题的可行方案
检查推理脚本的输入定义
- 确保
score.py里的init()和run()函数明确定义输入格式:- 在
run()函数中显式解析输入结构,明确指定每个输入字段的类型,示例代码:def run(input_data): import json data = json.loads(input_data) # 明确列出输入字段 features = [data["col1"], data["col2"], data["col3"]] # 后续预测逻辑处理 result = {"prediction": model.predict([features])[0]} return result - 若用MLflow打包模型,训练时必须记录输入签名(
signature),示例:from mlflow.models.signature import infer_signature signature = infer_signature(X_train, y_train) mlflow.sklearn.log_model(model, "model", signature=signature)
- 在
重新构建推理管道的输入组件
- 删除手动添加的输入,改用带完整Schema的Dataset或TabularDataset作为管道输入源,确保数据集字段与模型输入完全匹配。
- 若需自定义输入结构,用
PythonScriptStep封装输入处理逻辑,在步骤中通过InputPortBinding明确指定输入Schema。
验证管道的输入输出映射
- 检查管道中各组件的端口连接:确保模型组件的输入端口与上游输入组件的输出端口正确绑定,无断开或未映射情况。
- 确认
WebServiceInput已绑定到正确的组件输出,未跳过输入步骤。
重新生成并部署管道
- 删除现有管道和端点,按以下步骤重新操作:
- 重新构建推理管道,严格关联输入组件与模型组件。
- 生成实时推理端点时,启用Schema自动生成选项(若存在)。
- 部署完成后,先通过Azure ML Studio的测试功能输入符合Schema的数据验证预测结果,再查看
consume部分的Schema是否自动填充。
检查环境依赖与模型打包
- 确保模型打包时包含完整依赖文件(
conda.yml或requirements.txt),需包含处理数据Schema的库(如pandas、jsonschema)。 - 注册模型时上传完整文件夹,包含
score.py和依赖文件,避免仅上传模型文件的简化打包方式。
内容的提问来源于stack exchange,提问作者Shubhra Jain
相关产品推荐
相关产品推荐

