SMC. Руководство администратора
Материал из Флора AI
Общее описание
Сервис предназначен для анализа и классификации текстовой информации. Входным значением для сервиса являются данные в текстовом формате. В ответ на входящий запрос сервис возвращает данные в формате JSON.
Термины и определения
Simple Message Classifier (SMC) – сервис анализа и классификации.
Системные требования для SMC
Для работы smc рекомендуется использовать видеокарту NVIDIA поддерживающую технологию CUDA и имеющую в составе ядра CUDA.
В случае отсутствия видеокарты для нормальной работы сервиса необходимо обеспечить не менее 8 потоков CPU >= 2.20GHz с поддержкой инструкций AVX2 или новее. В конфигурации 8 потоков Intel(R) Xeon(R) Gold 6148 2.40GHz 6Гб ОЗУ фраза 10 слов классифицируется 0.2с, соответственно за секунду может быть распознано до 5 фраз. Увеличение количества ядер/потоков дает прирост производительности, но не прямо пропорциональный.
Оперативной памяти необходимо не менее 4Gb.
Для обучения моделей рекомендуется использовать видеокарту. Обучение модели на корпусе размером 7500 строк занимает на ВМ с 16 ядрами, 16Гб ОЗУ и видеокартой А16(одном из 4-х ее ядер) около 20 минут. Недостаточная мощность CPU может увеличить время обучение за счет подготовки данных.
Установка/обновление сервиса SMC
Дистрибутив распространяется в виде установочных пакетов для окружения и сервиса. Загрузите установочные пакеты на сервер и выполните команды для Вашей системы в каталоге с пакетом.
Перед установкой непосредственно сервиса необходимо установить сервисный пакет окружения.
- Установка/обновление SMC осуществляется скриптом
chmod +x ./smc-<версия>-<релиз>.sh && ./smc-<версия>-<релиз>.sh -iс правами администратора. Список всех ключей инсталлятора можно посмотреть, запустив инсталлятор./smc-<версия>-<релиз>.shбез ключей. - Загрузить последнюю версию продукта
curl -s "https://repo.connect2ai.net/api/smc/new" --user '[user]:[pass]' 2>&1 | bashили в интерактивном режимеbash -c "$(curl -s https://repo.connect2ai.net/api/smc --user '[user]:[pass]' 2>&1)". - Обновить SMC
/opt/smc/inupdateв интерактивном режиме. Или запустить с ключём:/opt/smc/inupdate -b- обновить до последней beta версии;/opt/smc/inupdate -r- обновить до последней release версии;/opt/smc/inupdate -n- обновить до последней версии (не важно beta или release).
- Установить модели
/opt/smc/inmodelв интерактивном режиме. - Проверить актуальную версию продукта
curl -s "https://repo.connect2ai.net/api/smc/version. - Посмотреть лог изменений
curl -s "https://repo.connect2ai.net/api/smc/changelog" --user '[user]:[pass]'. - Полное описание всех команд API репозитория можно найти по ссылке https://repo.connect2ai.net/api.
[user]:[pass]- это тот же логин и пароль, что и от Nextcloud. - В папке с продуктом можно добавить 2 файла конфигурации (допускается один общий файл на все продукты в папке с окружением /opt/pve/):
- echo -n
"[user]:[pass]"> /opt/smc/.userapi (это файл авторизации в API, нужен для обновления и загрузки моделей) - echo -n
"http://example.com:3128 [user] [password]"> /opt/smc/.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 toxicity). Установка сервисных моделей невозможна через API, в отличие от моделей классификации.
Модели располагаются в каталоге /opt/smc/pretrained/. Для установки модели необходимо создать каталог /opt/smc/pretrained/<название модели>/ и распаковать в неё архив модели, после чего перезагрузить сервис командой systemctl restart smc.
Проверить корректность работы модели пунктуации можно запросом к 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": "холодная вода"} - toxicity - анализ текста на невежливость, угрозы, брань. Проверить работу можно через API запросом: пример запроса
curl -s -G -X GET "http://АДРЕС_СЕРВЕРА:6181/smc/toxicity?" --data-urlencode "text=нехороший человек" -H "accept: application/json"|jq.Подробнее см в руководстве пользователя.
Установка моделей классификации
Модель классификации это модель обученная на определенном наборе данных (корпусе) и предназначена непосредственно для классификации. Установка модели возможна запросом с помощью методов 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 - модель сжатия фраз, toxicityModel - модель анализа фразы на токсичность. Можно отдельно по названию сервисной модели включать/выключать ее загрузку в GPU. Рабочие модели можно включить в память gpu только все вместе. |
| gpu.embeddingModel | true | |
| gpu.punctuationModel | true | |
| gpu.emotionsModel | true | |
| gpu.compressorModel | true | |
| gpu.emotionsModel | true | |
| gpu.toxicityModel | true | |
| gpu.correctionModel | 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-х экземпляров приложения и моделей и позволит при высокой нагрузке полностью загрузить процессорные ядра.
Часто задаваемые вопросы
| Вопрос | Ответ |
|---|---|