使用curl将数据传递到已建立的mlflow模型时遇到问题

问题描述 投票:0回答:2

我正在关注 mlflow 文档保存和服务模型(https://www.mlflow.org/docs/latest/quickstart.html),并在尝试将数据传递到已建立的模型时遇到问题。

命令:

python sklearn_logistic_regression/train.py

mlflow 模型服务 -m 运行://model

curl -d '{"columns":["x"], "data":[[1], [-1]]}' -H '内容类型:application/json;格式=pandas-split' -X POST localhost:5000/调用

错误:此预测器仅支持以下内容类型,['text/csv', 'application/json', 'application/json;格式=pandas-records', 'application/json;格式=pandas-split', 'application/json-numpy-split']。得到'application/x-www-form-urlencoded'.curl:

python curl mlflow
2个回答
2
投票

将引号从

'
更改为
"
为我解决了这个问题:

curl -d "{\"columns\":[0],\"index\":[0,1],\"data\":[[1],[-1]]}" -H "Content-Type: application/json"  localhost:5000/invocations


0
投票

mlflow > 2.0 的更新(用嵌套转义双引号感谢 MMLovelace 的答案):

curl -d "{\"columns\":[0],\"index\":[0,1],\"data\":[[1],[-1]]}" -H "Content-Type: application/json"  localhost:5000/invocations

{"error_code": "BAD_REQUEST", "message": "输入必须是 JSON 恰好具有输入字段之一的字典 {'dataframe_split', 'dataframe_records'、'实例'、'输入'}。收到字典 输入字段:[]。重要提示:MLflow 模型评分协议具有 MLflow 2.0 版中进行了更改。如果您看到此错误,那么您是 可能使用过时的评分请求格式。要解决该错误, 更新您的请求格式或调整您的 MLflow 模型 需求文件来指定旧版本的 MLflow(例如, 将“mlflow”要求说明符更改为“mlflow==1.30.0”)。如果你 正在使用 MLflow 客户端发出请求(例如通过

mlflow.pyfunc.spark_udf()
),将您的 MLflow 客户端升级到某个版本

= 2.0 以使用新的请求格式。有关 MLflow 2.0 中更新的 MLflow 模型评分协议的更多信息,请参阅 https://mlflow.org/docs/latest/models.html#deploy-mlflow-models。”}

您必须使用指定的确切字段。就我而言,通过一个包含列表的玩具示例,我可以使用以下内容:

curl -d "{\"inputs\":[[0.09178,0.0,4.05,0.0,0.51,6.416,84.1,2.6463,5.0,296.0,16.6,395.5,9.04]]}" -H "Content-Type: application/json"  http://127.0.0.1:5000/invocations

在需要数据帧的更复杂的情况下,我可以通过以下方式做到这一点:

curl -d "{\"inputs\":{\"dayofyear\":[1,2,3], \"hour\":[1,2,3], \"dayofweek\":[1,2,3], \"quarter\":[1,2,3], \"month\":[1,2,3], \"year\":[1,2,3]}}" -H "Content-Type: application/json"  http://127.0.0.1:5000/invocations

{“预测”:[12695.537109375, 12193.8173828125, 12634.658203125]}

© www.soinside.com 2019 - 2024. All rights reserved.