Добавление модулей 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
который вводит это.
Общие шаги, как показано ниже.
- Создайте проект Python через
virtualenv
и активно это. - Установите все нужные вам пакеты
pip
в виртуальной среде Python, а затем - Упакуйте все файлы и каталоги по пути
Lib\site-packages
вашего проекта в виде почтового файла. - Загрузите zip-пакет в рабочее пространство Azure ML в качестве набора данных.
- Следуйте официальному документу для импорта модуля 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. Я еще не отследил ошибку, но, скорее всего, из-за неправильного поведения символа или отступа. Надеюсь это поможет.