Azure模型注册表加载ONNX模型报ONNXRuntime NoSuchFile错误
Azure模型注册表加载ONNX模型找不到文件的解决方案
问题根因
你收到的报错核心原因是路径匹配错误:
onnxruntime.capi.onnxruntime_pybind11_state.NoSuchFile: [ONNXRuntimeError] : 3 : NO_SUCHFILE : Load model from mnist.onnx failed:Load model mnist.onnx failed. File doesn't exist
Azure ML部署注册的模型时,会自动将模型下载到环境变量AZUREML_MODEL_DIR指向的专属目录,不会直接存放在score.py的同级目录,你直接写相对路径mnist.onnx无法定位到实际的模型文件。
修复方案
修改score.py代码,通过环境变量拼接模型的绝对路径即可,修改后的完整参考代码如下:
import os import onnxruntime def init(): global session # 读取Azure ML预设的模型存储根目录 model_root = os.getenv("AZUREML_MODEL_DIR") # 拼接得到模型的绝对路径 model_path = os.path.join(model_root, "mnist.onnx") session = onnxruntime.InferenceSession(model_path)
异常排查
如果修改后仍然报错,可以在init函数中增加调试逻辑确认路径:
- 打印
AZUREML_MODEL_DIR的实际值 - 打印该目录下的所有文件列表,确认模型文件名是否和注册时一致,是否存在嵌套子目录
如果注册模型时你上传的是包含模型文件的文件夹,需要在拼接路径时加上对应的文件夹层级,比如模型在注册文件夹的onnx_models/mnist.onnx下,就需要把路径拼接改为os.path.join(model_root, "onnx_models", "mnist.onnx")。
内容的提问来源于stack exchange,提问作者Rajan chawla
相关产品推荐
相关产品推荐

