问题描述
我目前正在尝试将当前在AzureML上作为Web服务部署的ML模型与PowerBI集成。
我看到它可以是integrated,但是模型为being deployed as a webservice时需要添加一个模式文件。如果没有此功能,则无法在PowerBI中查看该模型。
我遇到的问题是,我使用MLflow记录ML模型的性能,然后使用MLflow的AzureML集成-mlflow.azureml.deploy()将选定的模型作为Web服务部署到AzureML上。不幸的是,在部署模型之前,该选项无法选择定义模式文件,因此由于缺少所需的模式文件,因此导致PowerBI中没有可用的模型。
我的选择似乎是:
- 找到解决方法,可能使用有效的REST api of the model in a power query。
- 重写部署代码并在Azure中而不是MLflow中处理Web服务部署步骤。
我想问一下我是否会丢失一些东西,因为在通过mlflow.azureml.deploy()进行部署时,无法使用当前代码在MLflow中定义架构文件,因此找不到解决方法。
解决方法
第2点是我们解决此问题的方法。我们没有使用MLflow在Azure上部署到评分服务,而是编写了一个自定义代码,该代码在初始化容器时加载MLflow模型。
评分代码是这样的:
import os
import json
from mlflow.pyfunc import load_model
from inference_schema.schema_decorators import input_schema,output_schema
from inference_schema.parameter_types.numpy_parameter_type import NumpyParameterType
def init():
global model
model = load_model(os.path.join(os.environ.get("AZUREML_MODEL_DIR"),"awesome_model"))
@input_schema('data',NumpyParameterType(input_sample))
@output_schema(NumpyParameterType(output_sample))
def run(data):
return model.predict(data)