You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure ML部署模型通过InferenceConfig引入额外文件找不到报错咨询

Azure ML 模型部署时找不到额外pkl文件的解决方案

该错误的本质是部署镜像的运行环境中,无法通过你写的相对路径找到mypickle.pkl文件,可按以下步骤排查解决:

  • 第一步:修正score.py中的文件读取逻辑
    你当前将pkl读取逻辑写在run()方法中是不合理的,run()会在每次接口请求时执行,会导致重复读取文件、接口响应变慢,应该把文件加载逻辑放到init()方法中,服务启动时仅加载一次。
    其次不要使用./这类相对路径读取文件,部署后进程工作目录和score.py所在目录可能不一致,需通过脚本绝对路径拼接文件路径,参考代码如下:
    import os
    import pandas as pd
    
    # 全局变量存储加载后的pkl数据
    df = None
    
    def init():
        global df
        # 获取当前score.py文件的所在目录绝对路径
        script_dir = os.path.dirname(os.path.abspath(__file__))
        pkl_path = os.path.join(script_dir, "mypickle.pkl")
        df = pd.read_pickle(pkl_path)
    
    def run(raw_data):
        # 直接使用已经加载的df做数据清洗
        # 后续业务逻辑保持不变
    
  • 第二步:确认source_directory下存在目标文件
    你配置的source_directory="./"指的是运行部署代码的Notebook的工作目录,不是Notebook文件本身的存储目录,你可以在运行部署代码前,在Notebook中执行!ls ./命令,确认输出列表中包含mypickle.pkl和score.py两个文件。如果不存在,可以将source_directory的值修改为两个文件所在的绝对路径,比如source_directory="/Users/myname/myfolder"。
  • 第三步:可选的规范实现方案
    更推荐将额外依赖的pkl文件和模型文件一起注册为Azure ML模型资产,部署时会自动将模型相关的所有文件打包到镜像中,在init()方法中通过Model.get_model_path()方法获取文件路径即可,无需手动管理打包逻辑。
  • 第四步:排查文件打包情况
    如果完成以上操作后仍报错,可以临时在init()方法中加入打印逻辑print(os.listdir(script_dir)),重新部署后拉取Endpoint的运行日志,查看镜像中score.py所在目录下的文件列表,确认mypickle.pkl是否被正常打包到镜像中。

内容的提问来源于stack exchange,提问作者user12038164

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 09:54:04