SBS. Руководство администратора
Материал из Флора AI
Общее описание
Сервис предназначен для получения метаданных из естественной человеческой речи. Входным значением для сервиса являются wav-файлы. В ответ на входящий запрос сервис возвращает данные в формате JSON.
Термины и определения
Simple Biometry Server (SBS) – сервис получения метаданных.
Системные требования
Для нормальной работы сервиса необходимо CPU >= 2.20GHz с поддержкой инструкций AVX2 или новее. Оперативной памяти необходимо не менее 4Gb. Для работы на нагруженных сервисах рекомендуется использовать GPU NVIDIA с поддержкой CUDA и наличием CUDA ядер.
Быстродействие на CPU: например поиск спикера, 8 потоков Xeon(R) Gold 6148 CPU @ 2.40GHz, 8Гб Озу, запрос поиска в базе спикера по аудио 10 сек, 100 запросов со сдвигом 0.01с(100 запросов выполнено за 1 с), максимальное время ожидания 14с. Одиночный запрос ~1с.
Тот же запрос с GPU А16 (с одним из 4-х ядром) максимальное время ожидания 1.6с
Установка/обновление SBS
Дистрибутив распространяется в виде установочных пакетов для окружения и сервиса. Загрузите установочные пакеты на сервер и выполните команды для Вашей системы в каталоге с пакетом.
Перед установкой непосредственно сервиса необходимо установить сервисный пакет окружения.
- Установка/обновление SBS осуществляется скриптом
chmod +x ./sbs-<версия>-<релиз>.sh && ./sbs-<версия>-<релиз>.sh -iс правами администратора. Список всех ключей инсталлятора можно посмотреть, запустив инсталлятор./sbs-<версия>-<релиз>.shбез ключей. - Загрузить последнюю версию продукта
curl -s "https://repo.connect2ai.net/api/sbs/new" --user '[user]:[pass]' 2>&1 | bashили в интерактивном режимеbash -c "$(curl -s https://repo.connect2ai.net/api/sbs --user '[user]:[pass]' 2>&1)". - Обновить SBS
/opt/sbs/inupdateв интерактивном режиме. Или запустить с ключом:/opt/sbs/inupdate -b- обновить до последней beta версии;/opt/sbs/inupdate -r- обновить до последней release версии;/opt/sbs/inupdate -n- обновить до последней версии (не важно beta или release).
- Проверить актуальную версию продукта
curl -s "https://repo.connect2ai.net/api/sbs/version. - Посмотреть лог изменений
curl -s "https://repo.connect2ai.net/api/sbs/changelog" --user '[user]:[pass]'. - Полное описание всех команд API репозитория можно найти по ссылке https://repo.connect2ai.net/api.
[user]:[pass]- это тот же логин и пароль, что и от Nextcloud. - В папке с продуктом можно добавить 2 файла конфигурации (допускается один общий файл на все продукты в папке с окружением /opt/pve/):
- echo -n
"[user]:[pass]"> /opt/sbs/.userapi (это файл авторизации в API, нужен для обновления) - echo -n
"http://example.com:3128 [user] [password]"> /opt/sbs/.proxy (это файл конфигурации proxy необходим для обновления, при отсутствующем прямом подключение к интернету)
- echo -n
При обновление следующий список файлов и папок сохраняется: .userapi, .proxy, logs, nnets, config.json, cache, pretrained, pve, data. Сервис не требует остановки и возвращается в актуальное состояние после обновления.
Не забудьте запустить сервис и включить в автозапуск в системе:
sudo systemctl enable sbs.service && sudo systemctl start sbs.service
Удостоверьтесь, что сервис стартовал:
systemctl status sbs.service
Разрешите доступ к порту 6185 на нужном интерфейсе по протоколу tcp.
Конфигурирование параметров сервиса SBS
Настройка параметров сервиса spr производится в файле /opt/sbs/params.json
Описание параметров приведено в таблице. Применение любого из параметров требует перезапуска сервиса sbs.
| Параметр | По умолчанию | Назначение |
|---|---|---|
| saveAudio | true | Ключ хранения аудио отрезков в базе.
Внимание! При смене модели векторизации sbs сбросит все вектора и попытается сформировать новые из сохраненного аудио. Если аудио не будет ( saveAudio="false"), все слепки будут фактически уничтожены. |
| modifyType | audio | Способ дообучения слепка
audio - если указан этот тип, то обновление слепка дозагрузкой аудио делается через объединение старого и загружаемого аудио. Если старого аудио нет, то вектор делается только по новому аудио. В базу сохраняется только новое аудио (если стоит флаг сохранения в базу). average - в базу сохраняется только новое аудио (если стоит флаг). А новый вектор создается из усреднения старого вектора и вектора из нового аудио. |
| db_handler | "" | Внешний драйвер шифрования |
| logs.path | logs/ | Путь к папке логов |
| logs.backups | 10 | Максимальное количество лог файлов |
| logs.maxSize | 5242880 | Максимальный размер одного лог файла |
| cluster.logfile | logs/sync.log | Файл логов синхронизации, есть только на главном сервере кластера |
| cluster.statusFile | logs/sync.status | Статус задачи синхронизации, есть только на главном сервере кластера |
| cluster.nodes | [ ] | Перечень подчиненных нод для синхронизации изменений, заполняется только на главном сервере кластера |
| spr.url | http://127.0.0.1:6183 | Путь к сервису распознавания речи для получения текста |
| spr.model | call | Модель для распознавания текста |
| spr.conn_timeout | 10 | Таймаут на подключение к API SPR |
| spr.read_timeout | 30 | Таймаут на получения ответа от API SPR |
| reloader | 900 | Периодичность обновления векторов |
Внешний драйвер шифрования
Файловая база данных хранит в составе слепков аудио, на основе которых рассчитываются вектора (если включен параметр saveAudio). В части сценариев аудио требуется шифровать. Для этого предусмотрен внешний драйвер шифрования. Чтобы использовать драйвер шифрования, необходимо создать программу (скрипт) шифрования, поместить его в каталог /opt/sbs/db_handlers/, а затем имя созданного файла прописать в параметр db_handler конфигурационного файла (/opt/sbs/config.json). Пример драйвера шифрования, который перекодирует слепки в файловой системе в base64 распространяется в составе дистрибутива и расположен в папке /opt/sbs/db_handlers/.
Работа в составе кластера
Для высоконагруженных систем сервис можно расположить на нескольких нодах(виртуальных машинах). В этом случае чтобы не потерять документы и изменения полученные на одной из нод, выделяется один основной сервис и вспомогательные сервисы
- База файловая, в папке data.
- lsync настроен через конфиг SBS для репликации базы на все указанные серверы в списке cluster.nodes: [], указываем все слейв сервера.
- На всех слейвах список cluster.nodes: [] оставляем пустым
- Векторная база на каждом сервере своя, она следит за своей папкой data и обновляет в оперативке по этой папке данные у себя.
- UPS при изменении данных работает только с мастером SBS, а при запросе данных - со всем серверами cluster, распределяя нагрузку.
- В конфигурации UPS: в servers.sbs.cluster.trainer указываем матер сервер, в servers.sbs.cluster перечесляем все сервера кластера SBS в том числе и мастер.
Сбор данных об ошибках
Логи сервиса по умолчанию находятся в файле /opt/sbs/logs/log.txt
Удаление
Для удаления выполните команду: /opt/sbs/uninstall. Команда деинсталлирует сервис и удалит рабочий каталог, включая все установленные модели.