SMC. Руководство администратора
Материал из Флора AI
Общее описание
Сервис предназначен для классификации текстовой информации на предопределенные классы. Входным значением для сервиса являются данные в текстовом формате. В ответ на входящий запрос сервис возвращает данные в формате JSON.
Термины и определения
Simple Message Classifier (SMC) – сервис классификации.
Системные требования для SMC
Для нормальной работы сервиса на каждые 100 одновременных запросов классификации необходимо обеспечить 1 CPU >= 2.20GHz с поддержкой инструкций AVX2 или новее:
- Intel Haswell
- Intel Broadwell
- Intel Skylake
- Intel Kaby Lake
- Intel Coffee Lake
- Intel Comet Lake
- Intel Rocket Lake
- Intel Alder Lake
- AMD Excavator
- AMD Zen (AMD Ryzen)
- AMD Zen 2 (AMD Ryzen)
- AMD Zen 3 (AMD Ryzen)
Оперативной памяти необходимо не менее 4Gb.
Установка/обновление сервиса SMC
Дистрибутив распространяется в виде установочных пакетов для окружения и сервиса. Загрузите установочные пакеты на сервер и выполните команды для Вашей системы в каталоге с пакетом.
Перед установкой непосредственно сервиса необходимо установить сервисный пакет окружения.
- Установка/обновление TTS осуществляется скриптом
chmod +x ./tts-<версия>-<релиз>.sh && ./tts-<версия>-<релиз>.sh -iс правами администратора. Список всех ключей инсталлятора можно посмотреть, запустив инсталлятор./tts-<версия>-<релиз>.shбез ключей. - Загрузить последнюю версию продукта
curl -s "https://repo.connect2ai.net/api/tts/new" --user '[user]:[pass]' 2>&1 | bashили в интерактивном режимеbash -c "$(curl -s https://repo.connect2ai.net/api/tts --user '[user]:[pass]' 2>&1)". - Обновить TTS
/opt/tts/inupdateв интерактивном режиме. Или запустить с ключём:/opt/tts/inupdate -b- обновить до последней beta версии;/opt/tts/inupdate -r- обновить до последней release версии;/opt/tts/inupdate -n- обновить до последней версии (не важно beta или release).
- Установить модели
/opt/tts/inmodelв интерактивном режиме. - Проверить актуальную версию продукта
curl -s "https://repo.connect2ai.net/api/tts/version. - Посмотреть лог изменений
curl -s "https://repo.connect2ai.net/api/tts/changelog" --user '[user]:[pass]'. - Полное описание всех команд API репозитория можно найти по ссылке https://repo.connect2ai.net/api.
[user]:[pass]- это тот же логин и пароль, что и от Nextcloud. - В папке с продуктом можно добавить 2 файла конфигурации (допускается один общий файл на все продукты в папке с окружением /opt/pve/):
- echo -n
"[user]:[pass]"> /opt/tts/.userapi (это файл авторизации в API, нужен для обновления и загрузки моделей) - echo -n
"http://example.com:3128 [user] [password]"> /opt/tts/.proxy (это файл конфигурации proxy необходим для обновления и загрузки моделей, при отсутсвующем прямом подключение к интернету)
- echo -n
При обновление следующий список файлов и папок сохранияется: .userapi, .proxy, logs, nnets, config.json, cache, pretrained, pve, data. Сервис не требует остановки и возвращается в актуальное состояние после обновления.
Не забудьте запустить сервис и включить в автозапуск в системе:
sudo systemctl enable smc.service && sudo systemctl start smc.service
Удостоверьтесь, что сервис стартовал:
systemctl status smc.service
Разрешите доступ к порту 6181 на нужном интерфейсе по протоколу tcp.
Установка сервисных моделей SMC
Установка сервисных моделей возможна только копированием файла(файлов) модели в каталог c названием модели. Названия моделей предопределены и соответствуют их назначению (compressor correction embeddings emotions normalization punctuation). Установка сервисных моделей невозможна через API, в отличие от моделей классификации.
Модели располагаются в каталоге /opt/smc/pretrained/. Для установки модели необходимо создать каталог /opt/smc/pretrained/<название модели>/ и распаковать в неё архив модели, после чего перезагрузить сервис командой systemctl restart smc. При наличии в модели файла requirements.txt требуется установка в окружении PVE перечисленных в файле зависимостей командой pip3.
Проверить корректность работы модели пунктуации можно запросом к API с отправкой текста на распознавание:
curl -H "accept: application/json" -X GET "http://АДРЕС_СЕРВЕРА:6181/smc/punctuate?text=<текст>"
Модели:
- embeddings - языковая, отвечает за вычисление векторов при обучения модели. Проверить работу напрямую запросом к API не получится, метод не предусмотрен.
- compressor - модель сжатия фраз. Убирает из фразы слова не влияющие на ее смысл. Проверить работу можно через API запросом: пример запроса
curl -s -G -X GET "http://АДРЕС_СЕРВЕРА:6181/smc/compress?threshold=30" --data-urlencode "text=как можно было бы получить выплату мне бы" -H "accept: application/json"|jqпример ответа{ "text": "получить выплату мне бы" } - emotions - анализ эмоций. Проверить работу можно через API запросом: пример запроса
curl -s -G -X GET "http://АДРЕС_СЕРВЕРА:6181/smc/emotion" --data-urlencode "text=спасибо все хорошо" -H "accept: application/json"|jqпример ответа{ "emotion": "positive", "score": 0.9601 } - punctuation - пунктуация. Проверить работу можно через API запросом: пример запроса
curl -s -G -X GET "http://АДРЕС_СЕРВЕРА:6181/smc/punctuate?" --data-urlencode "text=я пришел как мне получить услугу" -H "accept: application/json"|jqпример ответа{ "text": "Я пришел. Как мне получить услугу?" } - normalization - обратная нормализация, заменяет числа прописью на цифры. Внимание! У модели есть дополнительные требования к модулям python в файле requirements.txt! Проверить работу можно через API запросом: пример запроса
curl -s -G -X GET "http://АДРЕС_СЕРВЕРА:6181/smc/normalize?" --data-urlencode "text=запишите меня к тринадцати" -H "accept: application/json"|jqпример ответа{"text": "запишите меня к 13-ти"} - correction - коррекция правописания. Изменяет неправильно написанные слова меняя их на наиболее близкие правильные (из знакомых модели). Проверить работу можно через API запросом: пример запроса
curl -s -G -X GET "http://АДРЕС_СЕРВЕРА:6181/smc/correct?" --data-urlencode "text=халодная вода" -H "accept: application/json"|jqпример ответа{"text": "холодная вода"}
Установка моделей классификации
Модель классификации это модель обученная на определенном наборе данных (корпусе) и предназначена непосредственно для классификации. Установка модели возможна запросом с помощью методов API. Методы описаны в руководстве пользователя . Также модель может быть установлена копированием содержимого каталога /opt/smc/nnets/<имя модели> с одного сервера smc на другой. Внимание! При этом способе UPS, в конфигурационном файле которого указан новый smc, не увидит скопированную модель.
Конфигурирование параметров сервиса
Настройка параметров сервиса smc производится в файле /opt/smc/config.json
Описание параметров приведено в таблице
| Параметр | По умолчанию | Назначение |
|---|---|---|
| logs.path | logs/ | Дерриктория для хранения логов. Примеры абсолютного пути: "/var/log/smc/" |
| logs.backups | 10 | Количество файлов ротации |
| logs.maxSize | 5242880 | Максимальный размер файла в байтах, триггер для ротации |
| gpu.productionModels | true | Флаг загрузки модели в GPU. productionModels подразумевает все рабочие модели классификации, которые создаются в системе. Остальные модели - сервисные: embeddingModel - языковая, punctuationModel - пунктуация, emotionsModel - анализ эмоций, compressorModel - модель сжатия фраз. Можно отдельно по названию сервисной модели включать/выключать ее загрузку в GPU. Рабочие модели можно включить в память gpu только все вместе. |
| gpu.embeddingModel | true | |
| gpu.punctuationModel | true | |
| gpu.emotionsModel | true | |
| gpu.compressorModel | true | |
| gpu.emotionsModel | true |
Работа сервиса через реверс-прокси
Сервис предполагает передачу больших объемов данных через http. Рекомендуем соответствующим образом настроить конфигурацию сайта в реверс-прокси. Например в nginx дополнительные параметры:
client_max_body_size 0; proxy_read_timeout 3h; large_client_header_buffers 8 256k;
Сбор данных об ошибках
Логи сервиса по умолчанию находятся в файле /opt/smc/logs/log.txt
Удаление
Для удаления выполните команду: /opt/smc/uninstall. Команда деинсталлирует сервис и удалит рабочий каталог, включая все установленные модели.
Практические рекомендации
Сервис SMC в работе использует большую языковую модель которая формирует многомерное семантическое пространство. Смысл фразы для ее классификации вычисляется на основании вектора фразы в этом пространстве. Для производительности таких вычислений рекомендуется использовать GPU с 16 Гб видеопамяти. В случае отсутствия видеокарт рекомендуется использовать не менее 3 серверов по 8 ядер и 16Гб оперативной памяти. При этом желательно в строке запуска gunicorn в файле сервиса добавить параметр "-w 2". Это приведет к загрузке в память 2-х экземпляров приложения и моделей и позволит при высокой нагрузке полностью загрузить процессорные ядра.
Часто задаваемые вопросы
| Вопрос | Ответ |
|---|---|