Развертывание сервиса AI-ассистент LLM
В данной статье представлено описание настройки необходимого окружения на сервере и алгоритма развертывания сервиса.
Настройка окружения
Решение поставляется в виде архива для установки при помощи Docker Compose.
В случае отсутствия в системе Docker и Docker Compose выполните их установку по инструкции с официального сайта Docker для соответствующей версии операционной системы.
Дополнительно для работы модели необходимо установить следующее программное обеспечение на сервер:
- CUDA 12;
- Nvidia Driver версии совместимой с установленной версией CUDA;
- NVIDIA Container Toolkit.
Все перечисленное программное обеспечение можно скачать с официальных ресурсов NVIDIA.
Порядок установки
Развертывание сервиса
Для развертывания сервиса необходимо последовательно выполнить следующие команды:
- Распаковать архив: unzip llm-knowledge-base.zip
- Перейти в директорию с распакованными файлами: cd LLM_for_Knowledge_Base
- Выполнить команды для запуска скрипта установки: chmod +x install.sh
- В файле .env необходимо установить значения переменных:
./install.sh
Таблица 1 — Параметры файла .env
Параметр | Описание | Требуется заполнение |
MODEL_PATH | Путь до LLM модели | Заполнено по умолчанию |
EMBEDDING_MODEL_PATH | Путь до модели эмбеддингов | Заполнено по умолчанию |
MYSQL_ADDRESS | Адрес MySQL базы данных | Да |
MYSQL_USER | Пользователь MySQL базы данных | Заполнено по умолчанию |
MYSQL_PASSWORD | Пароль для пользователя MySQL базы данных | Заполнено по умолчанию |
MYSQL_DB | Имя базы данных | Заполнено по умолчанию |
BPMSOFT_LINK | Адрес школы BPMSoft | Заполнено по умолчанию |
API_ADDRESS | Адрес API сервиса | Да |
BACKEND_PORT | номер порта backend | Заполнено по умолчанию |
TAG=0.1.0 | версия сервиса, которую требуется запустить | Заполнено по умолчанию |
TENSOR_PARALLEL_SIZE=1 | число одновременно используемых видеокарт | Заполнено по умолчанию |
WORKER_USE_RAY=False | True, если TENSOR_PARALLEL_SIZE > 1, иначе – False | Заполнено по умолчанию |
GPU_MEMORY_UTILIZATION | Доля видеопамяти, используемой под вычисления. Не рекомендуется превышать значение 0.8, так как для работы модели необходим кэш, который также хранится в видеопамяти. При возникновении ошибки «Out of memory» можно уменьшить значение параметра до 0.6-0.7, что, однако, может негативно сказаться на производительности | Заполнено по умолчанию |
GENERATE_SERVICE_USER | Имя учетной записи администратора сервиса дообучения. Должно совпадать со значением системной настройки «LlmUser» в BPMSoft | Да |
GENERATE_SERVICE_PASSWORD | Пароль учетной записи администратора сервиса дообучения. Должно совпадать со значением системной настройки «LlmPassword» в BPMSoft | Да |
CES_URL | Адрес CES для проверки статуса лицензии | Да |
MAX_CONTEXT_LENGTH | Параметр, определяющий максимальную длину контекста, на основе которого модель формирует свой ответ. В нашем случае контекст представляет собой статьи базы знаний, а его длина измеряется в символах. Значение по умолчанию оптимизировано для соответствия системным требованиям, и изменение этого параметра без необходимости не рекомендуется. При возникновении ошибки «Out of memory» допустимо уменьшение значения, однако это может привести к снижению качества работы модели в некоторых случаях | Заполнено по умолчанию |
MAX_MODEL_LENGTH | Максимальная длина входа модели, которая измеряется в символах. Его длина измеряется в символах. Значение параметра по умолчанию оптимизировано под системные требования, не рекомендуется менять без необходимости. Должно быть по меньшей мере на 4000 больше, чем MAX_CONTEXT_LENGTH. При возникновении ошибки «Out of memory» допускается уменьшение значения, что в некоторых случаях может приводить к снижению качества. | Заполнено по умолчанию |
- В файле docker-compose.yml в параметре device_ids необходимо указать идентификатор видеокарты, который будет использоваться для каждого из сервисов. По умолчанию — ["0"] для сервиса генерации и ["1"] для сервиса дообучения.
При необходимости развернуть несколько сервисов дообучения на одном сервере на разных видеокартах следует выполнить следующие шаги:- Добавить в файл docker-compose.yml еще 1 сервис, взяв за основу сервис backend-llmgeneration.
- Изменить название нового сервиса с backend-llm-generation на любое незанятое (например, backend-llm-generation-2).
- Изменить имя контейнера в параметре container_name на любое незанятое (например, backend-llm-generation-api-2).
- В параметре device_ids указать номер видеокарты, которая будет использоваться экземпляром сервиса.
Управление контейнерами осуществляется при помощи стандартных механизмов docker и docker compose.
Такой сценарий позволяет использовать видеокарту, выделенную для дообучения, в задачах генерации, когда дообучение не требуется.
- Выполнить команду для запуска образа: sudo docker compose up -d
Настройка для дообучения модели
Для настройки интеграции между сервисом и платформой BPMSoft выполните следующие шаги:
- Перейдите в раздел «Системные настройки» одниv из следующих способов:
- Рабочее место «Конструктор» → раздел «Системные настройки»;
- Дизайнер системы
→ блок «Настройка системы» → раздел «Системные настройки».
- Откройте системную настройку «Llm user» (код «LlmUser»). В поле «Значение по умолчанию» укажите значение параметра GENERATE_SERVICE_USER из файла среды .env и сохраните изменения.
Рисунок 1 — Системная настройка «Llm user»
- Откройте системную настройку «Llm password» (код «LlmPassword»). В поле «Значение по умолчанию» укажите значение параметра GENERATE_SERVICE_ PASSWORD из файла среды .env и сохраните изменения.
Рисунок 2 — Системная настройка «Llm password»
- Откройте системную настройку «Адрес сервиса llm» (код «LlmUrlTrain»). В поле «Значение по умолчанию» укажите значение параметра API_ADDRESS из файла среды .env и сохраните изменения.
Рисунок 3 — Системная настройка «Адрес сервиса llm»
Схема работы сервиса
Исходя из конфигурации по две видеокарты в одном сервере типовая схема развертывания включает в себя размещение одного сервиса генерации и одного сервиса дообучения (с переключением на еще один сервис генерации в периоды, когда дообучение не требуется). Шаги по переключению с сервиса дообучения на дополнительный сервис генерации представлены ниже.
Экземпляры сервиса генерации и дообучения представляют собой REST API сервисы. Порты, на которых сервисы ожидают запросы указываются в переменных окружения BACKEND_PORT и TRAIN_SERVICE_PORT в файле .env.
База данных должна быть развернута в одном экземпляре, параметры подключения к базе данных задаются в конфигурационном файле .env в переменных MYSQL_ADDRESS, MYSQL_PASSWORD, MYSQL_USER, MYSQL_DB, MYSQL_PORT. По умолчанию в docker-compose.yaml установлено развертывание базы данных. Для отключения развертывания базы данных на тех узлах, где это не нужно, следует удалить из docker-compose.yaml сервис llm-mysql-db.
Должна быть обеспечена сетевая доступность базы данных со стороны всех экземпляров сервисов, а также сетевая связанность между сервисами генерации и дообучения, расположенными на одном сервере.
Для сервиса дообучения в целях обеспечения информационной безопасности рекомендуется разрешить сетевой доступ к API только с тех адресов, с которых команда поддержки сервиса будет выполнять дообучение.
Для горизонтального масштабирования рекомендуется применять стандартные практики масштабирования REST API сервисов. На схеме ниже приведен возможный пример реализации, когда несколько экземпляров сервиса находятся за балансировщиком, который распределяет запросы между узлами. Рекомендуемое правило балансировки — round robin.
Рисунок 4 — Схема работы сервиса
Рекомендуем изучить
Настройка черного списка
AI-ассистент по базе знаний BPMSoft