Добавление модулей Python в рабочую область AzureML

Недавно я работал над развертыванием модели машинного обучения в качестве веб-службы. Я использовал Azure Machine Learning Studio для создания собственного идентификатора рабочей области и токена авторизации. Затем я обучил модель LogisticRegressionCV из sklearn.linear_model локально на моей машине (используя python 2.7.13) и, используя приведенный ниже фрагмент кода, я хотел опубликовать свою модель в качестве веб-службы:

from azureml import services

@services.publish('workspaceID','authorization_token')
@services.types(var_1= float, var_2= float)
@services.returns(int)

def predicting(var_1, var_2):
    input = np.array([var_1, var_2].reshape(1,-1)
return model.predict_proba(input)[0][1]

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

predicting.service(1.21, 1.34)

Однако возникает следующая ошибка:

RuntimeError: Error 0085: The following error occurred during script 
evaluation, please view the output log for more information:

И самое важное сообщение в журнале:

AttributeError: 'module' object has no attribute 'LogisticRegressionCV'

Ошибка странная для меня, потому что когда я использовал обычный sklearn.linear_model.LogisticRegression, все было в порядке. Я был в состоянии делать прогнозы, отправляя запросы POST в созданную конечную точку, поэтому я думаю, что sklearn работал правильно. После изменения в LogisticRegressionCV это не так.

Поэтому я хотел обновить sklearn в моей рабочей области.

У вас есть идеи, как это сделать? Или еще более общий вопрос: как установить какой-либо модуль python в студии машинного обучения Azure таким образом, чтобы использовать функции прогнозирования любой модели, которую я разработал локально?

Спасибо

2 ответа

Решение

Для установки модуля Python в Azure ML Studio есть раздел Technical Notes официального документа Execute Python Script который вводит это.

Общие шаги, как показано ниже.

  1. Создайте проект Python через virtualenv и активно это.
  2. Установите все нужные вам пакеты pip в виртуальной среде Python, а затем
  3. Упакуйте все файлы и каталоги по пути Lib\site-packages вашего проекта в виде почтового файла.
  4. Загрузите zip-пакет в рабочее пространство Azure ML в качестве набора данных.
  5. Следуйте официальному документу для импорта модуля Python для вашего Execute Python Script,

Для получения дополнительной информации вы можете обратиться к другим аналогичным темам SO. Обновление панд до версии 0.19 в Azure ML Studio, в котором даже рассказывается, как обновить версию пакетов Python, установленных Azure.

Надеюсь, поможет.

Для всех, кто сталкивался с этим вопросом, как и я, в надежде установить модули в записные книжки AzureML; кажется, что текущая среда находится на Conda на вычислениях, поэтому теперь это так же просто, как выполнение

!conda env list

# conda environments:
#
base                  *  /anaconda
azureml_py36             /anaconda/envs/azureml_py36

!conda -n azureml_py36 -y <packages>

из среды ноутбука или почти то же самое без ! в терминальной среде

Я боролся с той же проблемой: ошибка 0085

Мне удалось решить эту проблему, используя пример кода Azure ML, доступный в их библиотеке: Развертывание веб-служб AzureML из ноутбуков Python

можно найти по адресу https://gallery.cortanaintelligence.com/Notebook/Deployment-of-AzureML-Web-Services-from-Python-Notebooks-4

Я не буду копировать весь код здесь, но я использовал его в точности как есть, и он работал с набором данных Бостона. Затем я использовал его с моим набором данных, и у меня больше не было ошибки 0085. Я еще не отследил ошибку, но, скорее всего, из-за неправильного поведения символа или отступа. Надеюсь это поможет.