У меня есть функция Azure, написанная на Python, которая имеет простую цель: вернуть прогноз для нового наблюдения на основе модели, которую я обучил, протестировал и сохранил как BLOB. Я создал модель с помощью записной книжки Jupyter и загрузил ее в хранилище больших двоичных объектов Azure. Я могу прочитать файл модели, но когда я пытаюсь распаковать его, я получаю сообщение об ошибке: Исключение: UnpicklingError: неверный ключ загрузки, '\ xef'.
Я новичок в функциях ML и Azure, поэтому я 'Я не уверен, с чего начать. Я попытался загрузить модель локально, и она работает нормально. Я попытался загрузить файл обратно из хранилища Azure, и он отлично работает.
Файл PKL создается из записной книжки следующим образом:
pickle.dump(model, open("diabetes-model.pkl", "wb"))
В моей функции Azure я передаюa func.InputStream для метода, который выглядит следующим образом:
def do_prediction(modelFileStream):
mod = modelFileStream.read()
modelFileStream.close()
model = pickle.loads(mod)
Файл начинается в отладчике следующим образом (это почти 400 КБ):
b'\xef\xbf\xbd\x03cxgboost.sklearn\nXGBClassifier\nq\x00)\xef\xbf\xbdq\x01}q\x02(X\t\x00\x00\x00max_depthq\x03K\x0cX\r\x00\x00\x00learning_rateq\x04G?\xef\xbf\xbdz\xef\xbf\xbdG\xef\xbf\xbd\x14{X\x0c\x00\x00\x00n_estimatorsq\x05M,\x01X\t\x00\x00\x00verbosityq\x06K\x01X\x06\x00\x00\x00silentq\x07NX\t\x00\x00\x00objectiveq\x08X\x0f\x00\x00\x00binary:logisticq\tX\x07\x00\x00\x00boosterq\nX\x06\x00\x00\x00gbtreeq\
Ошибка: Исключение:UnpicklingError: неверный ключ загрузки, '\ xef'.
Я предполагаю, что здесь есть какая-то проблема с кодировкой. Я видел некоторые указания, что содержимое должно быть закодировано в Base64, прежде чем оно будет записано, но это мне кажется неэффективным.
Хотелось бы получить некоторые рекомендации о том, что происходит или что попробовать дальше.