SBS. Руководство администратора: различия между версиями
Материал из Флора AI
Нет описания правки |
Нет описания правки |
||
| (не показаны 23 промежуточные версии 3 участников) | |||
| Строка 2: | Строка 2: | ||
===== '''Общее описание''' ===== | ===== '''Общее описание''' ===== | ||
Сервис предназначен для получения метаданных из естественной человеческой речи. Входным значением для сервиса являются wav-файлы. В ответ на входящий запрос сервис возвращает данные в формате JSON. | Сервис предназначен для получения метаданных из естественной человеческой речи. Входным значением для сервиса являются wav-файлы. В ответ на входящий запрос сервис возвращает данные в формате JSON. | ||
===== '''Термины и определения''' ===== | ===== '''Термины и определения''' ===== | ||
Simple Biometry Server (SBS) – сервис получения метаданных. | Simple Biometry Server (SBS) – сервис получения метаданных. | ||
| Строка 7: | Строка 9: | ||
===== '''Системные требования''' ===== | ===== '''Системные требования''' ===== | ||
Для нормальной работы сервиса | Для нормальной работы сервиса необходимо CPU >= 2.20 GHz с поддержкой инструкций AVX2 или новее. Оперативной памяти необходимо не менее 4 Gb. Для работы на нагруженных сервисах рекомендуется использовать GPU NVIDIA с поддержкой CUDA и наличием CUDA ядер. | ||
Быстродействие на '''CPU''': например, поиск спикера, 8 потоков Xeon(R) Gold 6148 CPU @ 2.40 GHz, 8 Гб ОЗУ, запрос поиска в базе спикера по аудио 10 сек, 100 запросов со сдвигом 0.01 с (100 запросов выполнено за 1 с), максимальное время ожидания 14 с. Одиночный запрос ~1 с. | |||
Тот же запрос с '''GPU''' А16 (с одним из 4-х ядер), максимальное время ожидания '''1.6 с'''. | |||
| Строка 32: | Строка 25: | ||
* Установка/обновление SBS осуществляется скриптом <code>chmod +x ./sbs-<версия>-<релиз>.sh && ./sbs-<версия>-<релиз>.sh -i</code> с правами администратора. Список всех ключей инсталлятора можно посмотреть, запустив инсталлятор <code>./sbs-<версия>-<релиз>.sh</code> без ключей. | * Установка/обновление SBS осуществляется скриптом <code>chmod +x ./sbs-<версия>-<релиз>.sh && ./sbs-<версия>-<релиз>.sh -i</code> с правами администратора. Список всех ключей инсталлятора можно посмотреть, запустив инсталлятор <code>./sbs-<версия>-<релиз>.sh</code> без ключей. | ||
* Загрузить последнюю версию продукта <code>curl -s "<nowiki>https://repo.connect2ai.net/api/sbs/new</nowiki>" --user '[user]:[pass]' 2>&1 | bash</code> или в интерактивном режиме <code>bash -c "$(curl -s <nowiki>https://repo.connect2ai.net/api/sbs</nowiki> --user '[user]:[pass]' 2>&1)"</code>. | * Загрузить последнюю версию продукта <code>curl -s "<nowiki>https://repo.connect2ai.net/api/sbs/new</nowiki>" --user '[user]:[pass]' 2>&1 | bash</code> или в интерактивном режиме <code>bash -c "$(curl -s <nowiki>https://repo.connect2ai.net/api/sbs</nowiki> --user '[user]:[pass]' 2>&1)"</code>. | ||
* Обновить SBS <code>/opt/sbs/inupdate</code> в интерактивном режиме. Или запустить с | * Обновить SBS <code>/opt/sbs/inupdate</code> в интерактивном режиме. Или запустить с ключом: | ||
** <code>/opt/sbs/inupdate -b</code> | ** <code>/opt/sbs/inupdate -b</code> – обновить до последней beta версии; | ||
** <code>/opt/sbs/inupdate -r</code> | ** <code>/opt/sbs/inupdate -r</code> – обновить до последней release версии; | ||
** <code>/opt/sbs/inupdate -n</code> | ** <code>/opt/sbs/inupdate -n</code> – обновить до последней версии (неважно beta или release). | ||
* Проверить актуальную версию продукта <code>curl -s "<nowiki>https://repo.connect2ai.net/api/sbs/version</nowiki></code>. | * Проверить актуальную версию продукта <code>curl -s "<nowiki>https://repo.connect2ai.net/api/sbs/version</nowiki></code>. | ||
* Посмотреть лог изменений <code>curl -s "<nowiki>https://repo.connect2ai.net/api/sbs/changelog</nowiki>" --user '[user]:[pass]'</code>. | * Посмотреть лог изменений <code>curl -s "<nowiki>https://repo.connect2ai.net/api/sbs/changelog</nowiki>" --user '[user]:[pass]'</code>. | ||
* Полное описание всех команд API репозитория можно найти по ссылке '''https://repo.connect2ai.net/api'''. <code>[user]:[pass]</code> | * Полное описание всех команд API репозитория можно найти по ссылке '''https://repo.connect2ai.net/api'''. <code>[user]:[pass]</code> – это тот же логин и пароль, что и от [https://cloud.connect2ai.net '''Nextcloud'''.] | ||
* В папке с продуктом можно добавить 2 файла конфигурации (допускается один общий файл на все продукты в папке с окружением /opt/pve/): | * В папке с продуктом можно добавить 2 файла конфигурации (допускается один общий файл на все продукты в папке с окружением /opt/pve/): | ||
** echo -n <code>"[user]:[pass]"</code> > /opt/sbs/.userapi (это файл авторизации в API, нужен для обновления) | ** echo -n <code>"[user]:[pass]"</code> > /opt/sbs/.userapi (это файл авторизации в API, нужен для обновления) | ||
** echo -n <code>"<nowiki>http://example.com:3128</nowiki> [user] [password]"</code> > /opt/sbs/.proxy (это файл конфигурации proxy необходим для обновления, при | ** echo -n <code>"<nowiki>http://example.com:3128</nowiki> [user] [password]"</code> > /opt/sbs/.proxy (это файл конфигурации proxy, необходим для обновления, при отсутствующем прямом подключении к интернету) | ||
При | При обновлении следующий список файлов и папок сохраняется: .userapi, .proxy, logs, nnets, config.json, cache, pretrained, pve, data. Сервис не требует остановки и возвращается в актуальное состояние после обновления. | ||
Не забудьте запустить сервис и включить в автозапуск в системе: | Не забудьте запустить сервис и включить в автозапуск в системе: | ||
| Строка 60: | Строка 53: | ||
Настройка параметров сервиса spr производится в файле /opt/sbs/params.json | Настройка параметров сервиса spr производится в файле /opt/sbs/params.json | ||
Описание параметров приведено в таблице | Описание параметров приведено в таблице. '''Применение любого из параметров требует перезапуска сервиса sbs.''' | ||
{| class="wikitable" | {| class="wikitable" | ||
|+ | |+ | ||
| Строка 66: | Строка 59: | ||
!По умолчанию | !По умолчанию | ||
!Назначение | !Назначение | ||
|- | |||
|saveAudio | |||
|true | |||
|Ключ хранения аудио отрезков в базе. | |||
<small>'''Внимание!''' При смене модели векторизации sbs сбросит все вектора и попытается сформировать новые из сохраненного аудио. Если аудио не будет ( saveAudio="false"), все слепки будут фактически уничтожены.</small> | |||
|- | |||
|modifyType | |||
|audio | |||
|Способ дообучения слепка | |||
<small>audio — если указан этот тип, то обновление слепка дозагрузкой аудио делается через объединение старого и загружаемого аудио. Если старого аудио нет, то вектор делается только по новому аудио. В базу сохраняется только новое аудио (если стоит флаг сохранения в базу).</small> | |||
<small>average — в базу сохраняется только новое аудио (если стоит флаг). А новый вектор создается из усреднения старого вектора и вектора из нового аудио.</small> | |||
|- | |||
|db_handler | |||
|"" | |||
|[https://wiki.connect2ai.net/index.php/SBS._%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%B0%D0%B4%D0%BC%D0%B8%D0%BD%D0%B8%D1%81%D1%82%D1%80%D0%B0%D1%82%D0%BE%D1%80%D0%B0#%D0%92%D0%BD%D0%B5%D1%88%D0%BD%D0%B8%D0%B9_%D0%B4%D1%80%D0%B0%D0%B9%D0%B2%D0%B5%D1%80_%D1%88%D0%B8%D1%84%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F Внешний драйвер шифрования] | |||
|- | |- | ||
|logs.path | |logs.path | ||
| Строка 73: | Строка 82: | ||
|logs.backups | |logs.backups | ||
|10 | |10 | ||
|Максимальное количество | |Максимальное количество лог файлов | ||
|- | |- | ||
|logs.maxSize | |logs.maxSize | ||
|5242880 | |5242880 | ||
|Максимальный размер одного | |Максимальный размер одного лог файла | ||
|- | |- | ||
|cluster.logfile | |cluster.logfile | ||
|logs/sync.log | |logs/sync.log | ||
|Файл логов синхронизации | |Файл логов синхронизации есть только на главном сервере кластера | ||
|- | |- | ||
|cluster.statusFile | |cluster.statusFile | ||
|logs/sync.status | |logs/sync.status | ||
|Статус задачи синхронизации | |Статус задачи синхронизации есть только на главном сервере кластера | ||
|- | |- | ||
|cluster.nodes | |cluster.nodes | ||
|[ ] | |[ ] | ||
|Перечень подчиненных нод для синхронизации изменений | |Перечень подчиненных нод для синхронизации изменений заполняется только на главном сервере кластера | ||
|- | |||
|spr.url | |||
|http://127.0.0.1:6183 | |||
|Путь к [[SPR. Руководство пользователя|сервису распознавания речи]] для получения текста | |||
|- | |||
|spr.model | |||
|common | |||
|Модель для распознавания текста | |||
|- | |||
|spr.conn_timeout | |||
|10 | |||
|Таймаут на подключение к API SPR | |||
|- | |||
|spr.read_timeout | |||
|30 | |||
|Таймаут на получения ответа от API SPR | |||
|- | |||
|reloader.period | |||
|900 | |||
|Периодичность проверки изменения данных, для полной перезаливки векторной базы в ОЗУ | |||
|} | |} | ||
===== '''Внешний драйвер шифрования'''===== | |||
Файловая база данных хранит в составе слепки аудио, на основе которых рассчитываются вектора (если включен параметр saveAudio). В части сценариев аудио требуется шифровать. Для этого предусмотрен внешний драйвер шифрования. Чтобы использовать драйвер шифрования, необходимо создать программу (скрипт) шифрования, поместить его в каталог /opt/sbs/db_handlers/, а затем имя созданного файла прописать в параметр db_handler конфигурационного файла (/opt/sbs/config.json). Пример драйвера шифрования, который перекодирует слепки в файловой системе в base64, распространяется в составе дистрибутива и расположен в папке /opt/sbs/db_handlers/. | |||
====='''Работа в составе кластера'''===== | ====='''Работа в составе кластера'''===== | ||
Для высоконагруженных систем сервис можно расположить на нескольких нодах(виртуальных машинах). В этом случае чтобы не потерять документы и изменения полученные на одной из нод, выделяется один основной сервис и вспомогательные сервисы | Для высоконагруженных систем сервис можно расположить на нескольких нодах (виртуальных машинах). В этом случае, чтобы не потерять документы и изменения, полученные на одной из нод, выделяется один основной сервис и вспомогательные сервисы. | ||
* База файловая, в папке data. | * База файловая, в папке data. | ||
* lsync настроен через конфиг SBS для репликации базы на все указанные серверы в списке cluster.nodes: [], | * lsync настроен через конфиг SBS для репликации базы на все указанные серверы в списке cluster.nodes: [], указываем все слейв-сервера. | ||
* На всех слейвах список cluster.nodes: [] оставляем пустым | * На всех слейвах список cluster.nodes: [] оставляем пустым. | ||
* Векторная база на каждом сервере своя, она следит за своей папкой data и обновляет в оперативке по этой папке данные у себя. | * Векторная база на каждом сервере своя, она следит за своей папкой data и обновляет в оперативке по этой папке данные у себя. | ||
* UPS при изменении данных работает только с мастером SBS, а при запросе данных | * UPS при изменении данных работает только с мастером SBS, а при запросе данных — со всеми серверами cluster, распределяя нагрузку. | ||
* В конфигурации UPS: в servers.sbs.cluster.trainer | * В конфигурации UPS: в servers.sbs.cluster.trainer указываем мастер-сервер, в servers.sbs.cluster перечисляем все сервера кластера SBS, в том числе и мастер. | ||
| Строка 112: | Строка 149: | ||
===== '''Удаление''' ===== | ===== '''Удаление''' ===== | ||
Для удаления выполните команду: <code>/opt/sbs/uninstall</code>. Команда деинсталлирует сервис и удалит рабочий каталог, включая все установленные модели. | Для удаления выполните команду: <code>/opt/sbs/uninstall</code>. Команда деинсталлирует сервис и удалит рабочий каталог, включая все установленные модели. | ||
Текущая версия от 09:03, 3 июля 2025
Общее описание
Сервис предназначен для получения метаданных из естественной человеческой речи. Входным значением для сервиса являются wav-файлы. В ответ на входящий запрос сервис возвращает данные в формате JSON.
Термины и определения
Simple Biometry Server (SBS) – сервис получения метаданных.
Системные требования
Для нормальной работы сервиса необходимо CPU >= 2.20 GHz с поддержкой инструкций AVX2 или новее. Оперативной памяти необходимо не менее 4 Gb. Для работы на нагруженных сервисах рекомендуется использовать GPU NVIDIA с поддержкой CUDA и наличием CUDA ядер.
Быстродействие на CPU: например, поиск спикера, 8 потоков Xeon(R) Gold 6148 CPU @ 2.40 GHz, 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 | common | Модель для распознавания текста |
| spr.conn_timeout | 10 | Таймаут на подключение к API SPR |
| spr.read_timeout | 30 | Таймаут на получения ответа от API SPR |
| reloader.period | 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. Команда деинсталлирует сервис и удалит рабочий каталог, включая все установленные модели.