Azure Web服务部署如何在本地工作?

时间:2018-07-05 19:40:59

标签: python-3.x azure pickle azure-machine-learning-studio

Azure ML提供了用于数据集管理和模型部署的客户端库(例如Python的azureml)。据我了解,自定义算法将被序列化为Pickle文件,但是我不确定在那之后会发生什么。如果我有一个具有深层NN架构的自定义模型,并设置了一个用于训练和评分的Web服务,我是否仍需要运行该模型所开发的机器才能运行Web服务?我在azureml文档中找到了有用的东西:

  

如果一个函数没有与之关联的源文件(例如,您正在REPL环境中开发),则该函数的字节码将被序列化。如果函数引用任何全局变量,那么这些变量也将使用Pickle进行序列化。在这种模式下,您所指的所有状态都必须已经定义(例如,您发布的函数应该在您调用的任何其他函数之后)。

     

如果功能保存在磁盘上,则定义该功能的整个模块将被序列化并在服务器上重新执行以取回该功能。在这种模式下,文件的全部内容将被序列化,而函数定义的顺序则无关紧要。

如果函数使用TensorFlow或Keras之类的库怎么办?有人可以解释在创建Pickle模型之后会发生什么情况吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

您需要获取model.pkl文件,将其压缩,然后将其作为新数据集上传到Azure Machine Learning Studio。然后添加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]]),

You may find this post useful