Azure ML:在模型部署期间包括其他文件
Posted
技术标签:
【中文标题】Azure ML:在模型部署期间包括其他文件【英文标题】:Azure ML: Include additional files during model deployment 【发布时间】:2020-08-31 07:44:26 【问题描述】:在我的 AML 管道中,我构建了一个模型并将其部署到 AciWebservice。我现在需要包含一些额外的数据,这些数据将被 score.py 使用。此数据采用 json 格式 (~1mb),并且特定于所构建的模型。为了实现这一点,我正在考虑将这个文件粘贴在 blob 存储中,并在部署期间更新 score.py 中的一些“占位符”变量,但这似乎很麻烦。
以下是我正在考虑但不确定实用性的一些选项
选项 1: 是否可以在模型部署期间包含此文件,使其成为 docker 映像的一部分?
选项 2: 我正在考虑的另一种可能性是,是否可以将这个 json 数据部分包含在模型工件中?
选项 3: 将其注册为数据集并将其拉入乐谱文件如何?
在模型部署场景中部署依赖文件的推荐方式是什么?
【问题讨论】:
【参考方案1】:有几种方法可以做到这一点:
将附加文件放在与模型文件相同的文件夹中,register 将整个文件夹作为模型。在这种方法中,文件与模型一起存储。
将文件放在本地文件夹中,并将该文件夹指定为InferenceConfig 中的source_directory。在这种方法中,每次部署新端点时都会重新上传文件。
使用 InferenceConfig 中的自定义基础映像将文件烘焙到 Docker 映像本身。
【讨论】:
【参考方案2】:为了扩展@Roope Astala - MSFT 的答案,您可以使用第二种方法来实现它
将文件放在本地文件夹中,并在 InferenceConfig 中将该文件夹指定为 source_directory。在这种方法中,每次部署新端点时都会重新上传文件。
假设这是你的文件结构。
.
└── deployment
├── entry.py
├── env.yml
└── files
├── data.txt
并且您想阅读entry.py
脚本中的files/names.txt
。
这就是您在entry.py
中的阅读方式:
file_path = 'deployment/files/data.txt'
with open(file_path, 'r') as f:
...
这就是您设置部署配置的方式。
deployment_config = AciWebservice.deploy_configuration(cpu_cores = 1, memory_gb = 1)
inference_config = InferenceConfig(
runtime='python',
source_directory='deployment',
entry_script='entry.py',
conda_file='env.yml'
)
【讨论】:
如果我需要在部署后稍后编辑entry.py而不更改restendpoint怎么办。 @vishal 您可以在Model.deploy
方法中使用overwrite=True
。见docs.microsoft.com/en-us/python/api/azureml-core/…以上是关于Azure ML:在模型部署期间包括其他文件的主要内容,如果未能解决你的问题,请参考以下文章
在 azure ml 部署环境中导入自定义 python 模块
从 DatabricksStep 注册 Azure ML 模型