PowerBI和MLflow集成通过AzureML

问题描述

我目前正在尝试将当前在AzureML上作为Web服务部署的ML模型与PowerBI集成。

我看到它可以是integrated,但是模型为being deployed as a webservice时需要添加一个模式文件。如果没有此功能,则无法在PowerBI中查看该模型。

我遇到的问题是,我使用MLflow记录ML模型的性能,然后使用MLflow的AzureML集成-mlflow.azureml.deploy()将选定的模型作为Web服务部署到AzureML上。不幸的是,在部署模型之前,该选项无法选择定义模式文件,因此由于缺少所需的模式文件,因此导致PowerBI中没有可用的模型。

我的选择似乎是:

  1. 找到解决方法,可能使用有效的REST api of the model in a power query
  2. 重写部署代码并在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)