Действия

SBS. Руководство администратора: различия между версиями

Материал из Флора AI

Нет описания правки
 
(не показано 11 промежуточных версий 2 участников)
Строка 2: Строка 2:
===== '''Общее описание''' =====
===== '''Общее описание''' =====
Сервис предназначен для получения метаданных из естественной человеческой речи. Входным значением для сервиса являются wav-файлы. В ответ на входящий запрос сервис возвращает данные в формате JSON.
Сервис предназначен для получения метаданных из естественной человеческой речи. Входным значением для сервиса являются wav-файлы. В ответ на входящий запрос сервис возвращает данные в формате JSON.
===== '''Термины и определения''' =====
===== '''Термины и определения''' =====
Simple Biometry Server (SBS) – сервис получения метаданных.
Simple Biometry Server (SBS) – сервис получения метаданных.
Строка 7: Строка 9:


===== '''Системные требования''' =====
===== '''Системные требования''' =====
Для нормальной работы сервиса необходимо CPU >= 2.20GHz с поддержкой инструкций AVX2 или новее. Оперативной памяти необходимо не менее 4Gb. Для работы на нагруженных сервисах рекомендуется использовать GPU NVIDIA с поддержкой CUDA и наличием CUDA ядер.
Для нормальной работы сервиса необходимо 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 с.


Быстродействие на '''CPU''': например поиск спикера, 8 потоков Xeon(R) Gold 6148 CPU @ 2.40GHz, 8Гб Озу, запрос поиска в базе спикера по аудио 10 сек, 100 запросов со сдвигом 0.01с(100 запросов выполнено за 1 с), максимальное время ожидания '''14с'''.
Тот же запрос с '''GPU''' А16 одним из 4-х ядер), максимальное время ожидания '''1.6 с'''.


Тот же запрос с '''GPU А16''' (с одним из 4 ядром) максимальное время ожидания '''1.6с'''




Строка 22: Строка 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> - обновить до последней beta версии;
** <code>/opt/sbs/inupdate -b</code> –  обновить до последней beta версии;
** <code>/opt/sbs/inupdate -r</code> - обновить до последней release версии;
** <code>/opt/sbs/inupdate -r</code> –  обновить до последней release версии;
** <code>/opt/sbs/inupdate -n</code> - обновить до последней версии (не важно beta или release).
** <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> - это тот же логин и пароль, что и от [https://cloud.connect2ai.net '''Nextcloud'''.]
* Полное описание всех команд 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. Сервис не требует остановки и возвращается в актуальное состояние после обновления.
При обновлении следующий список файлов и папок сохраняется: .userapi, .proxy, logs, nnets, config.json, cache, pretrained, pve, data. Сервис не требует остановки и возвращается в актуальное состояние после обновления.


Не забудьте запустить сервис и включить в автозапуск в системе:
Не забудьте запустить сервис и включить в автозапуск в системе:
Строка 65: Строка 68:
|audio
|audio
|Способ дообучения слепка  
|Способ дообучения слепка  
<small>'''audio''' - если указан этот тип, то обновление слепка дозагрузкой аудио делается через объединение старого и загружаемого аудио. Если старого аудио нет, то вектор делается только по новому аудио. В базу сохраняется только новое аудио (если стоит флаг сохранения в базу).</small>  
<small>audio если указан этот тип, то обновление слепка дозагрузкой аудио делается через объединение старого и загружаемого аудио. Если старого аудио нет, то вектор делается только по новому аудио. В базу сохраняется только новое аудио (если стоит флаг сохранения в базу).</small>
<small>'''average''' - в базу сохраняется только новое аудио (если стоит флаг). А новый вектор создается из усреднения старого вектора и вектора из нового аудио.</small>
 
<small>average в базу сохраняется только новое аудио (если стоит флаг). А новый вектор создается из усреднения старого вектора и вектора из нового аудио.</small>
|-
|-
|db_handler
|db_handler
Строка 78: Строка 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
|spr.url
Строка 101: Строка 105:
|-
|-
|spr.model
|spr.model
|call
|common
|Модель для распознавания текста
|Модель для распознавания текста
|-
|-
Строка 111: Строка 115:
|30
|30
|Таймаут на получения ответа от API SPR
|Таймаут на получения ответа от API SPR
|-
|reloader.period
|900
|Периодичность проверки изменения данных, для полной перезаливки векторной базы в ОЗУ
|}
|}


Строка 119: Строка 127:




Файловая база данных хранит в составе слепков аудио, на основе которых рассчитываются вектора (если включен параметр saveAudio). В части сценариев аудио требуется шифровать. Для этого предусмотрен внешний драйвер шифрования. Чтобы использовать драйвер шифрования, необходимо создать программу (скрипт) шифрования, поместить его в каталог /opt/sbs/db_handlers/, а затем имя созданного файла прописать в параметр db_handler конфигурационного файла (/opt/sbs/config.json). Пример драйвера шифрования, который перекодирует слепки в файловой системе в base64 распространяется в составе дистрибутива и расположен в папке /opt/sbs/db_handlers/.
Файловая база данных хранит в составе слепки аудио, на основе которых рассчитываются вектора (если включен параметр 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, а при запросе данных - со всем серверами cluster, распределяя нагрузку.
* UPS при изменении данных работает только с мастером SBS, а при запросе данных со всеми серверами cluster, распределяя нагрузку.
* В конфигурации UPS: в servers.sbs.cluster.trainer указаваем матер сервер, в servers.sbs.cluster перечесляем все сервера кластера SBS в том числе и мастер.
* В конфигурации UPS: в servers.sbs.cluster.trainer указываем мастер-сервер, в servers.sbs.cluster перечисляем все сервера кластера SBS, в том числе и мастер.
 




Строка 140: Строка 149:
===== '''Удаление''' =====
===== '''Удаление''' =====
Для удаления выполните команду: <code>/opt/sbs/uninstall</code>. Команда деинсталлирует сервис и удалит рабочий каталог, включая все установленные модели.
Для удаления выполните команду: <code>/opt/sbs/uninstall</code>. Команда деинсталлирует сервис и удалит рабочий каталог, включая все установленные модели.
===== '''Часто задаваемые вопросы''' =====
{| class="wikitable"
|+
!Вопрос
!Ответ
|-
|
|
|-
|
|
|-
|
|
|}

Текущая версия от 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, необходим для обновления, при отсутствующем прямом подключении к интернету)

При обновлении следующий список файлов и папок сохраняется: .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. Команда деинсталлирует сервис и удалит рабочий каталог, включая все установленные модели.