Подготовка к обновлению#
Убедитесь в том, что вы являетесь root-пользователем перед тем, как начать обновление!
Перед обновлением FaceStream необходимо выполнить ряд дополнительных действий:
- Создать резервные копии
- Удалить старую символическую ссылку
- Распаковать дистрибутив новой версии FaceStream
- Создать новую символическую ссылку
- Настроить вычисления с помощью GPU, если планируется использовать GPU
- Авторизироваться в registry VisonLabs, если ранее не была выполнена авторизация
- Удалить старые контейнеры
После выполненных действий можно приступить к ручному или автоматическому запуску LUNA Streams и FaceStream.
Создание резервных копий#
Рекомендуется создать следующие резервные копии:
- резервная копия БД LUNA Streams (не описано в данной документации);
- резервную копию настроек сервисов LUNA PLATFORM, LUNA Streams и FaceStream.
Создание резервных копий позволит восстановить в случае возникновения каких-либо проблем в процессе миграции.
Копия настроек сервисов#
Пользовательские значения настроек сервисов LUNA PLATFORM (всех, кроме сервиса Configurator), LUNA Streams и FaceStream автоматически мигрируются с помощью механизма миграции сервиса Configurator. Данная резервная копия не будет использована в процессе нормальной установки FaceStream.
Чтобы создать файл настроек, используйте следующие опции (можно выполнить из любой директории на сервере):
wget -O /var/lib/fs/settings_dump_backup.json 127.0.0.1:5070/1/dump
или
curl 127.0.0.1:5070/1/dump > /var/lib/fs/settings_dump_backup.json
Удаление символической ссылки#
Удалите символическую ссылку в директорию предыдущей минорной версии с помощью следующей команды:
rm -f /var/lib/fs/fs-current
Распаковка архива#
Рекомендуется переместить архив в предварительно созданную директорию для FaceStream и распаковать архив в этой директории.
Указанные команды следует выполнять под пользователем root.
Создайте директорию для FaceStream.
mkdir -p /var/lib/fs
Переместите архив в созданную директорию. Предполагается, что архив сохранён на сервере в директории "/root".
mv /root/facestream_v.5.84.0.zip /var/lib/fs/
Перейдите в директорию.
cd /var/lib/fs/
Установите утилиту unzip, если она ещё не установлена.
yum install unzip
Распакуйте архив.
unzip facestream_v.5.84.0.zip
Создание символической ссылки#
Создайте символическую ссылку. Символическая ссылка указывает на директорию, в которой хранятся файлы для запуска нужной версии программного продукта.
ln -s facestream_v.5.84.0 fs-current
Установка зависимостей для GPU#
Пропустите данный раздел если не собираетесь использовать FaceStream с GPU.
Для использования GPU с Docker контейнерами необходимо установить NVIDIA Container Toolkit.
Пример установки приведен ниже.
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.repo | tee /etc/yum.repos.d/nvidia-docker.repo
yum install -y nvidia-container-toolkit
systemctl restart docker
Проверьте работу NVIDIA Container toolkit, запустив базовый контейнер CUDA (он не входит в дистрибутив FaceStream, его необходимо загрузить из Интернета):
docker run --rm --gpus all nvidia/cuda:11.4.3-base-centos7 nvidia-smi
Для дополнительной информации см. следующую документацию:
https://github.com/NVIDIA/nvidia-docker#centos-7x8x-docker-ce-rhel-7x8x-docker-ce-amazon-linux-12.
Извлечение атрибутов на GPU разработано для максимальной пропускной способности. Выполняется пакетная обработка входящих изображений. Это снижает затраты на вычисления для изображения, но не обеспечивает минимальную задержку для каждого изображения.
GPU-ускорение разработано для приложений с высокой нагрузкой, где количество запросов в секунду достигает тысяч. Нецелесообразно использовать ускорение GPU в сценариях с небольшой нагрузкой, когда задержка начала обработки имеет значение.
Действия для запуска FaceStream с GPU через Docker Compose#
Для запуска FaceStream с GPU через Docker Compose необходимо, кроме вышеописанных действий, добавить секцию deploy
в поле facestream
в файл docker-compose.yml
.
Перед запуском контейнера FaceStream с GPU требуется включить использование GPU для вычислений в настройках FaceStream с помощью параметра "enable_gpu_processing" (см. раздел "Настройки FaceStream" в руководстве администратора).
vi /var/lib/fs/fs-current/example-docker/docker-compose.yml
facestream:
image: ${REGISTRY_ADDRESS}:${DOCKER_REGISTRY_PORT}/facestream:${FS_VER}
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: all
capabilities: [gpu]
restart: always
environment:
CONFIGURATOR_HOST: ${HOST_CONFIGURATOR}
CONFIGURATOR_PORT: 5070
driver
— в данном поле указывается драйвер для зарезервированного устройства(устройств);
count
— в данном поле задается количество графических процессоров, которые должны быть зарезервированы (при условии, что хост содержит такое количество графических процессоров);
capabilities
— данное поле выражает как общие, так и специфические возможности драйвера. Его необходимо задать, иначе будет возвращена ошибка при развертывании сервиса.
Для дополнительной информации см. следующую документацию:
https://docs.docker.com/compose/gpu-support/#enabling-gpu-access-to-service-containers.
Вход в registry#
При запуске контейнеров необходимо указать ссылку на образ, необходимый для запуска контейнера. Этот образ загружается из VisionLabs registry. Перед этим необходима авторизация.
Логин и пароль можно запросить у представителя VisionLabs.
Введите логин
docker login dockerhub.visionlabs.ru --username <username>
После выполнения команды будет запрошен ввод пароля. Введите пароль.
В команде
docker login
можно вводить логин и пароль одновременно, однако это не гарантирует безопасность, т.к. пароль можно будет увидеть в истории команд.
Удаление старых контейнеров#
Перед запуском контейнеров текущей минорной версии необходимо остановить все контейнеры, относящиеся к предыдущей минорной версии FaceStream.
Для удаления контейнера используйте следующую команду:
docker container rm -f [container_name]
где [container_name]
это имя контейнера сервиса docker или ID.
Для удаления контейнеров FaceStream и LUNA Streams используйте следующую команду:
docker container rm -f facestream luna-streams
Чтобы посмотреть имена контейнеров или их ID, используйте следующую команду:
docker ps -a
Также рекомендуется удалить старые образы контейнеров для освобождения места. Можно использовать следующую команду для удаления всех неиспользуемых образов.
Если на сервере достаточно места, рекомендуется выполнить это действие только после успешного запуска новой версии FaceStream.
Данная команда удаляет все неиспользуемые образы, а не только образы, относящиеся к FaceStream.
docker image prune -a -f