Установка компонентов Целевых Машин
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.7 | astra1.7 |
| Ubuntu 22.04 | ubuntu22.04 |
| Ubuntu 24.04 | ubuntu24.04 |
Распаковка архива
Распакуйте архив во временную папку:
mkdir -p distr/externals/{distribution}/dockerunzip distr/externals/{distribution}/docker.zip -d distr/externals/{distribution}/dockersudo dpkg -i distr/externals/{distribution}/docker/*.debУстановка системных служб
sudo cp docker/docker.service /etc/systemd/system/sudo systemctl enable docker.servicesudo systemctl daemon-reloadsudo 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 и приложениями происходит по следующей цепочке:

Таким образом, для работы с GPU из Docker необходимо:
- Совместимая GPU NVIDIA
- CUDA-драйвер на машине-хосте
- NVIDIA Container Toolkit (nvidia-docker2)
При этом компоненты должны взаимодействовать друг с другом по версиям. Пример совместимых версий:
| GPU | CUDA-драйвер (Версия CUDA) | nvidia-docker2 (NVIDIA Container Toolkit) |
|---|---|---|
| NVIDIA GeForce RTX 4090 | 550.144.03 (12.4) | 2.13.0-1 (1.13.5-1) |
| NVIDIA GeForce RTX 4090 | 570.172.08 (12.8) | 2.13.0-1 (1.13.5-1) |
| NVIDIA GeForce RTX 4090 | 580.95.05 (13.0) | 2.14.0-1 (1.18.0~rc.4-1) |
| NVIDIA GeForce RTX 5090 | 570.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-580sudo reboot2. С использованием run-файла
-
Выберите run-файл для установки в комплекте поставки. Если подходящего файла нет, скачайте его из https://www.nvidia.com/en-us/drivers/unix/ (архивные: https://download.nvidia.com/XFree86/Linux-x86_64/ )
-
Установите драйвер:
sudo chmod +x ./distr/externals/NVIDIA-Linux-x86_64-570.124.04.run && \ ./distr/externals/NVIDIA-Linux-x86_64-570.124.04.run
Установка nvidia-docker2 / Nvidia Container Toolkit
Распакуйте архив во временную папку:
mkdir -p distr/externals/{distribution}/nvidia-docker2unzip 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 docker2. Настройка учетной записи
Для работы агента создайте группу primo-ai и учетную запись agent.
sudo groupadd primo-aisudo useradd -g primo-ai -m -s /bin/bash agentsudo usermod -aG docker agent3. Создание подсети для запуска контейнеров
Подсеть используется NLP-сервером, IDP-сервером, FT-сервером и LLM-ядром.
docker network create \
--driver bridge \
--subnet=172.19.0.0/24 \
--gateway=172.19.0.1 \
agent_agent_ai4. Установка и настройка агента
Разверните файлы агента на целевой машине.
sudo mkdir -p /app/Primo.AI /app/Primo.AI/Agent /app/Primo.AI/AgentDatasudo unzip distr/Agent-linux.zip -d /app/Primo.AI/Agentsudo chmod -R 771 /app/Primo.AI/Agent /app/Primo.AI/AgentDatasudo 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-reloadsudo 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.Agent5. Компоненты Умного OCR
| Компонент | Разновидность | $name | Имя файла | Имя образа |
|---|---|---|---|---|
| IDP-сервер | CPU | ai-server-idp-cpu | ai-server-idp-cpu.tar.7z | nexus.primo-rpa.ru:8000/primo-rpa/ai-server-idp-cpu |
| IDP-сервер | GPU | ai-server-idp-gpu | ai-server-idp-gpu.tar.7z | nexus.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.json6. Компоненты Задач NLP
| Компонент | Разновидность | $name | Имя файла | Имя образа |
|---|---|---|---|---|
| NLP-сервер | * | ai-server-nlp | ai-server-nlp.tar.7z | nexus.primo-rpa.ru:8000/primo-rpa/ai-server-nlp |
| FT-сервер | GPU | ai-server-ft | ai-server-ft.tar.7z | nexus.primo-rpa.ru:8000/primo-rpa/ai-server-ft |
| Ollama | * | ai-server-ollama | distr/ai-server-ollama.tar.7z | nexus.primo-rpa.ru:8000/primo-rpa/ai-server-ollama |
| vLLM | CPU | ai-server-vllm-cpu | distr/ai-server-vllm-cpu.tar.7z | nexus.primo-rpa.ru:8000/primo-rpa/ai-server-vllm-cpu |
| vLLM | GPU | ai-server-vllm-gpu | distr/ai-server-vllm-gpu.tar.7z | nexus.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
done2. Если на машине есть 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
done2. Если на машине есть 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.json7. Компоненты Агентских систем.
| Компонент | Разновидность | Имя файла | Имя образа |
|---|---|---|---|
| RAG-сервер | GPU | ai-server-rag-gpu.tar.7z | nexus.primo-rpa.ru:8000/primo-rpa/ai-server-rag-gpu |
| PostgreSQL + pgVector | * | distr/externals/pgvector_pg18.tar.7z | nexus.primo-rpa.ru:8000/externals/pgvector:pg18 |
| Исполнитель агентских систем | * | distr/ai-server-langflow-backend.tar.7z | nexus.primo-rpa.ru:8000/primo-rpa/ai-server-langflow-backend |
| IgX-сервер | * | distr/ai-server-igx.tar.7z | nexus.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