SMC. Руководство администратора: различия между версиями
Материал из Флора AI
| Строка 71: | Строка 71: | ||
===== '''Установка моделей классификации''' ===== | ===== '''Установка моделей классификации''' ===== | ||
Модель классификации это модель обученная на определенном наборе данных (корпусе) и предназначена непосредственно для классификации. Установка модели возможна запросом с помощью методов API. Методы описаны в [https://wiki.connect2ai.net/index.php/SMC._%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8F руководстве пользователя] . Также модель может быть установлена копированием содержимого каталога /opt/smc/nnets/<имя модели> с одного сервера smc на другой. Внимание! При этом способе UPS, в конфигурационном файле которого указан новый smc, не увидит скопированную модель. | |||
===== '''Конфигурирование параметров сервиса''' ===== | ===== '''Конфигурирование параметров сервиса''' ===== | ||
Версия от 17:13, 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 - обратная нормализация, заменяет числа прописью на цифры. Внимание! У модели есть дополнительные требования к модулям 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 |
Сбор данных об ошибках
Логи сервиса по умолчанию находятся в файле /opt/smc/logs/log.txt
Удаление
Для удаления выполните команду: /opt/smc/uninstall. Команда деинсталлирует сервис и удалит рабочий каталог, включая все установленные модели.
Практические рекомендации
Сервис SMC в работе использует большую языковую модель которая формирует многомерное семантическое пространство. Смысл фразы для ее классификации вычисляется на основании вектора фразы в этом пространстве. Для производительности таких вычислений рекомендуется использовать GPU с 16 Гб видеопамяти. В случае отсутствия видеокарт рекомендуется использовать не менее 3 серверов по 8 ядер и 16Гб оперативной памяти. При этом желательно в строке запуска gunicorn в файле сервиса добавить параметр "-w 2". Это приведет к загрузке в память 2-х экземпляров приложения и моделей и позволит при высокой нагрузке полностью загрузить процессорные ядра.
Часто задаваемые вопросы
| Вопрос | Ответ |
|---|---|