Как обслуживать пользовательскую модель MLflow с Docker? - PullRequest
0 голосов
/ 23 января 2020

У нас есть проект, следующий по существу этому docker примеру , с той лишь разницей, что мы создали пользовательскую модель, подобную this , код которой находится в каталоге с именем forecast. Нам удалось запустить модель с mlflow run. Проблема возникает, когда мы пытаемся служить модели. После выполнения

mlflow models build-docker -m "runs:/my-run-id/my-model" -n "my-image-name"

мы не можем запустить контейнер с

docker run -p 5001:8080 "my-image-name"

со следующей ошибкой:

ModuleNotFoundError: No module named 'forecast'

Кажется, что изображение docker не знать об исходном коде, определяющем наш пользовательский класс модели. В среде Conda проблема не возникает благодаря аргументу code_path в mlflow.pyfunc.log_model.

Наш Dockerfile очень прост c, всего с FROM continuumio/miniconda3:4.7.12, RUN pip install {model_dependencies}.

Как разрешить docker изображение знает об исходном коде для десериализации модели и запуска ее?

1 Ответ

0 голосов
/ 28 января 2020

Вы можете указать зависимости исходного кода, установив аргумент code_paths при регистрации модели. Так что в вашем случае вы можете сделать что-то вроде:

mlflow.pyfunc.log_model(..., code_paths=[<path to your forecast.py file>])
...