#deployment #localhost #mlflow
#развертывание #localhost #mlflow
Вопрос:
Я создал модель mlflow с пользовательским pyfunc. Он показывает результаты, когда я отправляю ввод в загруженную модель в Jupyter notebook. Однако, если я пытаюсь передать ее на локальный порт
!mlflow models serve -m Home/miniconda3/envs/mlruns/0/baa40963927a49258c845421e3175c06/artifacts/model -p 8001
Я получаю эту ошибку
Traceback (most recent call last):
File "/home/subhojyoti/miniconda3/envs/python3-env/bin/mlflow", line 10, in <module>
sys.exit(cli())
File "/home/subhojyoti/miniconda3/envs/python3-env/lib/python3.6/site-packages/click/core.py", line 829, in __call__
return self.main(*args, **kwargs)
File "/home/subhojyoti/miniconda3/envs/python3-env/lib/python3.6/site-packages/click/core.py", line 782, in main
rv = self.invoke(ctx)
File "/home/subhojyoti/miniconda3/envs/python3-env/lib/python3.6/site-packages/click/core.py", line 1259, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File "/home/subhojyoti/miniconda3/envs/python3-env/lib/python3.6/site-packages/click/core.py", line 1259, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File "/home/subhojyoti/miniconda3/envs/python3-env/lib/python3.6/site-packages/click/core.py", line 1066, in invoke
return ctx.invoke(self.callback, **ctx.params)
File "/home/subhojyoti/miniconda3/envs/python3-env/lib/python3.6/site-packages/click/core.py", line 610, in invoke
return callback(*args, **kwargs)
File "/home/subhojyoti/miniconda3/envs/python3-env/lib/python3.6/site-packages/mlflow/models/cli.py", line 56, in serve
install_mlflow=install_mlflow).serve(model_uri=model_uri, port=port,
File "/home/subhojyoti/miniconda3/envs/python3-env/lib/python3.6/site-packages/mlflow/models/cli.py", line 163, in _get_flavor_backend
append_to_uri_path(underlying_model_uri, "MLmodel"), output_path=tmp.path())
File "/home/subhojyoti/miniconda3/envs/python3-env/lib/python3.6/site-packages/mlflow/tracking/artifact_utils.py", line 76, in _download_artifact_from_uri
artifact_path=artifact_path, dst_path=output_path)
File "/home/subhojyoti/miniconda3/envs/python3-env/lib/python3.6/site-packages/mlflow/store/artifact/local_artifact_repo.py", line 67, in download_artifacts
return super(LocalArtifactRepository, self).download_artifacts(artifact_path, dst_path)
File "/home/subhojyoti/miniconda3/envs/python3-env/lib/python3.6/site-packages/mlflow/store/artifact/artifact_repo.py", line 140, in download_artifacts
return download_file(artifact_path)
File "/home/subhojyoti/miniconda3/envs/python3-env/lib/python3.6/site-packages/mlflow/store/artifact/artifact_repo.py", line 105, in download_file
self._download_file(remote_file_path=fullpath, local_path=local_file_path)
File "/home/subhojyoti/miniconda3/envs/python3-env/lib/python3.6/site-packages/mlflow/store/artifact/local_artifact_repo.py", line 95, in _download_file
shutil.copyfile(remote_file_path, local_path)
File "/home/subhojyoti/miniconda3/envs/python3-env/lib/python3.6/shutil.py", line 120, in copyfile
with open(src, 'rb') as fsrc:
FileNotFoundError: [Errno 2] No such file or directory: 'Home/miniconda3/envs/mlruns/0/baa40963927a49258c845421e3175c06/artifacts/model/MLmodel'
Ответ №1:
Из вашей обратной трассировки ошибок артефакт модели не может быть найден. В вашем коде вы выполняете команду mlflow из записной книжки Jupyter. Я бы предложил попробовать следующее:
- Проверьте, находятся ли артефакты ваших моделей на пути, который вы используете Home/miniconda3/envs/mlruns/0/baa40963927a49258c845421e3175c06/artifacts/model
- Попробуйте открыть терминал, затем
cd /Home/miniconda3/envs
и выполнитьmlflow models serve -m ./mlruns/0/baa40963927a49258c845421e3175c06/artifacts/model -p 8001
- MLflow предлагает различные решения для обслуживания модели, вы можете попробовать зарегистрировать свою модель и ссылаться на нее как «models: /{model_name} / {stage}», как указано в документах реестра моделей
Комментарии:
1. Привет, Хулио, это сработало: !модели mlflow служат -m ./mlruns/0/baa40963927a49258c845421e3175c06/artifacts/model -p 8001 Должен ли порт открываться автоматически?
2. Эта команда запустит службу, прослушивающую HTTP-запросы на порту 8081. Если порт не используется для другой службы. Вы можете отправлять запросы, используя инструмент, который вы предпочитаете, например, curl или пакет Python «requests». В документах MLflow есть примеры использования модели, вот пример использования curl