Skip to content

Сервис чат-бота технической поддержки с хакатона AtomicHack 2.0

Notifications You must be signed in to change notification settings

gestihack/atomichack2

Repository files navigation

Решение команды Gesti.tech

Решение состоит из следующих модулей:

  1. Фронтенд
  2. Сервис инфера (папка service)
  3. Сервис подсказок (папка suggest-proxy)
  4. Сервис для работы с LLM моделями Petals (папка petals)
  5. Векторная база данных Milvus
  6. Поисковая система OpenSearch

Из-за нехватки вычислительных мощностей, модель StableBeluga 2 запускается на распределенном краудсорсинговом кластере Petals, который требует доступ к внешней сети. При корректном деплое инференс модели должен запускаться локально на графическом ускорителе.

Инструкция по запуску

Решение упаковано в докер-контейнеры для простоты запуска. (см. docker-compose.yaml)

  1. Убедиться, что все файлы .env.example в подпапках переименованы в .env и параметры в них корректны. Для стандартного деплоя ничего менять не надо.
  2. Разархивировать папку volumes в корень (папка должна быть рядом с файлом docker-compose.yaml)
  3. Запустить контейнеры на хосте с установленным Docker через docker compose up --build
  4. При первом запуске будут загружены предобученные модели, нужно немного подождать.
  5. Импортируем данные с помощью Milvus Backup (конфиг находится в файле backup.yaml, поэтому достаточно запустить из рабочей директории): ./milvus-backup restore -n data
  6. Индексируем базу данных docker compose exec -it service python3 reindex.py

Опционально (если требуются подсказки):

  1. Далее, необходимо настроить OpenSearch. Заходим в Dashboard на порту 5601. Авторизуемся под admin с паролем abobaQW#E123!
  2. Открываем сайд-меню, заходим в Index Management -> Indexes -> Create Index.
  3. Указываем название question, открываем JSON Editor, вставляем текст из файла index-mapping.json, нажимаем Create.
  4. Загружаем данные из файла data.json:
curl -H "Content-Type: application/x-ndjson" -POST https://localhost:9200/question/_bulk -u 'admin:abobaQW#E123!' --insecure --data-binary "@data.json"

Возможно, нужно будет заменить localhost на адрес машины.

Исходный код

Исходники для предобработки датасета, расчета эмбеддингов, сборки векторной бд находятся в папке train:

  1. extraction.py - файл для выделения текстовых фрагментов из PDF-файлов датасета
  2. questions.ipynb - файл с разбором датасета с историей запросов, вычислением эмбеддингов и инференса LLM.
  3. guides.ipynb - файл с разбором датасета из инструкций, подсчет эмбеддингов

Возможные проблемы

Решение не тестировалось на сервере с GPU, но теоретически должно работать без модификаций. На CPU все работает стабильно. LFS крайне плохо загружает файлы, поэтому volumes.zip можно скачать тут https://drive.google.com/file/d/1tZwXX6SSyEWIRXzA8Tv37823JSWYDezY/view?usp=sharing

About

Сервис чат-бота технической поддержки с хакатона AtomicHack 2.0

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published