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

AzureML中score.py无法读取同目录JSON文件,请求排查

解决AzureML推理端点无法读取同目录JSON文件的问题

核心原因

  • 运行时工作目录与脚本目录不匹配:os.getcwd()返回的是AzureML推理服务的默认工作目录(通常为/var/azureml-app),但你的model_adjustments.json实际部署路径可能并非此处,导致路径拼接错误。
  • 文件打包遗漏:若model_adjustments.json不在source_directory指定的目录下,部署时不会被包含到推理镜像中。

解决方案

1. 用脚本自身路径替代os.getcwd()

修改score.py中读取JSON文件的逻辑,通过__file__变量获取脚本的绝对路径,再拼接JSON文件路径,这是更可靠的方式:

def run(raw_data):
    try:
        # ... 其他原有代码 ...
        
        # 获取score.py所在的目录
        script_dir = os.path.dirname(os.path.abspath(__file__))
        json_file = os.path.join(script_dir, "model_adjustments.json")

        with open(json_file, "r") as fr:
            adjustments_dat = json.load(fr)  # 直接用json.load简化代码
        modelAdjustment = adjustments_dat[model_name]
        
        # ... 其他原有代码 ...
    except Exception as e:
        error = str(e)
        return {"debug": -1, "error": error}

2. 确认部署文件完整性

检查path_to_source指定的目录下,是否同时存在score.py和model_adjustments.json。部署时AzureML会打包该目录下所有文件(除.amlignore排除项),确保文件未被遗漏。

3. 性能优化:预加载JSON文件

避免每次请求都重复读取JSON文件,可在init函数中一次性加载数据并存入全局变量:

def init():
    global model, adjustments_dat
    # 预加载调整数据
    script_dir = os.path.dirname(os.path.abspath(__file__))
    json_file = os.path.join(script_dir, "model_adjustments.json")
    with open(json_file, "r") as fr:
        adjustments_dat = json.load(fr)

def run(raw_data):
    try:
        # ... 其他原有代码 ...
        modelAdjustment = adjustments_dat[model_name]
        # ... 其他原有代码 ...
    except Exception as e:
        error = str(e)
        return {"debug": -1, "error": error}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 10:15:40