python-3.x - Azure Web 服务部署如何在本地工作?
问题描述
Azure ML 提供用于数据集管理和模型部署的客户端库(例如用于 Python 的 azureml)。据我了解,自定义算法将被序列化为 Pickle 文件,但我不确定之后会发生什么。如果我有一个具有深度 NN 架构的自定义模型,并设置了一个用于训练的 Web 服务和另一个用于评分的 Web 服务,我是否仍然需要开发该模型的机器来运行 Web 服务?我在 azureml 文档中发现这很有帮助:
如果函数没有与之关联的源文件(例如,您正在 REPL 环境中开发),则函数字节码将被序列化。如果函数引用任何全局变量,这些变量也将使用 Pickle 进行序列化。在这种模式下,您所指的所有状态都需要已经定义(例如,您发布的函数应该在您调用的任何其他函数之后)。
如果一个函数保存在磁盘上,那么定义该函数的整个模块将被序列化并在服务器上重新执行以取回该函数。在这种模式下,文件的全部内容都被序列化,函数定义的顺序无关紧要。
如果函数使用 TensorFlow 或 Keras 之类的库怎么办?有人可以解释创建 Pickle 模型后会发生什么吗?
谢谢!
解决方案
您需要获取 model.pkl 文件,对其进行压缩,然后将其作为新数据集上传到 Azure 机器学习工作室。然后添加 python 模块并将其连接到新生成的 zip。
您现在可以在 AML Studio 实验中使用它。要使用该模型,请在您的 python 模块中添加以下代码:
import pandas as pd
import sys
import pickle
def azureml_main(dataframe1 = None, dataframe2 = None):
sys.path.insert(0,".\Script Bundle")
model = pickle.load(open(".\Script Bundle\model.pkl", 'rb'))
pred = model.predict(dataframe1)
return pd.DataFrame([pred[0]]),
推荐阅读
- python - 如果存在特定单词,则从括号中删除文本
- node.js - 安装 fiber@2.0.2 时出错
- css-grid - 如何创建这样的 CSS 网格?
- flutter - 在回调中从 AndroidAlarmManager oneShotAt 获取 id
- reactjs - React-Admin I 自定义按钮无法获取表单数据
- python - 如何在不使用 python 中的函数的情况下从另一个脚本重新启动脚本?
- javascript - 映射嵌套对象
- typescript - Vue / Typescript:找不到模块'vue-simplemde'
- android - recylerview适配器android中的数据绑定?
- python-3.x - 使用 xml.etree 从 xml 获取特定标签的数据