Действия

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

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

Строка 10: Строка 10:
Для работы smc рекомендуется использовать '''видеокарту''' NVIDIA поддерживающую технологию CUDA и имеющую в составе ядра CUDA.
Для работы smc рекомендуется использовать '''видеокарту''' NVIDIA поддерживающую технологию CUDA и имеющую в составе ядра CUDA.


В случае отсутствия видеокарты для нормальной работы сервиса на каждые 100 одновременных запросов классификации необходимо обеспечить 1 CPU  >= 2.20GHz с поддержкой инструкций AVX2 или новее.
В случае отсутствия видеокарты для нормальной работы сервиса необходимо обеспечить не менее 8 потоков CPU  >= 2.20GHz с поддержкой инструкций AVX2 или новее. В конфигурации 8 потоков Intel(R) Xeon(R) Gold 6148 2.40GHz 6Гб ОЗУ фраза 10 слов классифицируется 0.2с, соответственно за секунду может быть распознано до 5 фраз. Увеличение количества ядер/потоков дает прирост производительности, но не прямо пропорциональный.


Оперативной памяти необходимо не менее 4Gb.
Оперативной памяти необходимо не менее 4Gb.


Для обучения моделей рекомендуется использовать видеокарту. Обучение модели на корпусе размером 7500 строк занимает на видеокарте А16(одном из 4-х ее ядер) около 1 часа.
Для обучения моделей рекомендуется использовать видеокарту. Обучение модели на корпусе размером 7500 строк занимает на ВМ с 16 ядрами, 16Гб ОЗУ и видеокартой А16(одном из 4-х ее ядер) около 20 минут. Недостаточная мощность CPU может увеличить время обучение за счет подготовки данных.
 





Версия от 12:31, 6 декабря 2024

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

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

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


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