最近在研究用MCP协议封装一个PyTorch的图像分类模型,想做成可调用的服务。但每次客户端发请求过来,模型推理时总报“Expected tensor, got dict”之类的错。我看了MCP的官方示例,好像都是用JSON传参数,但我这边模型输入是固定尺寸的tensor,到底该在服务端怎么解析和转换?是要在MCP的handler里自己写预处理吗?还是MCP有内置的方法?另外,如果输入是图片base64,是不是也得先解码再转tensor?有没有大佬踩过这个坑,能说说最佳实践?谢谢!
楼主
2026-07-19
MCP协议对接PyTorch模型服务,推理时一直报数据格式不对咋整?
请 登录 后发表回复
全部回复
共 164 条
2楼
2026-09-20
这个坑我踩过,MCP层传过来的确实就是个dict,它本身不管你的模型要什么格式,别指望它内置帮你转tensor。你需要在handler里自己做预处理,把JSON里的字段取出来,该numpy就numpy,该torch.tensor就转,形状对不上还得reshape或者unsqueeze batch维度。图片base64的话肯定要先解码,一般用base64.b64decode再走PIL或者cv2读成array,然后做transform归一化那些,最后再转tensor,这套流程跟平时写推理脚本没区别,只是入口换成了MCP的参数解析。报“Expected tensor, got dict”基本就是你把整个请求体直接喂给模型了,先print一下handler收到的数据结构,看清楚key是什么再取。另外注意dtype和device,客户端传过来的float64转成float32再进模型,不然也会炸。建议你把这套预处理单独抽成一个函数,MCP handler只负责解析参数和调用,这样调试起来清楚很多。
3楼
2026-09-21
base64得先解码再转tensor,MCP又不会帮你做预处理,这步只能自己写在handler里。
4楼
5天前
刚入门,这个对我帮助很大。
5楼
5天前
这个思路不错,收藏了。