У меня есть модель sklearn k-means. Я обучаю модель и сохраняю ее в файле pickle, чтобы потом развернуть ее с помощью библиотеки azure ml. Модель, которую я обучаю, использует настраиваемый кодировщик функций под названием MultiColumnLabelEncoder. Модель трубопровода определяется следующим образом:
# Pipeline
kmeans = KMeans(n_clusters=3, random_state=0)
pipe = Pipeline([
("encoder", MultiColumnLabelEncoder()),
('k-means', kmeans),
])
#Training the pipeline
model = pipe.fit(visitors_df)
prediction = model.predict(visitors_df)
#save the model in pickle/joblib format
filename = 'k_means_model.pkl'
joblib.dump(model, filename)
Сохранение модели работает нормально. Шаги по развертыванию такие же, как и по этой ссылке:
Однако при развертывании всегда возникает эта ошибка:
File "/var/azureml-server/create_app.py", line 3, in <module>
from app import main
File "/var/azureml-server/app.py", line 27, in <module>
import main as user_main
File "/var/azureml-app/main.py", line 19, in <module>
driver_module_spec.loader.exec_module(driver_module)
File "/structure/azureml-app/score.py", line 22, in <module>
importlib.import_module("multilabelencoder")
File "/azureml-envs/azureml_b707e8c15a41fd316cf6c660941cf3d5/lib/python3.6/importlib/__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
ModuleNotFoundError: No module named 'multilabelencoder'
Я понимаю, что у pickle / joblib есть некоторые проблемы с распаковкой пользовательской функции MultiLabelEncoder. Вот почему я определил этот класс в отдельном скрипте Python (который я тоже выполнил). Я вызвал эту настраиваемую функцию в обучающем скрипте Python, в скрипте развертывания и в файле Python оценки (score.py). Импорт в файл score.py завершился неудачно. Итак, мой вопрос: как я могу импортировать настраиваемый модуль python в среду развертывания azure ml?
Заранее спасибо.
РЕДАКТИРОВАТЬ: это мой файл .yml
name: project_environment
dependencies:
# The python interpreter version.
# Currently Azure ML only supports 3.5.2 and later.
- python=3.6.2
- pip:
- multilabelencoder==1.0.4
- scikit-learn
- azureml-defaults==1.0.74.*
- pandas
channels:
- conda-forge