Пользовательская модель Python в среде Azure ML Studio Ошибка 0085, отлично работает в локальной среде - PullRequest
0 голосов
/ 16 апреля 2019

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

Ошибка 0085: во время оценки сценария произошла следующая ошибка. Для получения дополнительной информации просмотрите журнал вывода: --------- Начало сообщения об ошибке от интерпретатора Python ---------- Произошло исключение при выполнении функции: обратная связь (последний вызов был последним): файл "C: \ server \ invokepy.py", строка 199, в пакетном режиме odfs = mod.azureml_main (* idfs) Файл "C: \ temp \ b1cb10c870d842b9afcf8bb8037155a1.py", строка 49, в azureml_main возвращает DATA, model.predict_proba (DATA) файл "C: \ pyhome \ libsite-packages \ sklearn \ ensemble \ forest.py ", строка 540, в предикате_проба n_jobs, _, _ = _partition_estimators (self.n_estimators, self.n_jobs) Файл" C: \ pyhome \ lib \ site-packages \ sklearn \ ensemble\ base.py ", строка 101, в _partition_estimators n_jobs = min (_get_n_jobs (n_jobs), n_estimators) Файл" C: \ pyhome \ lib \ site-packages \ sklearn \ utils__init __. py ", строка 456, в _get_n_jobs, если n_jobs <0: Тип Error: неупорядоченные типы: NoneType () <int () Процесс, возвращенный с ненулевым кодом завершения 1 ---------- Сообщение об ошибке от интерпретатора Python ---------- </p>

Что-то отсутствует?

Файл 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:\r\n\r\n{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 Bundle\MyLocalModel.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 для развертывания в Интернете.service, с теми же выходами локальной модели

Update1 от 17 апреля:

Python версии 2.7.11 такой же в локальной и Azure ML Studio, но найденкроме того, версия sklearn отличается в локальной [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 Execute Python Script с более низкой версией sklearn версии 0.15.x, которая имееттакже приводил к тем же выводам локальных, за исключением очень небольшого количества строк тестового набора данных.Теперь, как обучить модель из Python Script как необученный ввод модели в компонент Train Model?Или написать файл pickle внутри DataSet и использовать его в качестве пользовательской модели?

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

1 Ответ

0 голосов
/ 16 апреля 2019

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

...