首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >错误:“您的部署没有关联的swagger.json”--流分析作业上的ACI部署

错误:“您的部署没有关联的swagger.json”--流分析作业上的ACI部署
EN

Stack Overflow用户
提问于 2020-04-11 15:03:06
回答 1查看 845关注 0票数 1

最新更新:在当前发布的Stream作业公共评审链接中,不支持ACI容器部署。因此,我会结束这项质询,直至另行通知为止。有关更多信息,请参见下面发布的GitHub线程。

注意:当部署值是ACI容器而不是AKS集群时,就会出现问题。使用Kubernetes集群,可以成功地创建Azure ML服务函数。虽然我想用ACI容器而不是AKS集群来测试我的函数。

我正试图在工作服务中创建一个Azure服务功能。为此,我在Azure容器实例(即ACI)中使用已经部署的ml模型。但是,我得到了以下错误:

关于链接问题的GitHub和相关Microsoft文档

尽管存在以下三个因素,但仍然存在此错误:

因素1:当我使用评分URL ( ACI容器)在本地(在木星笔记本中)得分一些值时,得分是成功的。

因素2:我已经推断了我的score.py文件中输入数据的模式。

因素3:我将推断模式支持模块作为环境文件的依赖项。

我做错了什么?

ACI容器实例是使用授权(主)键部署的,加上我在我的score.py文件中推断输入和输出示例的模式。但是,Stream作业无法识别swagger文件。由于我在score.py文件上推断了te模式,所以我朗读将自动生成swagger.json文件。

我的score.py文件示例:

代码语言:javascript
复制
import json
import numpy as np
import os
import itertools
import joblib
from sklearn.ensemble import RandomForestRegressor

from azureml.core.model import 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

    # retrieve the path to the model file using the model name
    model_path = Model.get_model_path('<model_name>')
    model = joblib.load(model_path)

input_sample = np.array([["0", 0, 0, 0, 0, 0]])
output_sample = np.array([0])

@input_schema('raw_data', NumpyParameterType(input_sample))
@output_schema(NumpyParameterType(output_sample))

def run(raw_data):
    try:

        data = np.array(raw_data)
        result=[]

        for array in data:

            prediction_result=model[array[0]].predict(array[1:].reshape(1,-1))
            result.append(prediction_result.tolist())

        result=list(itertools.chain.from_iterable(result))

        # you can return any data type as long as it is JSON-serializable
        return result

    except Exception as e:
        error = str(e)
        return error

我的env.yml文件示例:

代码语言:javascript
复制
name: project_environment
dependencies:
  - python=3.7.3
  - pip:
    - azureml-defaults
    - inference-schema[numpy-support]
    - joblib
    - numpy
    - scikit-learn==0.20.3

我希望能就这个问题提出任何意见来解决这个问题。

密钥查找:

我比较了AKS集群的swagger.json文件和ACI容器实例的文件。而这两个文件之间的区别是关键的“路径”。在AKS中,swagger.json中的路径是:“path”:{“/api/v1/service/aks-service/”:.在ACI中,swagger.json中的路径是:“path”:{ "/":....etc

AKS集群的部分Swagger.json:

ACI集群的Swagger.json的一部分:

我想这就是问题的根源。也许作业函数无法识别自动生成ACI容器的函数签名的路径"/“。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-23 22:16:49

我们首先支持AKS,因为这是推荐的实时得分方法。由于这个特性是公开预览的,我们正在为部署在ACI上的模型最后确定一些性能基准,以便它可以可靠地用于开发/测试目的。我们应该在未来几周内支持ACI部署。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61158877

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档