Как развертывание веб-службы Azure работает локально? - PullRequest
0 голосов
/ 05 июля 2018

Azure ML предоставляет клиентские библиотеки (например, azureml для Python) для управления наборами данных и развертывания моделей. Насколько я понимаю, пользовательский алгоритм будет сериализован в виде файла Pickle, но я не уверен, что произойдет после этого. Если у меня есть пользовательская модель с глубокой архитектурой NN и я настроил веб-сервис для обучения, а другой - для оценки, мне все еще нужна машина, на которой была разработана модель, для работы веб-сервисов? Я нашел это в документации на azureml, которая была полезна:

Если с функцией не связан исходный файл (например, вы разрабатываете внутри среды REPL), то байт-код функции сериализуется. Если функция ссылается на любые глобальные переменные, они также будут сериализованы с использованием Pickle. В этом режиме все состояние, на которое вы ссылаетесь, должно быть уже определено (например, ваша опубликованная функция должна следовать после любых других функций, которые вы вызываете).

Если функция сохранена на диске, то весь модуль, в котором определена функция, будет сериализован и повторно выполнен на сервере для возврата функции. В этом режиме все содержимое файла сериализуется, и порядок определения функций не имеет значения.

Что если функция использует такую ​​библиотеку, как TensorFlow или Keras? Может кто-нибудь объяснить, что происходит после создания модели Pickle?

Спасибо!

1 Ответ

0 голосов
/ 26 июля 2018

Вам нужно взять файл model.pkl, сжать его и загрузить в Azure Machine Learning Studio в качестве нового набора данных. Затем добавьте модуль python и подключите его к вновь созданному zip-файлу.

Теперь вы можете использовать его в эксперименте AML Studio. Чтобы использовать модель, добавьте следующий код в ваш модуль Python:

import pandas as pd
import sys
import pickle

def azureml_main(dataframe1 = None, dataframe2 = None):
    sys.path.insert(0,".\Script Bundle")
    model = pickle.load(open(".\Script Bundle\model.pkl", 'rb'))
    pred = model.predict(dataframe1)
    return pd.DataFrame([pred[0]]),

Вы можете найти этот пост полезным

...