Обслуживание моделей онлайн-обучения с mlflow

Мне не ясно, можно ли использовать mlflow для обслуживания модели, которая постоянно развивается на основе ее предыдущих прогнозов.

Мне нужно иметь возможность запрашивать модель, чтобы сделать прогноз на основе выборки данных, что является основным использованием mlflow serve. Однако я также хочу, чтобы модель была обновлена ​​внутри, теперь, когда она увидела новые данные.

Это возможно или нужен FR?


person Merkle Daamgard    schedule 26.03.2021    source источник


Ответы (1)


Я думаю, что вы сможете сделать это, реализовав пользовательскую модель Python или пользовательский вкус, как это описано в документация. В этом случае вам нужно создать класс, унаследованный от mlflow.pyfunc.PythonModel, и реализовать метод predict, и внутри этого метода вы можете делать что угодно. Вот простой пример из документации:

class AddN(mlflow.pyfunc.PythonModel):

    def __init__(self, n):
        self.n = n

    def predict(self, context, model_input):
        return model_input.apply(lambda column: column + self.n)

и эта модель затем может быть сохранена и загружена снова, как обычные модели:

# Construct and save the model
model_path = "add_n_model"
add5_model = AddN(n=5)
mlflow.pyfunc.save_model(path=model_path, python_model=add5_model)

# Load the model in `python_function` format
loaded_model = mlflow.pyfunc.load_model(model_path)
person Alex Ott    schedule 11.04.2021
comment
Спасибо, это тоже была моя интуиция, однако я смогу сохранить модель только один раз, потому что save_model принимает PythonModel, а loaded_model возвращает PyfuncModel, который нельзя сохранить снова. - person Merkle Daamgard; 12.04.2021
comment
Сам я не пробовал, но, возможно, посмотрю mlflow.org/docs/ latest / models.html # custom-flavors. Или добавить в свой класс метод, который будет возвращать новый экземпляр PythonModel, который можно было бы сохранить? Или даже записывать данные прямо из модели - person Alex Ott; 12.04.2021
comment
В итоге я сохранил модель один раз и сохранил модель (рассол) как артефакт этого прогона. Тогда я бы просто запускал из регистра модели каждый раз, когда мне нужно было запустить модель (и перезаписать рассол модели). - person Merkle Daamgard; 14.04.2021