微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

部署模型时,在Azure ml输入脚本中导入数据和python脚本

如何解决部署模型时,在Azure ml输入脚本中导入数据和python脚本

我在本地系统上保存了一个现有的机器学习模型。我想将此模型部署为Web服务,以便可以将该模型用作请求-响应,即,向模型发送HTTP请求并获取预测的响应。

尝试在AzureML上部署此模型时,我遇到了一些问题

需要在init()函数的入口脚本中初始化模型,但是要初始化我的模型,我有一个自定义类,需要加载一些txt文件

下面是初始化模型对象的代码

from model_file import MyModelClass  # this is the file which contains the model class

def init():
  global robert_model

  my_model = MyModelClass(vocab_path='<path-to-text-files>',model_paths=['<path-to-model-file>'],iterations=5,min_error_probability=0.0,min_probability=0.0,weigths=None)
def run(json_data):
  try:
    data = json.loads(json_data)
    preds,cnt = my_model.handle_batch([sentence.split()])
    return {'output': pred,'count': cnt}
  except Exception as e:
    error = str(e)
    return error

我不知道如何在输入脚本中导入那些类文件和文本文件

我对天蓝色的了解不多,我很难弄清楚这一点。请帮忙。

解决方法

我找到了解决方法:

那里的解决方案我只需要阅读官方文档中的更多内容。下面,我解释了解决问题的方法。

在Azure Machine Learning Studio上部署模型时,我们必须准备三件事:

  1. Entry Script 是进行预测的实际python脚本。

  2. 可以想到
  3. Deployment Configuration 可以在其中运行模型的计算机。

  4. Inference Configuration 定义模型的软件依赖关系。在这里,我们还可以提供文本/静态文件。

inferece_config接受一个名为source_directory的参数。我们可以提供指向 source_directory 参数的文件夹的路径,如下所示:

inference_config = InferenceConfig(entry_script="<entry-script.py>",environment=myenv,source_directory="<path-to-your-folder>")

我们可以将所有需求放在此文件夹中,包括文本,静态,csv,python脚本等文件。 输入脚本也必须放在此文件夹中。 该文件夹将通过azure直接复制到创建的部署映像中。这样,我们可以使用常规python语法在 entry脚本中访问这些文件。

对于我的解决方案:

如果我有这样的inference_config

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

并将其保存在./assets文件夹中

>assets
  >data
    >vocaublary.txt
  >my_model_class.py
  >score.py

然后我的输入脚本( score.py )将如下所示:

from assets.my_model_class import MyModelClass
    
def init():
  global my_model
  model_path = os.path.join(os.getenv('AZUREML_MODEL_DIR'),'my_model.pkl')

  my_model = MyModelClass(vocab_path='assets/data/vocaublary.txt',model_path=model_path)

def run(json_data):
  try:
    data = json.loads(json_data)
    prediction = my_model.predict(data)
    return {'data': prediction}
  except Exception as e:
    // do error handling
    return error

注意:即使assets.my_model_class文件夹中存在score.py,我们也必须从assets导入,因为在部署后,CWD(当前工作目录)是更改为assets文件夹的父文件夹

,

与模型相关的其他文件可以直接上传到源目录中的 Azure ML Workspace(带 GUI),该目录是 HOME > Notebooks。 (参考图片)。 Azure workspace image

使用添加文件按钮

将文件添加到此(源目录)中

上传的文件可以通过os.getEnv()方法访问。

from azureml.core import Workspace
from azureml.core import Environment
import os

# Connect to WS
ws = Workspace(subscription_id="sid",resource_group="rg",workspace_name="wsname")

# Creating inference Config for demo
env = Environment(name='environment_name')
inf_config = InferenceConfig(environment=env,source_directory=os.getenv('ENV_NAME'),entry_script='./score.py')
,

对于txt /静态文件-您可以上传到Azure Blob,并即时使用它们。 对于类,您可以将类封装在模块中。

您可以在此处执行2种选择

选项1:

您可以将模块发布为pip,然后使用它。

选项2:

this article中所述的“专用车轮文件”解决方案。 以下是示例环境,请仔细查看 pip 部分。

name: project_environment
dependencies:
  # The python interpreter version.

  # Currently Azure ML only supports 3.5.2 and later.

- python=3.6.2

- pip:
  - scikit-learn==0.22.1
  - azureml-defaults
  - https://myworkspaceid.blob.core/azureml/Environment/azureml-private-packages/my-wheel-file-name.whl
channels:
- conda-forge

在此thread中看到了参考代码和类似的讨论。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。