Невозможно локально обслуживать модель mlflow

#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. Я бы предложил попробовать следующее:

  1. Проверьте, находятся ли артефакты ваших моделей на пути, который вы используете Home/miniconda3/envs/mlruns/0/baa40963927a49258c845421e3175c06/artifacts/model
  2. Попробуйте открыть терминал, затем cd /Home/miniconda3/envs и выполнить mlflow models serve -m ./mlruns/0/baa40963927a49258c845421e3175c06/artifacts/model -p 8001
  3. MLflow предлагает различные решения для обслуживания модели, вы можете попробовать зарегистрировать свою модель и ссылаться на нее как «models: /{model_name} / {stage}», как указано в документах реестра моделей

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

1. Привет, Хулио, это сработало: !модели mlflow служат -m ./mlruns/0/baa40963927a49258c845421e3175c06/artifacts/model -p 8001 Должен ли порт открываться автоматически?

2. Эта команда запустит службу, прослушивающую HTTP-запросы на порту 8081. Если порт не используется для другой службы. Вы можете отправлять запросы, используя инструмент, который вы предпочитаете, например, curl или пакет Python «requests». В документах MLflow есть примеры использования модели, вот пример использования curl