首页 > 解决方案 > 在模型部署期间包含其他文件(第 2 部分)

问题描述

由于我们不应该对已回答的问题提出问题,因此我将在此处发布此附加问题。它引用了此处找到的问题/答案: Azure ML:在模型部署期间包含其他文件

问题:在我的评分脚本中,我需要在调用模型之前引用文件中的数据以进行额外的数据处理。

该链接中引用的选项#2(使用 InferenceConfig 将文件夹指定为源目录)似乎是我需要的。但是,当我尝试访问评分脚本中包含的文件时,我收到一条错误消息,指出该文件不存在。我相信我做错了什么,但我不确定是什么。

我的工作严格在 Azure ML Studio 中进行。
我有一个目录,可以在其中找到我的评分脚本和我想要包含的 pickle 文件。这也是 Jupyter Notebook 脚本推动这些东西的创建的地方。路径看起来像这样:Users->myname->myfolder

评分脚本名为 score.py。pickle 文件是 mypickle.pkl。

score.py 中的代码来读取文件。此代码可在 run() 方法中找到。

filename="./mypickle.pkl"
df = pd.read_pickle(filename)

InferenceConfig 调用:

inference_config = InferenceConfig(
environment=environment,
source_directory="./",
entry_script="./score.py"
)

模型部署良好,但在测试部署的模型(又名端点)时,我收到错误“[Errno 2] No such file or directory: 'mypickle.pkl'”

想法?

标签: azureml

解决方案


FWIW,我在浏览模型部署创建的容器(在 Azure 门户中)时找到了答案。

有一个值 AZUREML_SOURCE_DIRECTORY 包含存储 source_directory 文件的路径。

因此,不要在评分脚本中使用此代码

filename="./mypickle.pkl"
df = pd.read_pickle(filename)

应该是这段代码。

path = os.getenv('AZUREML_SOURCE_DIRECTORY') 
filename = os.path.join(path, 'mypickle.pkl')
df = pd.read_pickle(filename)

推荐阅读