在线服务运行中但是预测失败时,如何排查报错是不是模型原因导致的
问题现象
在线服务启动后,当在线服务进入到“运行中”状态后,进行预测,预测请求发出后,收到的响应不符合预期,无法判断是不是模型的问题导致的不符合预期。
原因分析
在线服务启动后,ModelArts提供两种方式的预测:
- 方式1:在ModelArts的Console的预测页签进行预测;
- 方式2:在ModelArts的Console的调用指南页签获取到调用地址,然后通过cURL或者Postman等工具进行预测。
无论是方式1还是方式2,当推理请求发送出去后都有可能收到不符合预期的推理结果。
推理请求经过一系列传递后最终是会进入到模型服务中,模型服务可能是以自定义镜像的方式导入的,可能是因为模型服务在处理推理请求时候出现了问题导致结果不符合预期,能准确判断出来是否是在模型服务中出的问题对于快速解决问题帮助很大。
处理方法
不管是用方式1还是方式2,要判断是否是模型服务返回的不合预期的结果都需要获取到本次推理请求的response header及response body。
- 如果是方式1,可以通过浏览器的开发者工具获取到推理请求的response信息。以Chrome浏览器为例,可以使用快捷键F12打开开发者工具,然后选择“Network”页签,再单击“预测”,可以在Network页签窗口中看到本次推理请求的response信息如下图。
图1 推理请求的response信息
在name栏找到推理请求,其中推理请求的URL包含“/v1/infers”的关键字,可以在header栏中的url看到完整url,分别在Headers页签及Response页签中查看response的信息。
- 如果是方式2可以根据不同的工具查看response header及body信息,比如CURL命令可以通过-I选项查看response header。
如果查看到的response header中Server字段为ModelArts且response body中没有显示ModelArts.XXXX的错误码,此时收到的response信息为模型服务返回的response信息,如果不符合预期,可以判断为模型服务返回的结果不符合预期。
建议与总结
鉴于模型服务有从对象存储服务(OBS)中导入,从容器镜像中导入,从AI Gallery中获取等多种途径,对于上述不同模型服务的来源所产生的常见问题及处理方法建议如下:
- 从容器镜像中导入:由于此种方式镜像为用户完全自定义的镜像,错误原因会因自定义镜像的不同而不同,建议查看模型日志确定错误原因。
- 从对象存储服务(OBS)中导入:如您收到的返回是MR系列错误码,如MR.0105,请查看在线服务详情页面的日志页签查看对应的错误日志。
- 从AI Gallery中获取:请咨询该模型在AI Gallery中的发布者。