Деплой и мониторинг
I Общее
Деплой осуществляется через ml-builder:
conda activate ml-builder
bash build.sh
ml-builder содержит питоновский скрипт, который пулит репозитории моделей, собирает их в архивы, с которыми умеет работать torchserve, и кладет архивы в его volume.
Затем из TeamCity пулятся контейнеры сервисов и поднимается система. Необходимые версии сервисов и моделей должны быть указаны в .env файле в директории билдера.
II Система
Деплой
См. схему
-
В первую должен быть развернут Redis, без него инференс и обучение моделей невозможны.
- Далее должен быть поднят MLFlow, т.к. torchserve при загрузке попытается стянуть с MLFlow актуальные модели.
- Порядок развертывания установлен в docker-compose.yaml.
-
ML-API общается с бэкэндом с одной стороны, и инференс-сервером с другой. Он не проверяет работоспособность инференс-сервера до обращения. Проверить работоспособность системы можно через соответствующую джобу Дагстера.
-
Доступы к БД, Редису, ТГ и прочим ресурсам устанавливаются в переменных окружения. См файл .env в директории развертывания.
Мониторинг
-
Для просмотра логов инференс-сервера нужно зайти в докер-контейнер
docker exec -ti torchserve bash
и провалиться в папку logs. -
Для просмотра логов API сервера нужно пройти в
~/ml-api/logs
. Эта директория прокинута через volume вdata/ml-api
. -
Инференс-сервер также мониторится через связку prometheus-grafana.
III Модели
Деплой
- Для деплоя модели должен быть собран архив, содержащий все необходимое для запуска - код, веса (если они не тянутся из MLFlow), версии библиотек. Правила сборки кода должны быть прописаны в файле serve/deploy.yaml репозитория модели. В разделе extra_files должны быть указаны все файлы и директории, которые нужно включить в архив, но которые не были указаны в других разделах. В архиве также должен содержаться конфиг модели (serve/config.yaml), указывающий инференс-серверу параметры запуска инстансов модели.
-
Запуск модели на инференс-сервере осуществляется через файл handler.py . Он должен импортировать все необходимое из своего архива. Инференс осуществляется через метод inference класса ModelHandler.
-
Ml-builder содержит скрипт, который собирает из репозитория модели готовый архив и кладет его в torchserve/model-store. Инференс-сервер должен поднять модель автоматически при старте.
Мониторинг
-
Мониторинг моделей осуществляется средствами torchserve. Для вывода сообщений в model_log нужно использовать питоновский логгер и его производные.
-
Можно отдавать произвольные метрики от моделей в prometheus (custom metrics api)
No Comments