Действия

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

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

Строка 63: Строка 63:


* '''embeddings''' - языковая, отвечает за вычисление векторов при обучения модели. Проверить работу напрямую запросом к API не получится, метод не предусмотрен.
* '''embeddings''' - языковая, отвечает за вычисление векторов при обучения модели. Проверить работу напрямую запросом к API не получится, метод не предусмотрен.
* '''compressor''' - модель сжатия фраз. Убирает из фразы слова не влияющие на ее смысл. Проверить работу можно через API запросом: '''''пример запроса''''' <code>curl -s  -G -X GET "<nowiki>http://10.2.1.204:6181/smc/compress?threshold=30</nowiki>" --data-urlencode "text=как можно было бы получить выплату мне бы"  -H "accept: application/json"|jq</code>  '''''пример ответа''''' <code>{ "text": "получить выплату мне бы" }</code>
* '''compressor''' - модель сжатия фраз. Убирает из фразы слова не влияющие на ее смысл. Проверить работу можно через API запросом: '''''пример запроса''''' <code>curl -s  -G -X GET "<nowiki>http://АДРЕС_СЕРВЕРА:6181/smc/compress?threshold=30</nowiki>" --data-urlencode "text=как можно было бы получить выплату мне бы"  -H "accept: application/json"|jq</code>  '''''пример ответа''''' <code>{ "text": "получить выплату мне бы" }</code>
* '''emotions''' - анализ эмоций. Проверить работу можно через API запросом: '''''пример запроса''''' <code>curl -s  -G -X GET "<nowiki>http://10.2.1.204:6181/smc/emotion</nowiki>" --data-urlencode "text=спасибо все хорошо" -H "accept: application/json"|jq</code> '''''пример ответа''' <code>{ "emotion": "positive", "score": 0.9601 }</code>''
* '''emotions''' - анализ эмоций. Проверить работу можно через API запросом: '''''пример запроса''''' <code>curl -s  -G -X GET "<nowiki>http://АДРЕС_СЕРВЕРА:6181/smc/emotion</nowiki>" --data-urlencode "text=спасибо все хорошо" -H "accept: application/json"|jq</code> '''''пример ответа''' <code>{ "emotion": "positive", "score": 0.9601 }</code>''
* '''punctuation''' - пунктуация. Проверить работу можно через API запросом: '''''пример запроса''' <code>curl -s  -G -X GET "<nowiki>http://10.2.1.204:6181/smc/punctuate</nowiki>?" --data-urlencode "text=я пришел как мне получить услугу" -H "accept: application/json"|jq</code> '''пример ответа''''' <code>{ "text": "Я пришел. Как мне получить услугу?" }</code>
* '''punctuation''' - пунктуация. Проверить работу можно через API запросом: '''''пример запроса''' <code>curl -s  -G -X GET "<nowiki>http://АДРЕС_СЕРВЕРА:6181/smc/punctuate</nowiki>?" --data-urlencode "text=я пришел как мне получить услугу" -H "accept: application/json"|jq</code> '''пример ответа''''' <code>{ "text": "Я пришел. Как мне получить услугу?" }</code>
* '''normalization'''
* '''normalization -''' обратная нормализация, заменяет числа прописью на цифры. Проверить работу можно через API запросом: '''''пример запроса''''' <code>curl -s  -G -X GET "<nowiki>http://АДРЕС_СЕРВЕРА:6181/smc/normalize</nowiki>?" --data-urlencode "text=запишите меня к тринадцати" -H "accept: application/json"|jq</code> '''''пример ответа''''' <code>{"text": "запишите меня к 13-ти"}</code>
* '''correction'''<br />
* '''correction''' - коррекция правописания. Изменяет неправильно написанные слова меняя их на наиболее близкие правильные (из знакомых модели). Проверить работу можно через API запросом: '''''пример запроса''''' <code>curl -s  -G -X GET "<nowiki>http://АДРЕС_СЕРВЕРА:6181/smc/correct</nowiki>?" --data-urlencode "text=халодная вода" -H "accept: application/json"|jq</code> '''''пример ответа''''' <code>{"text": "холодная вода"}</code>
 
 
===== '''Конфигурирование параметров сервиса''' =====
===== '''Конфигурирование параметров сервиса''' =====



Версия от 16:59, 16 мая 2024

Общее описание

Сервис предназначен для классификации текстовой информации на предопределенные классы. Входным значением для сервиса являются данные в текстовом формате. В ответ на входящий запрос сервис возвращает данные в формате 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

Дистрибутив распространяется в виде установочных пакетов для окружения и сервиса. Загрузите установочные пакеты на сервер и выполните команды для Вашей системы в каталоге с пакетом.

Перед установкой непосредственно сервиса необходимо установить сервисный пакет окружения.

Установка/обновление SMC осуществляется скриптом chmod +x ./smc-<версия>-<релиз>.sh && ./smc-<версия>-<релиз>.sh -i с правами администратора. Список всех ключей инсталятора можно посмотреть, запустив инсталятор ./smc-<версия>-<релиз>.sh без ключей.

Загрузить последнюю версию пакета curl -s 'https://cloud.connect2ai.net/smc/' --user 'user_nexcloud:pass_nexcloud' | bash

Установить/обновить пакет одной командой curl -s 'https://cloud.connect2ai.net/smc/?name=s' --user 'user_nexcloud:pass_nexcloud' | bash && chmod +x ./smc.sh && ./smc.sh -i

Проверить актуальную версию пакета можно curl -s 'https://cloud.connect2ai.net/smc/?type=v'

Не забудьте запустить сервис и включить в автозапуск в системе:

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 - обратная нормализация, заменяет числа прописью на цифры. Проверить работу можно через 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": "холодная вода"}


Конфигурирование параметров сервиса

Настройка параметров сервиса 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


Сбор данных об ошибках

Логи сервиса по умолчанию находятся в файле /opt/smc/logs/log.txt


Удаление

Для удаления выполните команду: /opt/smc/uninstall. Команда деинсталлирует сервис и удалит рабочий каталог, включая все установленные модели.

Практические рекомендации

Сервис SMC в работе использует большую языковую модель которая формирует многомерное семантическое пространство. Смысл фразы для ее классификации вычисляется на основании вектора фразы в этом пространстве. Для производительности таких вычислений рекомендуется использовать GPU с 16 Гб видеопамяти. В случае отсутствия видеокарт рекомендуется использовать не менее 3 серверов по 8 ядер и 16Гб оперативной памяти. При этом желательно в строке запуска gunicorn в файле сервиса добавить параметр "-w 2". Это приведет к загрузке в память 2-х экземпляров приложения и моделей и позволит при высокой нагрузке полностью загрузить процессорные ядра.

Часто задаваемые вопросы
Вопрос Ответ