我在 Azure DevOps 中构建了一个持续集成/部署管道,用于训练机器学习模型并将其部署到生产环境中。它使用 Python 中的 Azure 机器学习服务来设置一切,即训练模型,将其注册到机器学习工作区并将其部署为 Web 服务。一个要求是我需要在部署的 web 服务中使用多个模型。从 Azure 门户查看工作区时,将模型包含在已部署的 Web 服务中没有问题。我的问题在于我不知道如何在不知道模型名称的情况下访问它们。
通常发生的情况如下所示: score.py
from azureml.core.model import Model
from sklearn.externals import joblib
import pandas
def init():
global model
model_path = Model.get_model_path('model_name')
model = joblib.load(model_path)
def run(raw_data):
data = pandas.DataFrame(json.loads(raw_data)['Inputs'])
return do_prediction(data) # Use the model to make prediction
然后,我还有一个 python 脚本,它使用所有需要的模型创建一个图像,并将其部署为 Azure 中的 Web 服务。
我想使用的东西看起来像这样(但它给出了一个错误,因为我无法列出模型)。分数.py
from azureml.core.model import Model
from sklearn.externals import joblib
import pandas
def init():
model_list = []
models = Model.list() # Gives an error since no workspace is provided.
for model in models:
model_list.append(joblib.load(model.name))
def run(raw_data):
data = pandas.DataFrame(json.loads(raw_data)['Inputs'])
return do_prediction(data) # Use the model to make prediction