Пользовательская модель Python в среде Azure ML Studio Ошибка 0085, отлично работает в локальной среде

#python #machine-learning #azure-machine-learning-studio #ml-studio #mlmodel

#python #машинное обучение #azure-machine-learning-studio #ml-studio #mlmodel

Вопрос:

Среда Azure ML Studio выдает приведенную ниже ошибку при использовании файла pickle из пользовательской модели python. Там, где локальная модель python, файл pickle отлично работает в локальной среде, но не в среде Azure ML Studio

Ошибка 0085: во время оценки сценария произошла следующая ошибка, пожалуйста, просмотрите журнал вывода для получения дополнительной информации: ———- Запуск сообщения об ошибке из интерпретатора Python ———- Пойманное исключение при выполнении функции: Трассировка (последний последний вызов): Файл «C:serverinvokepy.py «, строка 199, в пакетном odfs = mod.azureml_main(*idfs) Файл «C:tempb1cb10c870d842b9afcf8bb8037155a1.py «, строка 49, в azureml_main возвращает ДАННЫЕ, файл model.predict_proba(DATA) «C:pyhomelibsite-packagessklearnensembleforest.py «, строка 540, в файле predict_proba n_jobs, _, _ = _partition_estimators(self.n_estimators, self.n_jobs) «C:pyhomelibsite-packagessklearnensemblebase.py «, строка 101, в _partition_estimators n_jobs = min(_get_n_jobs(n_jobs), n_estimators) Файл «C:pyhomelibsite-packagessklearnutils__init__.py «, строка 456, в _get_n_jobs, если n_jobs < 0: ошибка типа: неупорядочиваемые типы: NoneType() < int() Процесс возвращается с ненулевым кодом выхода 1 ———- Конец сообщения об ошибке от интерпретатора Python ———-

Чего-то не хватает?

Файл Python Pickle отлично работает в локальной среде.

 # The script MUST contain a function named azureml_main
# which is the entry point for this module.

# imports up here can be used to
import pandas as pd
import sys
import pickle
from sklearn.ensemble import RandomForestClassifier
from sklearn.preprocessing import LabelEncoder
import numpy as np
import pickle
import os

def azureml_main(DATA = None, dataframe2 = None):

# Execution logic goes here
# print('Input pandas.DataFrame #1:rnrn{0}'.format(DATA))

# If a zip file is connected to the third input port is connected,
# it is unzipped under ".Script Bundle". This directory is added
# to sys.path. Therefore, if your zip file contains a Python file
# mymodule.py you can import it using:
# import mymodule

sys.path.append('.\Script Bundle\MyLocalModel.zip')
sys.path.insert(0,".Script Bundle")
model = pickle.load(open(".Script BundleMyLocalModel.pkl", 'rb'))

#result = pd.DataFrame(model.predict_proba(dataframe1), columns=['p0','p1'])

# Return value must be of a sequence of pandas.DataFrame
return DATA, model.predict_proba(DATA)
 

Пользовательская модель python должна использоваться в azure ml studio для развертывания в качестве веб-службы с теми же выводами локальной модели

Обновление 1 от 17 апреля:

версия Python 2.7.11 одинакова в local и Azure ML Studio, но выяснилось, что версия sklearn отличается в local [0.18.x] и Azure ML Studio [0.15.x], где train_test_split отличается, как показано в приведенном ниже коде:

 ##from sklearn.model_selection import train_test_split ## works only with 0.18.x
import sklearn
from sklearn.cross_validation import train_test_split ## works only with 0.15.x
print ('sklearn version {0}'.format(sklearn.__version__))
 

1) Теперь, как обновить пакет sklearn до последней версии в Azure ML Studio?
Или другой способ — ухудшить мой локальный sklearn, попробовать, поэкспериментировать с этим.

2) Другое упражнение заключалось в создании модели в Azure ML Studio с использованием MDF [MulticlassDecisionForest] Алгоритм. И локальный использовал алгоритм RFC [RandomForestClassifier], но оба вывода совершенно разные, не совпадают?

Ниже приведен код в локальной среде с sklearn версии 0.18.x с использованием алгоритма RFC: ## Классификатор случайного леса в локальной среде с помощью sklearn версии 0.18.x из sklearn.ensemble импортирует RandomForestClassifier

 ## Random Forest Classifier
rfc = RandomForestClassifier(n_estimators = 550,max_depth = 6,max_features = 30,random_state = 0) 
rfc.fit(X_train,y_train)
print (rfc)

## Accuracy test
accuracy = rfc.score(X_test1,y_test1)
print ("Accuracy is {}".format(accuracy))
 

3) Воспроизвели локальный код python с помощью Azure ML Studio, выполнив скрипт Python с более низкой версией sklearn версии 0.15.x
Что привело к тем же выводам, что и local, за исключением очень небольшого количества строк набора тестовых данных.
Теперь, как обучить модель из скрипта Python в качестве неподготовленного ввода модели для обучения компонента модели?
Или записать файл pickle внутри набора данных и использовать как пользовательскую модель?

Мы высоко ценим ваш ценный вклад.

Комментарии:

1. Пожалуйста, проверьте Update1 для получения более подробной информации.

2. Я предлагаю создать отдельные вопросы для 3 элементов, которые вы добавили выше, иначе все быстро запутается. Должен сказать, похоже, что вам будет лучше обслуживать служба Azure ML.

Ответ №1:

Скорее всего, это связано с тем, что версия pickle , которую вы используете для сериализации модели, отличается от версии, используемой Azure ML Studio для десериализации. Проверьте Execute Python Script свойства, чтобы увидеть доступные версии Anaconda / Python.

Комментарии:

1. Влад, спасибо. Пожалуйста, обратитесь к Update1 для получения более подробной информации. Мы высоко ценим ваш ценный вклад.