Перейти к основному содержимому
Версия: 1.14.0 (последняя)

Как настроить систему для лучшей производительности

В этом разделе содержатся общие рекомендации для достижения максимальной производительности системы.

Масштабирование

В случае, когда нагрузка возрастает, для стабилизации работы

предусмотрено масштабирование следующих сервисов в ручном режиме:

  • image-api-deepfake-estimator: сервис используется для оценки наличия признаков использования технологии DeepFake.
  • image-api-quality-assessment-estimator: сервис используется для оценки качества изображения лица.
  • image-api-liveness-estimator: сервис используется для детекции лиц и оценки принадлежности лица на изображении реальному человеку.
  • image-api-age-estimator: сервис используется для оценки возраста человека по изображению лица.
  • image-api-gender-estimator: сервис используется для оценки пола человека по изображению лица.
  • image-api-face-detector-template-extractor: сервис используется для построения поискового биометрического шаблона лица.
  • image-api-face-detector-face-fitter: сервис используется для детекции лиц и определения антропометрических точек лица.
  • video-recorder-video-recorder: сервис для сохранения видео.

Для масштабирования сервиса необходимо выполнить следующую команду:

$ kubectl scale deployment <SERVICE_NAME>-dep --replicas <COUNT>

где <SERVICE_NAME> — наименование сервиса (например, lrs-lrs), а <COUNT> — количество экземпляров сервиса.

Принципы масштабирования

Входная нагрузка зависит от настроек веб-компоненты. Далее подробно описаны параметры и их влияние на нагрузку.
Во всех последующих разделах входящая нагрузка будет обозначаться как A. A измеряется в запросах в секунду (RPS).

Количество референсных кадров

Чем больше референсных кадров, тем выше нагрузка на сервис image-api-quality-assessment-estimator и image-api-face-detector-face-fitter (далее — сервисы первичной обработки), так как каждый кадр проходит через них.

Из всех обработанных кадров выбираются 3 лучших по качеству. Эти кадры дополнительно обрабатываются сервисами image-api-deepfake-estimator и image-api-liveness-estimator (далее — сервисы вторичной обработки).

Таким образом, при стандартной настройке в 10 референсных кадров каждая сессия генерирует:

  • 10 запросов к каждому сервису первичной обработки и
  • 3 запроса к каждому сервису вторичной обработки.

Если референсных кадров меньше трёх, нагрузка на сервисы первичной и вторичной обработки будет одинаковой. Например, при 2 кадрах каждый сервис обеих групп получит по 2 запроса.

Для минимальной задержки обработки при количестве референсных кадров B сервисы масштабируются следующим образом:

  • Количество реплик каждого сервиса из группы первичной обработки = A * B.
  • Количество реплик каждого сервиса из группы вторичной обработки = A * min(B, 3)

Примеры масштабирования, где RPS и количество референсных кадров различаются:

RPS \ Количество референсных кадров1\102\101\51\12\11\2
image-api-quality-assessment-estimator10205122
image-api-face-detector-face-fitter10205122
image-api-liveness-estimator363122
image-api-deepfake-estimator363122

Количество и длительность проверок с записью видео на сессию пользователя

Количество проверок с видео настраивается параметрами записи видео контроля движений. Длина видео зависит от пользователя и требует расчётов на основе реальных данных.

Чем больше суммарная длительность видео, тем выше пиковая нагрузка на сервис video-recorder-video-recorder. Например, при нагрузке 1 RPS и сессиях с видеопроверкой длиной в 1 минуту одновременно будет происходить до 60 активных сессий записи.

Если используется настройка WebCodec, нагрузка ложится на процессы сервиса video-recorder-video-recorder. Их количество задаётся параметром decoder.decoding_process_count в файле ./cfg/video-recorder.values.yaml. Один процесс выдерживает до 20 параллельных сессий записи через WebCodec без заметного замедления. Рекомендуется масштабировать сервис, а не только увеличивать число процессов в конфигурации.

Формула масштабирования при длительности видео B секунд и количестве процессов C:

  • Количество реплик сервиса video-recorder-video-recorder = A * B / C

Примеры масштабирования сервиса video-recorder-video-recorder с зафиксированым числом процессов, равным 5:

RPS \ Суммарная длинна в секундах видео проверок в каждой сессии1\602\601\120
video-recorder-video-recorder122

При использовании настройки MediaRecorder процессы сервиса video-recorder-video-recorder не задействуются, и масштабирование не требуется.

Для обработки видео контроля движений используется только сервис video-recorder-video-recorder.

Факторы, не зависящие от конфигурации веб-компоненты

Некоторые факторы нагрузки не связаны с настройками компоненты. В конце каждой сессии, независимо от того, регистрация это или авторизация, изображение обрабатывается сервисами:

  • image-api-gender-estimator
  • image-api-age-estimator
  • image-api-face-detector-template-extractor

Для сервисов image-api-gender-estimator и image-api-age-estimator допускается масштабирование в половину нагрузки. Количество реплик равно: A / 2.
Сервис image-api-face-detector-template-extractor масштабируется 1 к 1. Количество реплик равно: A.

Примеры количества реплик сервисов, где RPS варьируется:

RPS126
image-api-gender-estimator113
image-api-age-estimator113
image-api-face-detector-template-extractor126

Для сохранения параметров масштабирования откройте файлы ./cfg/platform.values.yaml, ./cfg/image-api.values.yaml, ./cfg/lrs.values.yaml и ./cfg/video-recorder.values.yaml найдите поле replicas в блоке сервиса и укажите новые значения реплик.

При следующих установках сервисы будут автоматически масштабироваться до указанных значений.