Ошибка: «У вашего развертывания нет связанного сваггера. json» - развертывание ACI в задании Stream Analytics - PullRequest
0 голосов
/ 11 апреля 2020

Последнее обновление: в текущем выпуске ссылки для проверки c публикации Задания Stream Analytics развертывание контейнера ACI не поддерживается. Таким образом, я закрою этот вопрос до дальнейшего уведомления. Для получения дополнительной информации следуйте ветке GitHub, опубликованной ниже.

Примечание. Проблема возникает, когда значением Deployment является контейнер ACI, а не кластер AKS. В кластерах Kubernetes сервисная функция Azure ML успешно создана. Хотя я хочу протестировать свою функцию с контейнером ACI, а не с кластером AKS.

Я пытаюсь создать служебную функцию Azure ML в службе заданий Stream Analytics. Для этого я использую уже развернутую модель ml в Azure Экземпляре контейнера (он же ACI). Тем не менее, я получаю эту ошибку:

enter image description here

ссылка о проблеме на GitHub и документе Microsoft

Эта ошибка присутствует, несмотря на наличие следующих трех факторов:

Фактор 1: Когда я использую URL оценки (контейнера ACI) для оценки некоторых значений локально (в Jupyter Notebook), тогда выигрыш будет успешным.
Фактор 2: Я уже вывел схему входных данных в моем файле Score.py.
Фактор 3: Я помещаю модуль infer-schema [numpy -support] в качестве зависимости от файла среды.

Что я делаю не так?

Экземпляр контейнера ACI развернутый с ключом авторизации (первичный), плюс я определяю схему образца ввода и вывода в моем файле Score.py. Однако задание Stream не может распознать файл подмены. Поскольку я определяю схему для файла Score.py, я прочитал , что файл swagger. json будет сгенерирован автоматически.

Пример моего файла Score.py:

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:

name: project_environment
dependencies:
  - python=3.7.3
  - pip:
    - azureml-defaults
    - inference-schema[numpy-support]
    - joblib
    - numpy
    - scikit-learn==0.20.3

Буду признателен за любые комментарии по этому вопросу, чтобы решить его.

Поиск ключа:

Я сравнил файл swagger. json кластера AKS и файла контейнера ACI. И разница между двумя файлами чванства заключается в ключевых «путях». В AKS путь в сваггере. json: "пути": {"/ api / v1 / service / aks-service /": .... и т. Д. В ACI путь в сваггере. json: «пути»: {"/":....etc

Часть Swagger. json кластера AKS:

enter image description here

Часть Swagger. json кластера ACI:

enter image description here

И я предполагаю, что это может быть root из проблема. Возможно, функции задания Stream Analytics не могут распознать путь "/" для автоматической генерации сигнатуры функции для контейнера ACI.

1 Ответ

1 голос
/ 24 апреля 2020

Сначала мы начинаем с поддержки AKS, так как это рекомендуемый подход для оценки в реальном времени. Поскольку эта функция находится в предварительном просмотре c, мы завершаем некоторые тесты производительности для моделей, развернутых в ACI, чтобы ее можно было надежно использовать в целях разработки / тестирования. Мы должны получить поддержку для развертывания ACI в течение следующих нескольких недель.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...