Spaces:
Sleeping
Sleeping
config
Browse files
README.md
CHANGED
@@ -1,126 +1,10 @@
|
|
1 |
-
|
2 |
-
|
3 |
-
|
4 |
-
|
5 |
-
|
6 |
-
|
7 |
-
|
8 |
-
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
-
## Используемые для работы поиска данные
|
13 |
-
|
14 |
-
Для корректной работы поиска необходимы данные в формате `huggingface datasets`, которые можно также скачать по [ссылке](https://drive.google.com/file/d/1ru40xKWr6aZys5sp5cMb_ngwCe7-Y_LU/view?usp=sharing). Их нужно скачать и разместить в папке `legal_info_search_data` в корне проекта.
|
15 |
-
|
16 |
-
Каждый пример в любом наборе данных представляет из себя словарь со следующими атрибутами:
|
17 |
-
* `doc_name` - название документа (например, ст. 159 НКРФ)
|
18 |
-
* `doc_text` - текст документа
|
19 |
-
* `doc_embedding` - эмбеддинг текста документа
|
20 |
-
* `chunks_embeddings` - представляет список вида `[{'summary_text': *текст тизера*, 'embedding': *эмбеддинг тизера*}]`. Таким образом, под ключом `chunks_embeddings` находится список словарей с тизерами для конкретного текста документа. Тизеры и их эмбеддинги используются при подборе наиболее подходящего отрывка текста к вопросу пользователя.
|
21 |
-
|
22 |
-
Пайплайн получения датасета такого формата описан в [соответствующем репозитории](https://gitlab.ntrlab.ru/hf-chat/nn_data_processing/teasers_extraction).
|
23 |
-
|
24 |
-
Для поиска по картам проводок нужно загрузить набор данных из [папки](https://ai.ntrlab.ru/mlcloud/apps/files/files/1136443?dir=/data/processed_datasets/transaction_maps_search_data) в облаке. Размещаем скачанные данные в папке `transaction_map_data` в корне проекта.
|
25 |
-
|
26 |
-
|
27 |
-
## Локальный запуск
|
28 |
-
|
29 |
-
Устанавливаем все зависимости
|
30 |
-
```
|
31 |
-
pip install -r requirements.txt
|
32 |
-
```
|
33 |
-
|
34 |
-
Создаем в корне проекта `.env` файл, в котором прописываем следующие переменные:
|
35 |
-
|
36 |
-
```
|
37 |
-
GLOBAL_DATA_PATH=*GLOBAL_DATA_PATH*
|
38 |
-
GLOBAL_MODEL_PATH=*GLOBAL_MODEL_PATH*
|
39 |
-
RERANKER_MODEL_PATH=*RERANKER_MODEL_PATH*
|
40 |
-
DATA_PATH_CONSULT=*DATA_PATH_CONSULT*
|
41 |
-
ACCOUNTING_DATA_PATH=*ACCOUNTING_DATA_PATH*
|
42 |
-
INTERNAL_DOCS_DATA_PATH=*INTERNAL_DOCS_DATA_PATH*
|
43 |
-
GLOBAL_TRANSACTION_MAPS_DB_FILES_PATH=*GLOBAL_TRANSACTION_MAPS_DB_FILES_PATH*
|
44 |
-
GLOBAL_TRANSACTION_MAPS_MODEL_PATH=*GLOBAL_TRANSACTION_MAPS_MODEL_PATH*
|
45 |
-
LLM_API_ENDPOINT=*LLM_API_ENDPOINT*
|
46 |
-
LOGS_BASE_PATH=*LOGS_BASE_PATH*
|
47 |
-
ENABLE_LOGS=*ENABLE_LOGS*
|
48 |
-
ES_URL=*ES_URL*
|
49 |
-
ES_INDEX_NAME=*ES_INDEX_NAME*
|
50 |
-
```
|
51 |
-
|
52 |
-
Передав все необходимые значения переменных окружения, запускаем в терминале команду
|
53 |
-
```
|
54 |
-
python3 -m uvicorn fastapi_app:app --host=0.0.0.0 --port=7860 --env-file .env
|
55 |
-
```
|
56 |
-
|
57 |
-
## Сборка docker-образа и пуш в registry
|
58 |
-
|
59 |
-
Собрать образ можно через комманду
|
60 |
-
|
61 |
-
```
|
62 |
-
docker build -t ntr-semantic-search-api-multistep:latest .
|
63 |
-
```
|
64 |
-
Если ранее не пушили в registry.ntrlab.ru, то сначала необходимо авторизоваться по команде
|
65 |
-
|
66 |
-
```
|
67 |
-
docker login registry.ntrlab.ru --username <имя пользователя> --password <пароль>
|
68 |
-
```
|
69 |
-
|
70 |
-
После авторизации присваиваем образу тэг и пушим в регистри
|
71 |
-
|
72 |
-
```
|
73 |
-
docker tag ntr-semantic-search-api-multistep:latest registry.ntrlab.ru/nn/ntr-semantic-search-api-multistep:latest
|
74 |
-
```
|
75 |
-
```
|
76 |
-
docker push registry.ntrlab.ru/nn/ntr-semantic-search-api-multistep:latest
|
77 |
-
```
|
78 |
-
|
79 |
-
Тэг образу можно присвоить любой, но лучше обдумать версионирование. В данный момент последняя версия поиска в production среде имеет тэг `latest`.
|
80 |
-
|
81 |
-
|
82 |
-
## Деплой в среде Норникель
|
83 |
-
|
84 |
-
Для развертывания собранной версии сервиса выполняем следующие шаги:
|
85 |
-
|
86 |
-
1. Ссылку на отгруженный образ в виде `registry.ntrlab.ru/nn/ntr-semantic-search-api-multistep:latest` передаем человеку со стороны заказчика, который может перенести этот образ в регистри Норникеля. Ждем сигнала, что все было загружено.
|
87 |
-
|
88 |
-
2. Заходим через Horizon к себе в неймспейс и создаем три волюма:
|
89 |
-
* `j-volume` на 10 Гб типа `ReadWriteOnce`;
|
90 |
-
* `ntr-semantic-search-data` на 10 Гб типа `ReadWriteOnce`;
|
91 |
-
* `ntr-transaction-maps-search-data` на 10 Гб также типа `ReadWriteOnce`.
|
92 |
-
|
93 |
-
3. Создаем тетрадку, в которой в качестве системного волюма выбираем `j-volume`, также прикрепляем к тетрадке ранее созданные `ntr-semantic-search-data` (меняем название на диске на `ntr-semantic-search-data`) и `ntr-transaction-maps-search-data` (меняем название на диске на `ntr-transaction-maps-search-data`)
|
94 |
-
|
95 |
-
В тетрадке выбираем 0.5 CPU и 16 GB RAM
|
96 |
-
|
97 |
-
4. После создания и подъема тетрадки в волюмах `ntr-semantic-search-data` и `ntr-transaction-maps-search-data` создать папки `models`, внутрь которой перенести соответствующие модели для каждого типа поиска. Перенос моделей можно осуществить при помощи file transfer`а, заранее заархивировав модели у себя на рабочем компьютере. Затем эти архивы переносим в поднятую тетрадку и разархивируем в нужные папки.
|
98 |
-
|
99 |
-
После выполнения этого шага у нас должны получиться два волюма с такими структурами файлов внутри:
|
100 |
-
* `ntr-semantic-search-data/models/model_1_folder`
|
101 |
-
* `ntr-transaction-maps-search-data/models/model_2_folder`
|
102 |
-
|
103 |
-
5. Удаляем созданную тетрадку и пересоздаем новую, в которой в качестве системного волюма указываем только `j-volume` (и ничего больше). В тетрадке выбираем 0.5 CPU и 16 GB RAM.
|
104 |
-
|
105 |
-
6. После того как тетрадка поднялась, можно приступать к деплою.
|
106 |
-
* Создадим сикрет для скачивания образа из регистри Норникеля.
|
107 |
-
|
108 |
-
```
|
109 |
-
kubectl create secret docker-registry nornik-regcred --docker-server=nexus.npr.nornick.ru --docker-username=<service_username> --docker-password=<service_password>
|
110 |
-
|
111 |
-
```
|
112 |
-
* Переносим через файл трансфер к себе в тетрадку следующий [файл](https://ai.ntrlab.ru/mlcloud/apps/files/files/1137406?dir=/data/nn_search_deployment). Если все было сделано в точности по инструкции, то не нужно менять ничего в разделах `volumeMounts` и `volumes`.
|
113 |
-
|
114 |
-
* Задаем набор переменных окружения в разделе `env`. Также не потребуется изменять переменные `GLOBAL_MODEL_PATH` и `GLOBAL_TRANSACTION_MAPS_MODEL_PATH`, если все было выполнено в соответствии с инструкцией.
|
115 |
-
|
116 |
-
* Прописываем команду `kubectl -f apply semantic-search-api.yaml`
|
117 |
-
|
118 |
-
* Смотрим за прогрессом поднятия пода через команду `kubectl get pods --watch`. Как только у поднятого пода появится статус `Running`, заходим в его логи по команде `kubectl logs -f <pod_name>`.
|
119 |
-
|
120 |
-
* Если всё развернулось без ошибок, то открываем новый терминал, узнаем имя нашего деплоймента: `kubectl get deployments`. После этого прописываем команду `kubectl expose deployment/<deployment_name> --type="ClusterIP" --port=7868 --target-port=7860`.
|
121 |
-
|
122 |
-
* Смотрим выделенные адрес и порт сервиса по команде `kubectl get svc`.
|
123 |
-
|
124 |
-
* Проверяем работоспособность сервиса: `curl http://<ip:порт деплоя>/health`
|
125 |
-
|
126 |
-
|
|
|
1 |
+
---
|
2 |
+
title: Nn Search Transmap
|
3 |
+
emoji: 🚀
|
4 |
+
colorFrom: red
|
5 |
+
colorTo: pink
|
6 |
+
sdk: docker
|
7 |
+
pinned: false
|
8 |
+
---
|
9 |
+
|
10 |
+
Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|