Help:XSvacer:AIAssistant:Deploy: Difference between revisions

From Svacer Wiki
m (minor fixes)
(new deploy scheme)
 
(One intermediate revision by the same user not shown)
Line 1: Line 1:
== Активация и запуск функциональности ==
== Активация и запуск ИИ-ассистента ==


ИИ-ассистент реализован в виде отдельного сервиса, взаимодействующего со Svacer по REST API. Для его запуска необходимо:
ИИ-ассистент реализован в виде отдельного сервиса, взаимодействующего со Svacer по REST API. Для его работы необходимо:


# Активировать функциональность при запуске Svacer и настроить доступ к ИИ-ассистенту;
# Запустить docker-контейнер с моделью машинного обучения
# Развернуть и запустить сервис ИИ-ассистента;
# При необходимости: развернуть PostgreSQL-сервер для хранения базы данных ИИ-ассистента
# Запустить сервис ИИ-ассистента
# Активировать функциональность при запуске Svacer и настроить доступ к ИИ-ассистенту


=== Активация функциональности <code style="white-space: pre;">xsvacer</code> при запуске Svacer ===
=== docker-compose ===
Самый простой способ деплоя — развернуть всё в докер-контейнерах, воспользовавшиcь подготовленным нами [https://svacer.ispras.ru/extra/docker-compose-with-ai.yml docker-compose] файлом:


Для активации функциональности необходимо указать флаг <code style="white-space: pre;">--xsvacer.features aiAssistant</code> при запуске Svacer.
<nowiki>curl -LO https://svacer.ispras.ru/extra/docker-compose-with-ai.yml</nowiki>
docker-compose -f docker-compose-with-ai.yml up -d


==== Настройка доступа к ИИ-ассистенту в Svacer ====
=== Если Svacer установлен из deb/rpm пакета ===
1. Запустите docker-контейнер с моделью машинного обучения


По умолчанию Svacer будет пытаться подключиться к ИИ-ассистенту по адресу <code style="white-space: pre;"><nowiki>http://localhost:8081/</nowiki></code>
docker run --rm -d --name svacerai-model -p 8000:8000 ispras/svacerai-model:latest


Изменить адрес, по которому Svacer будет подключаться к ИИ-ассистенту, можно одним из способов:
2. В PostgreSQL создайте отдельную БД для ИИ-сервера, запустив psql-консоль и выполнив команды:
 
sudo su -l postgres
psql
postgres=# create database svacerai;
postgres=# grant all privileges on database svacerai to svace;
 
(предполагается, что пользователь <code>svace</code> уже [http://Help:Installation#Создание_БД_и_запуск_сервера_Svacer был создан] для сервера Svacer)
 
3. В конфиг-файле ИИ-сервера <code>/etc/default/svacerai</code> укажите аргументы запуска
 
<pre>
# URL подключения к БД из второго шага
SVACERAI_PG_URL="postgres://svace:svace@127.0.0.1:5432/svacerai?sslmode=disable"
 
# адрес и порт модели из первого шага
SVACERAI_MODEL_URL="server-status:http://localhost:8000"
 
# интерфейс и порт, на котором будет запущен ИИ-сервер
SVACERAI_HOST="0.0.0.0:7001"
 
# URL сервера Svacer, который будет подключен к ИИ-серверу
SVACER_HOST="http://localhost:8080"
</pre>
 
4. Запустите systemd-сервис ИИ-сервера
 
systemctl start svacerai
 
5. В конфиг-файле сервера Svacer <code>/etc/default/svacer</code> включите фичу ИИ-ассистента, добавив флаг <code>--xsvacer.features aiAssistant</code> и укажите URL ИИ-сервера
 
<pre>
SVACER_ARGS="--pg ... --store ... --xsvacer.features aiAssistant"
# соответствует переменной SVACERAI_HOST из шага 3
XSVACER_AIASSISTANT_ASSISTANTHOSTURL=http://localhost:7001/
</pre>
 
6. Перезапустите сервер Svacer
 
systemctl restart svacer
 
== Дополнительная конфигурация ==
=== Подключение к серверу ИИ-ассистента ===
По умолчанию Svacer будет пытаться подключиться к ИИ-ассистенту по адресу <code style="white-space: pre;"><nowiki>http://localhost:8081/</nowiki></code>. Изменить этот адрес можно одним из способов:


# При запуске Svacer установить переменную окружения <code style="white-space: pre;"><nowiki>XSVACER_AIASSISTANT_ASSISTANTHOSTURL=http://{адрес ИИ-ассистента}:{порт}/</nowiki></code>
# При запуске Svacer установить переменную окружения <code style="white-space: pre;"><nowiki>XSVACER_AIASSISTANT_ASSISTANTHOSTURL=http://{адрес ИИ-ассистента}:{порт}/</nowiki></code>
Line 28: Line 77:
</pre>
</pre>


==== Настройка значения флага <code>--public-url</code> ====
=== Настройка значения флага --public-url ===


В связи с тем, что ИИ-ассистент использует REST API Svacer, необходимо добавить url ИИ-ассистента в список публичных url Svacer. Это можно сделать, добавив при запуске Svacer флаг:
В связи с тем, что ИИ-ассистент использует REST API Svacer, необходимо добавить URL ИИ-ассистента в список публичных URL Svacer. Это можно сделать, добавив при запуске Svacer флаг:


  --public-url {url ИИ-ассистента}
  --public-url {URL ИИ-ассистента}


Пример:
Пример:
Line 39: Line 88:


{{Note|text=Данная настройка связана с функциональностью генерации коротких ссылок}}
{{Note|text=Данная настройка связана с функциональностью генерации коротких ссылок}}
=== Развёртывание и запуск ИИ-ассистента ===
При развёртывании ИИ-ассистента необходимо выполнить следующие действия:
# Запустить docker-контейнер с моделью машинного обучения;
# При необходимости: развернуть postresql-сервер для хранения базы данных ИИ-ассистента;
# Запустить сервис ИИ-ассистента.


==== Запуск docker-контейнера с моделью машинного обучения ====
==== Запуск docker-контейнера с моделью машинного обучения ====
 
При запуске докер-контейнера с ИИ-моделью, можно создать и примонтировать вольюмы для постоянного хранения базы данных и кэша:
Docker-образ контейнера с моделью можно скачать по ссылке: https://svacer.ispras.ru/docker/images/svacer-ai-model-host.1.0.0.tar.gz (3.3GB)
 
Далее docker-образ необходимо загрузить на docker-хост с помощью команды
 
docker image load -i /path/to/svacer-ai-model-host.1.0.0.tar.gz
 
После этого docker-контейнер может быть запущен следующей командой


  docker volume create svacer-ai-cache
  docker volume create svacer-ai-cache
  docker volume create svacer-ai-pgdata
  docker volume create svacer-ai-pgdata
  docker run -d --name svacer-ai-model-host -p 7000:8000 -v svacer-ai-pgdata:/var/lib/postgresql/data -v svacer-ai-cache:/root/.cache svacer-ai-model-host:1.0.0
  docker run --rm -d --name svacerai-model -p 8000:8000 -v svacer-ai-pgdata:/var/lib/postgresql/data -v svacer-ai-cache:/root/.cache ispras/svacerai-model:latest
 
Том <code style="white-space: pre;">cache</code> будет содержать кэш сервиса взаимодействия с моделью машинного обучения.
 
Том <code style="white-space: pre;">pgdata</code> будет содержать файлы с данными встроенного в docker-образ postgres'а.
 
Порт <code>7000</code> будет использоваться по умолчанию, если не были изменены [[#Параметры подключения сервиса модели машинного обучения|параметры подключения сервиса машинного обучения]]
 
==== Запуск ИИ-ассистента ====
 
Исполняемый файл ИИ-ассистента можно скачать по ссылке: https://svacer.ispras.ru/releases/svacer-ai/svacer-ai-1-0-0-linux.tar.gz (53MB)


После этого ИИ-ассистент может быть запущен командой <code>svacerai-server run</code>
* Вольюм <code style="white-space: pre;">cache</code> будет содержать кэш сервиса взаимодействия с моделью машинного обучения
* Вольюм <code style="white-space: pre;">pgdata</code> будет содержать файлы с данными встроенного в docker-образ PostgreSQL


===== Флаги команды запуска ИИ-ассистента =====
=== Флаги команды запуска ИИ-ассистента ===


Глобальные флаги <code>svacerai-server help</code>
Глобальные флаги <code>svacerai-server help</code>
Line 226: Line 251:
|}
|}


==== Параметры подключения сервиса модели машинного обучения ====
=== Параметры подключения сервиса модели машинного обучения ===


Параметры подключения сервисов модели задаются в виде map, ключами которой являются идентификаторы сервисов. В значении содержатся следующие параметры:
Параметры подключения сервисов модели задаются в виде map, ключами которой являются идентификаторы сервисов. В значении содержатся следующие параметры:

Latest revision as of 14:02, 1 November 2025

Активация и запуск ИИ-ассистента

ИИ-ассистент реализован в виде отдельного сервиса, взаимодействующего со Svacer по REST API. Для его работы необходимо:

  1. Запустить docker-контейнер с моделью машинного обучения
  2. При необходимости: развернуть PostgreSQL-сервер для хранения базы данных ИИ-ассистента
  3. Запустить сервис ИИ-ассистента
  4. Активировать функциональность при запуске Svacer и настроить доступ к ИИ-ассистенту

docker-compose

Самый простой способ деплоя — развернуть всё в докер-контейнерах, воспользовавшиcь подготовленным нами docker-compose файлом:

curl -LO https://svacer.ispras.ru/extra/docker-compose-with-ai.yml
docker-compose -f docker-compose-with-ai.yml up -d

Если Svacer установлен из deb/rpm пакета

1. Запустите docker-контейнер с моделью машинного обучения

docker run --rm -d --name svacerai-model -p 8000:8000 ispras/svacerai-model:latest

2. В PostgreSQL создайте отдельную БД для ИИ-сервера, запустив psql-консоль и выполнив команды:

sudo su -l postgres
psql
postgres=# create database svacerai;
postgres=# grant all privileges on database svacerai to svace;

(предполагается, что пользователь svace уже был создан для сервера Svacer)

3. В конфиг-файле ИИ-сервера /etc/default/svacerai укажите аргументы запуска

# URL подключения к БД из второго шага
SVACERAI_PG_URL="postgres://svace:svace@127.0.0.1:5432/svacerai?sslmode=disable"

# адрес и порт модели из первого шага
SVACERAI_MODEL_URL="server-status:http://localhost:8000"

# интерфейс и порт, на котором будет запущен ИИ-сервер
SVACERAI_HOST="0.0.0.0:7001"

# URL сервера Svacer, который будет подключен к ИИ-серверу
SVACER_HOST="http://localhost:8080"

4. Запустите systemd-сервис ИИ-сервера

systemctl start svacerai

5. В конфиг-файле сервера Svacer /etc/default/svacer включите фичу ИИ-ассистента, добавив флаг --xsvacer.features aiAssistant и укажите URL ИИ-сервера

SVACER_ARGS="--pg ... --store ... --xsvacer.features aiAssistant"
 
# соответствует переменной SVACERAI_HOST из шага 3
XSVACER_AIASSISTANT_ASSISTANTHOSTURL=http://localhost:7001/

6. Перезапустите сервер Svacer

systemctl restart svacer

Дополнительная конфигурация

Подключение к серверу ИИ-ассистента

По умолчанию Svacer будет пытаться подключиться к ИИ-ассистенту по адресу http://localhost:8081/. Изменить этот адрес можно одним из способов:

  1. При запуске Svacer установить переменную окружения XSVACER_AIASSISTANT_ASSISTANTHOSTURL=http://{адрес ИИ-ассистента}:{порт}/
  2. В конфигурационном файле svacer.cfg добавить раздел
...
xsvacer:
  ...
  aiAssistant:
    assistantHostUrl: http://{адрес ИИ-ассистента}:{порт}/
...

Настройка значения флага --public-url

В связи с тем, что ИИ-ассистент использует REST API Svacer, необходимо добавить URL ИИ-ассистента в список публичных URL Svacer. Это можно сделать, добавив при запуске Svacer флаг:

--public-url {URL ИИ-ассистента}

Пример:

--xsvacer.features aiAssistant --public-url https://svacer-ai-demo.ispras.ru
Данная настройка связана с функциональностью генерации коротких ссылок

Запуск docker-контейнера с моделью машинного обучения

При запуске докер-контейнера с ИИ-моделью, можно создать и примонтировать вольюмы для постоянного хранения базы данных и кэша:

docker volume create svacer-ai-cache
docker volume create svacer-ai-pgdata
docker run --rm -d --name svacerai-model -p 8000:8000 -v svacer-ai-pgdata:/var/lib/postgresql/data -v svacer-ai-cache:/root/.cache ispras/svacerai-model:latest
  • Вольюм cache будет содержать кэш сервиса взаимодействия с моделью машинного обучения
  • Вольюм pgdata будет содержать файлы с данными встроенного в docker-образ PostgreSQL

Флаги команды запуска ИИ-ассистента

Глобальные флаги svacerai-server help

NAME:
   svacerai-server - Svace AI server

USAGE:
   svacerai-server [global options] command [command options] [arguments...]

COMMANDS:
   run
   help, h  Shows a list of commands or help for one command

GLOBAL OPTIONS:
   --debug            (default: false) [$SVACER_AI_DEBUG]
   --log-level value  Defines log level. Available: info, warn, error [$SVACER_AI_LOG_LEVEL]
   --log value        Defines path to log file. By default file /tmp/svacer-ai-*.log will be created.
   --config value     Define path to file with config in YAML format (by default svacer-ai.cfg).
   --help, -h         show help
Название Тип данных Описание
debug bool Отладочный режим логирования
log-level string Уровень логирования
log string Путь к файлу с логами
config string Путь к конфигурационному файлу

Флаги запуска ИИ-ассистента svacerai-server run help

NAME:
   svacerai-server run

USAGE:
   svacerai-server run [command options] [arguments...]

OPTIONS:
   --pg value                           Defines PostgreSQL connection URL
   --host value                         Defines host name for the server
   --svacer-host value                  Defines remote Svacer host
   --ai-host value [ --ai-host value ]  Specify the address of the service with AI models in the format {host id}:{http://{host address}}
   --help, -h                           show help
С помощью флагов запуска можно переопределять наиболее часто меняющиеся параметры конфигурации без необходимости создания файла svacer-ai.cfg
Название Тип данных Описание Формат
pg string Строка подключения к базе данных ИИ-ассистента https://www.postgresql.org/docs/current/libpq-connect.html#LIBPQ-CONNSTRING-URIS
host string Адрес сетевого интерфейса и порт, на которых будет запущен ИИ-ассистент {ip адрес}:{порт}
svacer-host string Url сервиса Svacer, к API которого будет обращаться ИИ-ассистент https://en.wikipedia.org/wiki/URL#Syntax
ai-host []string Список адресов сервисов с моделями машинного обучения. host-id — идентификатор сервиса моделей в конфигурации {host id}:{url сервиса моделей}
При использовании конфигурации по умолчанию, {host id} должен быть равен server-status

Пример:

svacerai-server run --pg postgres://svace:svace@127.0.0.1:5432/svacer_ai --host localhost:8095 --svacer-host http://localhost:8094 --ai-host server-status:http://localhost:7000

Конфигурация ИИ-ассистента

Управление настройками ИИ-ассистента осуществляется с помощью конфигурационного yaml-файла svacer-ai.cfg в рабочей директории сервиса.

Название Тип данных Описание Значение в конфигурации по умолчанию
db/url string Строка подключения к базе данных ИИ-ассистента postgres://postgres:postgres@localhost:5432/svacer_ai?sslmode=disable
http/host string Адрес сетевого интерфейса и порт, на которых будет запущен ИИ-ассистент localhost:8081
http/svacerHostUrl

ai/svacerHostUrl

string Url сервиса Svacer, к API которого будет обращаться ИИ-ассистент http://localhost:8080/
http/svacerClientTlsCfg?

ai/svacerClientTlsCfg

*tls.Config Настройки безопасного подключения к Svacer
svacerClientTlsCfg:
  insecureSkipVerify: true
ai/svacerReviewCommentTemplate string Шаблон для формирования комментария к разметке выполненной с помощью ИИ-ассистента. В шаблон передаётся структура processing.MarkerResult См. конфигурацию по умолчанию
ai/svacerReviewTags []string Список названий меток, которые будут установлены маркерам, размеченным с помощью ИИ-ассистента [AI]
hosts map[string]object Список параметров подключения к сервисам с моделями машинного обучения, которые будет использовать ИИ-ассистент
{id сервиса моделей}:
  {параметры подключения}
  (см. описание ниже)

Параметры подключения сервиса модели машинного обучения

Параметры подключения сервисов модели задаются в виде map, ключами которой являются идентификаторы сервисов. В значении содержатся следующие параметры:

Название Тип данных Описание Значение в конфигурации по умолчанию
url string Url сервиса с моделями машинного обучения http://localhost:7000
settings/requestBatchSize int Количество предупреждений, отправляемых для анализа моделью за раз 512
settings/httpMultipartParameterName

settings/httpMultipartFileName

settings/httpMultipartContentType

string Параметра multipart-запроса вызова модели
httpMultipartParameterName: "file"
httpMultipartFileName: "file.csv"
httpMultipartContentType: "application/vnd.ms-excel"
resources/modelList

resources/modelInference

resources/logs

string Сопоставление названий ресурсов сервиса моделей
modelList: "/models_info"

modelInference: "/use_model_for_file"

logs: "/log_file"
defaults/dataCollector/csvSeparator string Разделитель csv-файла, который отправляется в сервис моделей ","
defaults/dataCollector/additionalLineNumber int Количество строк исходного кода, которые добавляются до и после строки предупреждения при отправке в сервис моделей 0
defaults/dataCollector/csvColumns []string Названия столбцов csv-файла, который отправляется в сервис моделей [id, warnClass, code]
defaults/interpretation/defaultValue

defaults/interpretation/defaultValue

defaults/interpretation/defaultValue

string Названия статусов, которые присваиваются результату вызова модели
defaultValue: "Undecided"

leftClassValue: "False Positive"

rightClassValue: "Confirmed"

Конфигурация по умолчанию

Данная конфигурация применяется по умолчанию при запуске ИИ-ассистента, если отсутствует конфигурационный файл svacer-ai.cfg.

Если файл svacer-ai.cfg существует, в нём должны содержаться все указанные параметры конфигурации.
varSvacerHostUrl: &svacerHostUrl "http://localhost:8080/"
varSvacerClientTlsCfg: &svacerClientTlsCfg
  insecureSkipVerify: true
db:
  url: "postgres://postgres:postgres@localhost:5432/svacer_ai?sslmode=disable"
http:
  host: "localhost:8081"
  svacerHostUrl: *svacerHostUrl
  svacerClientTlsCfg: *svacerClientTlsCfg
ai:
  svacerHostUrl: *svacerHostUrl
  svacerClientTlsCfg: *svacerClientTlsCfg
  svacerReviewCommentTemplate: |+
    `Timestamp: {{now.UTC.Format "2006-01-02T15:04:05Z"}}`

    `AI model: {{.Pipeline.Name}}`

    `Confidence level: {{ printf "%.2f" (index .Interpretation 0).Confidence }}`

  svacerReviewTags:
    - AI
  hosts:
    server-status:
      url: "http://localhost:7000"
      settings:
        requestBatchSize: 512
        httpMultipartParameterName: "file"
        httpMultipartFileName: "file.csv"
        httpMultipartContentType: "application/vnd.ms-excel"
      resources:
        modelList: "/models_info"
        modelInference: "/use_model_for_file"
        logs: "/log_file"
      defaults:
        dataCollector:
          csvSeparator: ","
          additionalLinesNumber: 0
          csvColumns:
            - "id"
            - "warnClass"
            - "code"
        interpretation: 
          defaultValue: "Undecided"
          leftClassValue: "False Positive"
          rightClassValue: "Confirmed"