Это шестая и последняя статья в моей серии руководств по MLflow:
- Настроить MLflow в производстве
- MLflow: Основные функции ведения журнала
- Ведение журнала MLflow для TensorFlow
- Проекты MLflow
- Получение лучшей модели с помощью Python API для MLflow
- Обслуживание модели с помощью MLflow (вы здесь!)
Создать среду
conda create -n production_env conda activate production_env conda install python pip install mlflow pip install sklearn
Запустите образец модели машинного обучения из Интернета
mlflow run [email protected]:databricks/mlflow-example.git -P alpha=0.5
Проверьте, успешно ли он работал
ls -al ~/mlruns/0
Получите uuid модели, которую мы только что запустили, с помощью приведенной выше команды и обслужите модель.
mlflow models serve -m ~/mlruns/0/your_uuid/artifacts/model -h 0.0.0.0 -p 8001
Сделайте выводы в новом окне терминала. Неистовствовать!
curl -X POST -H "Content-Type:application/json; format=pandas-split" --data '{"columns":["alcohol", "chlorides", "citric acid", "density", "fixed acidity", "free sulfur dioxide", "pH", "residual sugar", "sulphates", "total sulfur dioxide", "volatile acidity"],"data":[[12.8, 0.029, 0.48, 0.98, 6.2, 29, 3.33, 1.2, 0.39, 75, 0.66]]}' http://0.0.0.0:8001/invocations
Чтобы делать выводы с помощью Python, вы можете импортировать библиотеку request:
import requests host = '0.0.0.0' port = '8001' url = f'http://{host}:{port}/invocations' headers = { 'Content-Type': 'application/json', } # test_data is a Pandas dataframe with data for testing the ML model http_data = test_data.to_json(orient='split') r = requests.post(url=url, headers=headers, data=http_data) print(f'Predictions: {r.text}')
Команда mlflow models serve останавливается, как только вы нажимаете Ctrl + C или выходите из терминала. Если вы хотите, чтобы модель была запущена и работала, вам необходимо создать для нее службу systemd. Перейдите в каталог / etc / systemd / system и создайте новый файл с именем model.service со следующим содержанием:
[Unit] Description=MLFlow Model Serving After=network.target [Service] Restart=on-failure RestartSec=30 StandardOutput=file:/path_to_your_logging_folder/stdout.log StandardError=file:/path_to_your_logging_folder/stderr.log Environment=MLFLOW_TRACKING_URI=http://host_ts:port_ts Environment=MLFLOW_CONDA_HOME=/path_to_your_conda_installation ExecStart=/bin/bash -c 'PATH=/path_to_your_conda_installation/envs/model_env/bin/:$PATH exec mlflow models serve -m path_to_your_model -h host -p port' [Install] WantedBy=multi-user.target
Активируйте и включите вышеуказанный сервис с помощью следующих команд:
sudo systemctl daemon-reload sudo systemctl enable model sudo systemctl start model sudo systemctl status model
Приведенный выше пример очень простой. Для сложных моделей, таких как Deeplab, при сохранении модели необходимо определить входной и выходной тензоры. Рассмотрите возможность обращения к TF Serving для этой цели. Этот блог - хорошее руководство по обслуживанию модели Deeplab с использованием TF Serving.
Использованная литература:
Https://thegurus.tech/posts/2019/06/mlflow-production-setup/