Skip to Content

Установка компонентов Целевых Машин

1. Установка Docker

Настоящее краткое руководство основано на официальных инструкций:

При наличии интернета доступа к необходимым ресурсам, установите docker согласно официально инструкции.

В отсутствие интернета воспользуйтесь предоставленной версией согласно ОС (см. таблицу).

ФайлОписание
distr/externals/{distribution}/docker.zipДистрибутив Docker с плагинами (compose, buildx)
distr/externals/{distribution}/nvidia-docker2.zipПакет NVIDIA Container Toolkit для взаимодействия Docker с GPU
docker/docker.serviceФайл службы для автоматического запуска Docker при старте системы
distr/externals/NVIDIA-Linux-x86_64-XXX.XXX.XX.runПакеты установки драйверов Nvidia

Скопируйте на машину с AI Server файлы, приведенные в таблице ниже — они находятся в комплекте поставки Primo RPA AI Server.

Определение {distribution}

ОС{distribution}
Astra Linux Special Edition 1.7astra1.7
Ubuntu 22.04ubuntu22.04
Ubuntu 24.04ubuntu24.04

Распаковка архива

Распакуйте архив во временную папку:

mkdir -p distr/externals/{distribution}/docker
unzip distr/externals/{distribution}/docker.zip -d distr/externals/{distribution}/docker
sudo dpkg -i distr/externals/{distribution}/docker/*.deb

Установка системных служб

sudo cp docker/docker.service /etc/systemd/system/
sudo systemctl enable docker.service
sudo systemctl daemon-reload
sudo systemctl restart docker

Создание группы docker

Проверьте наличие группы docker на сервере:

cat /etc/group | grep docker

Если группы нет, добавьте:

sudo groupadd docker

Раздача прав

Добавьте текущего пользователя в группу docker. Например, для пользователя ubuntu:

sudo usermod -aG docker ubuntu && \ newgrp docker

Взаимодействие Docker с GPU

Архитектура

Взаимосвязь между GPU и приложениями происходит по следующей цепочке:

alt

Таким образом, для работы с GPU из Docker необходимо:

  • Совместимая GPU NVIDIA
  • CUDA-драйвер на машине-хосте
  • NVIDIA Container Toolkit (nvidia-docker2)

При этом компоненты должны взаимодействовать друг с другом по версиям. Пример совместимых версий:

GPUCUDA-драйвер (Версия CUDA)nvidia-docker2 (NVIDIA Container Toolkit)
NVIDIA GeForce RTX 4090550.144.03 (12.4)2.13.0-1 (1.13.5-1)
NVIDIA GeForce RTX 4090570.172.08 (12.8)2.13.0-1 (1.13.5-1)
NVIDIA GeForce RTX 4090580.95.05 (13.0)2.14.0-1 (1.18.0~rc.4-1)
NVIDIA GeForce RTX 5090570.124.04 (12.8)2.14.0-1 (1.17.8-1)

Используйте команду для определения рекомендованной версии драйвера (только для Ubuntu):

ubuntu-drivers devices

Рекомендованная версия будет отмечена флагом recommended, например:

vendor : NVIDIA Corporation model : AD102 [GeForce RTX 4090] driver : nvidia-driver-580-server - distro non-free driver : nvidia-driver-535 - distro non-free ↓↓↓ driver : nvidia-driver-580-open - distro non-free recommended ↑↑↑ driver : nvidia-driver-535-server-open - distro non-free driver : nvidia-driver-580-server-open - distro non-free driver : nvidia-driver-535-open - distro non-free driver : nvidia-driver-570-server - distro non-free driver : nvidia-driver-570-server-open - distro non-free driver : nvidia-driver-570-open - distro non-free driver : nvidia-driver-535-server - distro non-free driver : nvidia-driver-580 - distro non-free driver : nvidia-driver-570 - distro non-free driver : xserver-xorg-video-nouveau - distro free builtin

Установка драйвера

1. Через apt
  • Удалите текущие драйверы.
sudo apt-get remove --purge '^nvidia-.'
sudo apt-get remove --purge '^libnvidia-.'
sudo apt-get remove --purge '^cuda-.*'

Если драйверы были установлены, перезагрузите сервер

sudo reboot
  • Установите выбранный драйвер
sudo apt install nvidia-driver-580-open nvidia-dkms-580-open nvidia-utils-580
sudo reboot
2. С использованием run-файла

Установка nvidia-docker2 / Nvidia Container Toolkit

Распакуйте архив во временную папку:

mkdir -p distr/externals/{distribution}/nvidia-docker2
unzip distr/externals/{distribution}/nvidia-docker2.zip -d distr/externals/{distribution}/nvidia-docker2

Установите пакеты:

sudo dpkg -i distr/externals/{distribution}/nvidia-docker2/*.deb

Проверка

Проверьте наличие драйвера в системе:

nvidia-smi

При наличии доступа к репозиториям docker проверьте доступность драйвера GPU внутри контейнера:

docker run --rm --gpus all nvidia/cuda:12.8.0-base-ubuntu24.04 nvidia-smi
  • Если драйвер доступен, в терминале будет информация по доступным устройствам Nvidia.
  • В противном случае настройте драйвер принудительно и повторите проверку доступности:
sudo nvidia-ctk runtime configure --runtime=docker && \ sudo systemctl restart docker

2. Настройка учетной записи

Для работы агента создайте группу primo-ai и учетную запись agent.

sudo groupadd primo-ai
sudo useradd -g primo-ai -m -s /bin/bash agent
sudo usermod -aG docker agent

3. Создание подсети для запуска контейнеров

Подсеть используется NLP-сервером, IDP-сервером, FT-сервером и LLM-ядром.

docker network create \ --driver bridge \ --subnet=172.19.0.0/24 \ --gateway=172.19.0.1 \ agent_agent_ai

4. Установка и настройка агента

Разверните файлы агента на целевой машине.

sudo mkdir -p /app/Primo.AI /app/Primo.AI/Agent /app/Primo.AI/AgentData
sudo unzip distr/Agent-linux.zip -d /app/Primo.AI/Agent
sudo chmod -R 771 /app/Primo.AI/Agent /app/Primo.AI/AgentData
sudo chown -R agent:primo-ai /app/Primo.AI/Agent /app/Primo.AI/AgentData

Установите агент как службу и настройте автозапуск:

sudo cp /app/Primo.AI/Agent/Primo.AI.Agent.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable /etc/systemd/system/Primo.AI.Agent.service

Настройте сервис, скорректировав конфигурационный файл /app/Primo.AI/Agent/appsettings.ProdLinux.json. Обычно требуется отредактировать следующий блок:

"Api": { "AgentId": "{91E221E8-8E13-4100-8BCB-84EA318C32DA}", // Уникальный идентификатор агента ... "AuthBaseUrl": "https://primo-rpa-ai-server:44392", "ApiBaseUrl": "https://primo-rpa-ai-server:44392", "InferenceBaseUrl": "https://primo-rpa-ai-server:44392", "LogsBaseUrl": "https://primo-rpa-ai-server:44392", ... "AgentBaseUrl": "http://172.19.0.1:5092", // URL агента, доступный из IDP-сервера },
  • AgentId — уникальный идентификатор агента в виде значения с типом данных GUID.
ℹ️

Идентификатор агента можно скопировать из Портала управления в разделе Настройки > Целевые машины. Создайте Целевую машину и скопируйте значения из столбца “Идентификатор”.

Установите корректный идентификатор агента, заменив на него заглушку XXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXXX:

sudo sed -i 's|"AgentId": "{91E221E8-8E13-4100-8BCB-84EA318C32DA}"|"AgentId": "{XXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXXX}"|g' /app/Primo.AI/Agent/appsettings.ProdLinux.json
  • Если использована нестандартная подсеть Docker, укажите адрес хоста: AgentBaseUrl, заменив http://XXX.XXX.XX.1:5092 на эндпоинт агента, доступный из Docker-контейнера:
sudo sed -i 's|http://172.19.0.1:5092|http://XXX.XXX.XX.1:5092|g' /app/Primo.AI/Agent/appsettings.ProdLinux.json
  • Обязательно установите адрес Primo.AI.Api и его компонентов – XxxxxxxBaseUrl, заменив https://XXXXXXXXXXXXXXXXX:44392 на доступный из Целевой машины эндпоинт AI Server:
sudo sed -i 's|https://primo-rpa-ai-server:44392|https://XXXXXXXXXXXXXXXXX:44392|g' /app/Primo.AI/Agent/appsettings.ProdLinux.json

Запустите службы:

sudo systemctl start Primo.AI.Agent

Проверьте статус службы:

sudo systemctl status Primo.AI.Agent

Просмотрите журнал службы:

sudo journalctl -u Primo.AI.Agent

Настройка правила брандмауэра ufw

Для разрешения доступа к API агента выполните команды:

sudo ufw allow 5002/tcp

Или для создания белого списка:

sudo ufw allow from x.x.x.x to any port 5002 proto tcp

Где x.x.x.x - IP-адрес машины, на которой установлена серверная часть AI Server.

Также создайте правило для доступности агента по http:5092 только из других компонентов целевой машины внутри подсети agent_agent_ai (IDP-, NLP- и FT-сервер):

sudo ufw allow from 172.19.0.0/24 to 172.19.0.1 port 5092 proto tcp

Настройка SELinux

Проверьте, включен ли SELinux в системе командой sestatus. Если включен, измените контекст исполняемого файла агента:

sudo chcon -t bin_t /app/Primo.AI/Agent/Primo.AI.Agent

5. Компоненты Умного OCR

КомпонентРазновидность$nameИмя файлаИмя образа
IDP-серверCPUai-server-idp-cpuai-server-idp-cpu.tar.7znexus.primo-rpa.ru:8000/primo-rpa/ai-server-idp-cpu
IDP-серверGPUai-server-idp-gpuai-server-idp-gpu.tar.7znexus.primo-rpa.ru:8000/primo-rpa/ai-server-idp-gpu

Вариант загрузки образов 1: скачайте необходимые архивы из официальной поставки AI Server:

name="ai-server-idp-cpu" # или ai-server-idp-gpu - см. таблицу выше sudo apt update && sudo apt install 7z wget --content-disposition "https://disk.primo-rpa.ru/index.php/s/t9BHBjR6PP06Yax/download?path=%2FRelease%2FAI%20Server%2Fdistr&files=$name.tar.7z" 7z x $name.tar.7z docker load -i $name.tar

Вариант загрузки образов 2: используя репозиторий Docker:

Работает при наличии подключения к nexus.primo-rpa.ru:8000.

name="ai-server-idp-cpu" # или ai-server-idp-gpu - см. таблицу выше image="primo-rpa/$name" docker pull nexus.primo-rpa.ru:8000/$image docker tag nexus.primo-rpa.ru:8000/$image $image docker rmi nexus.primo-rpa.ru:8000/$image

Имя образа в файле конфигурации.

  • Только для GPU. Скорректируйте имя образа:
sudo sed -i 's|"ImageName": "primo-rpa/ai-server-idp-cpu"|"ImageName": "primo-rpa/ai-server-idp-gpu"|g' /app/Primo.AI/Agent/appsettings.ProdLinux.json

6. Компоненты Задач NLP

КомпонентРазновидность$nameИмя файлаИмя образа
NLP-сервер*ai-server-nlpai-server-nlp.tar.7znexus.primo-rpa.ru:8000/primo-rpa/ai-server-nlp
FT-серверGPUai-server-ftai-server-ft.tar.7znexus.primo-rpa.ru:8000/primo-rpa/ai-server-ft
Ollama*ai-server-ollamadistr/ai-server-ollama.tar.7znexus.primo-rpa.ru:8000/primo-rpa/ai-server-ollama
vLLMCPUai-server-vllm-cpudistr/ai-server-vllm-cpu.tar.7znexus.primo-rpa.ru:8000/primo-rpa/ai-server-vllm-cpu
vLLMGPUai-server-vllm-gpudistr/ai-server-vllm-gpu.tar.7znexus.primo-rpa.ru:8000/primo-rpa/ai-server-vllm-gpu

Выбор LLM-движка (Ollama, vLLM)

LLM-модели отличаются высокой требовательностью к производительности. Время генерации токенов на графическом ускорителе на порядок ниже, чем на CPU.

Primo RPA AI Server поддерживает 2 разновидности LLM-ядра — vLLM и Ollama. Для высокопроизводительных вычислений на графической карте подходит vLLM, тогда как Ollama лучше работает на CPU (отличается меньшим временем генерации первого токена). Свежие видеокарты с высокой compute capability несколько месяцев поддерживаются только движком Ollama.

Выбор ядра также влияет на выбор модели. Модель base-llm-06-7b-safetensors-fp16 поддерживается только движком vLLM, тогда как модель base-llm-06-7b-gguf-q8 только Ollama.

Для работы с LLM-ядром необходимо выбрать хотя бы 1 вариант из представленных.

О FT-сервере

FT-сервер – компонент целевой машины, который отвечает за файнтюнинг моделей.

ℹ️

Файнтюнинг моделей – ресурсоемкий процесс, который в AI Server исполняется исключительно на ресурсах графического ускорителя.

В настоящий момент поддерживается файнтюнинг только для задач классификации текста.

Вариант загрузки образов 1: скачайте необходимые архивы из официальной поставки AI Server:

1. Если на машине нет GPU:

names="ai-server-nlp ai-server-ollama ai-server-vllm-cpu" sudo apt update && sudo apt install 7z for name in $names; do wget --content-disposition "https://disk.primo-rpa.ru/index.php/s/t9BHBjR6PP06Yax/download?path=%2FRelease%2FAI%20Server%2Fdistr&files=$name.tar.7z" 7z x $name.tar.7z docker load -i $name.tar done

2. Если на машине есть GPU:

names="ai-server-nlp ai-server-ft ai-server-ollama ai-server-vllm-gpu" sudo apt update && sudo apt install 7z for name in $names; do wget --content-disposition "https://disk.primo-rpa.ru/index.php/s/t9BHBjR6PP06Yax/download?path=%2FRelease%2FAI%20Server%2Fdistr&files=$name.tar.7z" 7z x $name.tar.7z docker load -i $name.tar done

Вариант загрузки образов 2: используя репозиторий Docker:

Работает при наличии подключения к nexus.primo-rpa.ru:8000.

1. Если на машине нет GPU:

names="ai-server-nlp ai-server-ollama ai-server-vllm-cpu" for name in $names; do image="primo-rpa/$name" docker pull nexus.primo-rpa.ru:8000/$image docker tag nexus.primo-rpa.ru:8000/$image $image docker rmi nexus.primo-rpa.ru:8000/$image done

2. Если на машине есть GPU:

names="ai-server-nlp ai-server-ft ai-server-ollama ai-server-vllm-gpu" for name in $names; do image="primo-rpa/$name" docker pull nexus.primo-rpa.ru:8000/$image docker tag nexus.primo-rpa.ru:8000/$image $image docker rmi nexus.primo-rpa.ru:8000/$image done

Имя образа в файле конфигурации.

  • Только для GPU. Скорректируйте имя образов:
sudo sed -i 's|"ImageName": "primo-rpa/ai-server-vllm-cpu"|"ImageName": "primo-rpa/ai-server-vllm-gpu"|g' /app/Primo.AI/Agent/appsettings.ProdLinux.json

7. Компоненты Агентских систем.

КомпонентРазновидностьИмя файлаИмя образа
RAG-серверGPUai-server-rag-gpu.tar.7znexus.primo-rpa.ru:8000/primo-rpa/ai-server-rag-gpu
PostgreSQL + pgVector*distr/externals/pgvector_pg18.tar.7znexus.primo-rpa.ru:8000/externals/pgvector:pg18
Исполнитель агентских систем*distr/ai-server-langflow-backend.tar.7znexus.primo-rpa.ru:8000/primo-rpa/ai-server-langflow-backend
IgX-сервер*distr/ai-server-igx.tar.7znexus.primo-rpa.ru:8000/primo-rpa/ai-server-igx

Вариант загрузки образов 1: скачайте необходимые архивы из официальной поставки AI Server:

#основные образы sudo apt update && sudo apt install 7z names="ai-server-rag-gpu ai-server-langflow-backend ai-server-igx" for name in $names; do wget --content-disposition "https://disk.primo-rpa.ru/index.php/s/t9BHBjR6PP06Yax/download?path=%2FRelease%2FAI%20Server%2Fdistr&files=$name.tar.7z" 7z x $name.tar.7z docker load -i $name.tar done #PostgreSQL + pgVector wget --content-disposition "https://disk.primo-rpa.ru/index.php/s/t9BHBjR6PP06Yax/download?path=%2FRelease%2FAI%20Server%2Fdistr%2Fexternals&files=pgvector_pg18.tar.7z" 7z x pgvector_pg18.tar.7z docker load -i pgvector_pg18.tar

Вариант загрузки образов 2: используя репозиторий Docker:

Работает при наличии подключения к nexus.primo-rpa.ru:8000.

images="primo-rpa/ai-server-rag-gpu \ externals/pgvector:pg18 \ primo-rpa/ai-server-langflow-backend \ primo-rpa/ai-server-igx" for image in $images; do docker pull nexus.primo-rpa.ru:8000/$image docker tag nexus.primo-rpa.ru:8000/$image $image docker rmi nexus.primo-rpa.ru:8000/$image done

Данные Исполнителя агентских систем

При необходимости чтения файлов (например, для наполнения БД RAG-системы), их можно разместить в /app/Primo.AI/AgentData/LangflowData/95XX/..., где 95XX – порт контейнера с Исполнителем агентских систем. Эта папка будет подключена как том в контейнеры Исполнителя агентских систем. В проекте необходимо будет указать путь к этой папке, как /app/data/.... Изменить это поведение можно в файле конфигурации агента, ключ Lfx > Volumes:

sudo nano /app/Primo.AI/Agent/appsettings.ProdLinux.json