自定义Python脚本部署为Azure端点:scoring.py及MLflow模型问题
修正后的scoring.py代码及问题解析
问题分析
你的scoring.py存在几个关键问题:
- 缺少必要的模块导入(如
json、pandas,以及mlflow、os) - 未对传入的
raw_data(JSON格式字符串)进行解析 - 输入数据格式不符合MLflow模型的预期要求
- 返回结果未做序列化处理,无法被Azure端点正确返回
可行的scoring.py代码
import os import json import pandas as pd import mlflow.pyfunc def init(): global model # 加载模型,AZUREML_MODEL_DIR是Azure自动设置的模型根目录 model_path = os.path.join(os.getenv("AZUREML_MODEL_DIR"), "model") model = mlflow.pyfunc.load_model(model_path) def run(raw_data): # 解析JSON格式的输入数据 data = json.loads(raw_data) # 将数据转换为模型可接受的格式(这里模型接受单个数值,转为DataFrame) # 适配两种常见输入情况:单个值或带键的字典 if isinstance(data, dict): input_value = data.get("value") df = pd.DataFrame([input_value], columns=["input"]) else: df = pd.DataFrame([data], columns=["input"]) # 执行预测 predictions = model.predict(df) # 将结果转为可序列化的格式返回 return {"prediction": float(predictions[0])}
额外说明
- 测试端点时,输入格式要匹配代码逻辑:
- 可使用
{"value": 4}作为输入,返回{"prediction": 16} - 若需直接接受纯数值输入(如
4),可调整代码中数据转换的逻辑
- 可使用
- 部署时要确保环境包含
mlflow、pandas依赖,需将这些包的版本添加到环境配置文件中
内容的提问来源于stack exchange,提问作者Abhishek Sharda
相关产品推荐
相关产品推荐

