ruslan137 commited on
Commit
780adda
·
verified ·
1 Parent(s): 046d467

Upload folder using huggingface_hub

Browse files
.gitattributes CHANGED
@@ -33,3 +33,4 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
 
 
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
36
+ tokenizer.json filter=lfs diff=lfs merge=lfs -text
1_Pooling/config.json ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ {
2
+ "embedding_dimension": 768,
3
+ "pooling_mode": "mean",
4
+ "include_prompt": true
5
+ }
2_Dense/config.json ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "in_features": 768,
3
+ "out_features": 3072,
4
+ "bias": false,
5
+ "activation_function": "torch.nn.modules.linear.Identity",
6
+ "module_input_name": "sentence_embedding",
7
+ "module_output_name": "sentence_embedding"
8
+ }
2_Dense/model.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:7741d359e5d2c934ec7f71a69872e3370f47eb36655d262db5607044fcc34000
3
+ size 9437272
3_Dense/config.json ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "in_features": 3072,
3
+ "out_features": 768,
4
+ "bias": false,
5
+ "activation_function": "torch.nn.modules.linear.Identity",
6
+ "module_input_name": "sentence_embedding",
7
+ "module_output_name": "sentence_embedding"
8
+ }
3_Dense/model.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:ac6a3b0991f4677e0e5b34716d6f9a96adad91408691d6c8f01564ed098398e8
3
+ size 9437272
README.md ADDED
@@ -0,0 +1,632 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ tags:
3
+ - sentence-transformers
4
+ - sentence-similarity
5
+ - feature-extraction
6
+ - generated_from_trainer
7
+ - dataset_size:695
8
+ - loss:MultipleNegativesRankingLoss
9
+ widget:
10
+ - source_sentence: '[03] Документация FS ETL
11
+
12
+ [02] Настройки фичей и витрин в features.yaml
13
+
14
+ Настройки сохранения на Hive'
15
+ sentences:
16
+ - '— schema_name: имя схемы в Hive (если не задано, то автоматически устанавливается
17
+ как dest_settings → default_schema_name, если таковое выставлено в settings.yaml
18
+ ).
19
+
20
+ — table_name: имя таблицы в Hive (без имени схемы).
21
+
22
+ — full_table_name: полное имя таблицы в Hive, схема и имя таблицы, разделённые
23
+ точкой (например, "l_profiling.dummy_example__documents" ). Если full_table_name
24
+ выставлено вручную в settings.yaml, то поля table_name и schema_name заполнять
25
+ не нужно. Если full_table_name не выставлено, то поле settings.dest_settings[table_name].full_table_name
26
+ будет автоматически собрано из {schema_name}.{table_name}
27
+
28
+ — Если full_table_name выставлено вручную в settings.yaml, то поля table_name
29
+ и schema_name заполнять не нужно.
30
+
31
+ — Если full_table_name не выставлено, то поле settings.dest_settings[table_name].full_table_name
32
+ будет автоматически собрано из {schema_name}.{table_name}
33
+
34
+ — [опционально] hdfs_file_format: формат файлов, сохраняемых на HDFS. Имеет взможные
35
+ значения: parquet (по умолчанию) orc
36
+
37
+ — parquet (по умолчанию)
38
+
39
+ — orc
40
+
41
+ — [опционально] partition_date_format: формат даты партиционирования (значение
42
+ по умолчанию: yyyy-MM-dd ). FS ETL предполагает, что каждая витрина данных должна
43
+ иметь колонку с датой, по которой будет осуществляться партиционирование. Сейчас
44
+ поддерживается только партиционирование по одной колонке. Если в этом поле есть
45
+ строковое значение, то дата будет конвертирована в строку. Если null – то сохранена
46
+ как дата.
47
+
48
+ — [опционально] partition_columns: словарь со столбцами партиционирования вида
49
+ `{имя столбца_в_таблице: описание_столбца}`.
50
+
51
+ — [опционально] date_partition_columns: список столбцов партиционирования, относящихся
52
+ именно к логической дате (если не установлено, то берём все ключи partition_columns
53
+ ).'
54
+ - '1. Получаем задачу на функциональное тестирование автомл батч модели в MMS
55
+
56
+ 2. В задаче на тестирование смотрим, что требуется для вывода Train и Inference,
57
+ либо только Inference
58
+
59
+ 3. Переходим в Jenkins, указываем ссылку на модель в Bitbucket и тег для сборки
60
+
61
+ 4. Запускаем пайплайн Train/Inference для этой модели
62
+
63
+ 5. Проверяем работу и отсутствие ошибок процесса Train/Inference в логах Lens
64
+
65
+ 6. Дожидаемся окончания работы jenkins пайплайна
66
+
67
+ 7. Параллельно запускается DAG для Train/Inference в Airflow
68
+
69
+ Логи исполнения моделей отражаются после завершения работы модели - Логирование
70
+ кода (обязательный шаг)
71
+
72
+ 8. Убедиться в успешном завершении пайплайнов:
73
+
74
+ Для Train (в случае запуска полноценного обучения):
75
+
76
+ После завершения пайплайна и проверки отсутствия ошибок в логах переходим в MLflow
77
+
78
+ Ищем в поиске нашу модель и проверяем появление нового артефакта
79
+
80
+ Если показатели его эксперимента корректны, то регистрируем модель: выбираем нужную
81
+ версию и помечаем ее как Production
82
+
83
+ После этого можно переходить к тестированию инференса модели в MDP
84
+
85
+ Для Inference:
86
+
87
+ Во время инференса, модель в статусе Production выкачивается из MLflow в образ
88
+ (все содержимое из модели, включая артефакты)
89
+
90
+ После успешного завершения инференса заходим заходим в Hadoop и проверяем, появились
91
+ ли данные (скоры), нет ли аномалий в записях
92
+
93
+ 9. Заполняем отчет о тестировании в карточку ММС, при положительном ФТ- толкаем
94
+ дальше на НТ, при наличии багов- толкаем обратно в dev'
95
+ - '1.Главная страница:После входа в систему вы увидите главную страницу Jenkins,
96
+ где находятся все доступные проекты.
97
+
98
+ 2.Переключение между представлениями:- В верхней части имеется ряд представлений,
99
+ соответствующее нужному кластеру (например, "MDP-Models", "SIM-INT", "SIM-LT").-
100
+ После выбора представления вы увидите список папок с группами пайплайнов.'
101
+ - source_sentence: '4.1.2. Руководства по использованию
102
+
103
+ [03] Работа с новым JupyterHub CustomSpawner
104
+
105
+ Переменные окружения (Envs)'
106
+ sentences:
107
+ - 'Как во время сборки образ, так и при запуске контейнера добавляются некоторые
108
+ переменные окружения.
109
+
110
+ Название переменной | Значение
111
+
112
+ PATH | /opt/conda/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/code-server/bin:/opt/cloudera/parcels/CDH-5.13.1-1.cdh5.13.1.p0.2/bin:/usr/local/openjdk-8u312-b07/bin
113
+
114
+ ARROW_LIBHDFS_DIR | /opt/cloudera/parcels/CDH-5.13.1-1.cdh5.13.1.p0.2/lib64
115
+
116
+ HADOOP_CONF_DIR | /opt/hadoop_configs
117
+
118
+ HADOOP_HOME | /opt/cloudera/parcels/CDH-5.13.1-1.cdh5.13.1.p0.2
119
+
120
+ SPARK_EVENT_LOG_DIR | hdfs://ClusterBDA5-ns/user/spark/applicationHistory
121
+
122
+ SPARK_YARN_HISTORY_SERVER_ADDRESS | http://bda52node07.bda5.moscow.alfaintra.net:18088
123
+
124
+ MLFLOW_S3_ENDPOINT_URL | http://minio.minio.svc:9000
125
+
126
+ MLFLOW_TRACKING_URI | http://mlflow-mlflow-tracking.mlflow.svc
127
+
128
+ MLFLOW_TRACKING_USERNAME | $(JUPYTERHUB_USER)
129
+
130
+ AWS_ACCESS_KEY_ID | minio_user
131
+
132
+ AWS_SECRET_ACCESS_KEY | minio_user
133
+
134
+ JAVA_HOME | /usr/local/openjdk-8u312-b07
135
+
136
+ PYSPARK_PYTHON | /opt/anaconda37/bin/python
137
+
138
+ NODE_NAME | (наименование ноды кластера)
139
+
140
+ Все эти переменные стоят по умолчанию и изменять их нет необходимости.'
141
+ - "Имеется возможность определения дополнительных params для DAG (речь про этот\
142
+ \ атрибут). Для этого необходимо создать файл, например .mlops/dag_extra_params.py,\
143
+ \ со следующим содержимым (опять же для примера):\n.\n├── .mlops\n│ └── config.yaml\n\
144
+ └── scripts\n ├── __init__.py\n ├── inference.py\n ├── requirements.txt\n\
145
+ \ └── train.py\nВ самом DAG из этого файла извлечется переменная params и передастся\
146
+ \ в конструктор DAG.\nВсе определенные params доступны внутри SparkApplication\
147
+ \ в виде json-строки в переменной окружения MLOPS_AIRFLOW_PARAMS."
148
+ - 'Для возможности использования вольюма предусмотрено автоматическое монтирование
149
+ ресурса persistent volume в k8s для батчевых моделей и треинов.
150
+
151
+ Так как вольюмы являются кластерными ресурсами, то и создавать их должен ответственный
152
+ администратор среды, поэтому перед тем как воспользоваться pvc, необходимо завести
153
+ задачу в Jira на Отдел технической экспертизы систем BPM (OTESBPM).
154
+
155
+ ВАЖНО !!! При заполнении заявки указать среду (MDP или SIM), наименование PVC
156
+ и размер необходимого вольюма. Наименование PVC должно быть по аналогии с репозиторием
157
+ проекта в Bitbucket, но без использования заглавных букв и символов нижнего подчеркив��ния,
158
+ так как они являются запрещенными в k8s, например если название гит репозитория
159
+ такое - CORP_MMB_CLTV_models_pipelines_2, то в заявке пишем: "Требуется создать
160
+ ресурс PVC для проекта (ссылка на репозиторий) с названием corp-mmb-cltv-models-pipelines-2
161
+ размером 1GiB (условно) и access mode ReadWriteMany".
162
+
163
+ PVC на SIM Prom создаются после успешного прохождения тестирования модели.
164
+
165
+ В случае необходимости создания отказоустойчивой PVC, то необходимо в заявке указать
166
+ это в явном виде (может потребовать только в случае если в pvc сохраняются файлы
167
+ и они должны использоваться в последующих запусках модели)'
168
+ - source_sentence: 'Внутренние взаимодействия
169
+
170
+ Стандарты репозитория, кода, модели, выборки разработки v2
171
+
172
+ f)README.md'
173
+ sentences:
174
+ - 'Краткое описание:
175
+
176
+ — структура репозитория,
177
+
178
+ — команда запуска обучения,
179
+
180
+ — команда для инференса,
181
+
182
+ — описание процедуры инференса, если реализация его в виде отдельного класса представляется
183
+ трудоёмкой.
184
+
185
+ — расположение выборок,
186
+
187
+ — описание логики преобразования данных из FS (если они перед подачей в модель
188
+ проходят дополнительные преобразования)
189
+
190
+ — требования к окружению.
191
+
192
+ Важно: README должен быть минимальный, но информативный — не путать с документацией
193
+ модели.'
194
+ - 'Из-за распределенной архитектуры cassandra мы не можем просто запустить SELECT
195
+ count(*) from my_table, так как это запустит сканирование всех нод кластера, что
196
+ в случае больших таблиц вызовет деградацию всех запросов в базу данных. Для продовой
197
+ кассандры мы не можем себе это позволить даже раз в сутки. Тем более запрос работает
198
+ крайне долго и с нынешними настройками timeout не успевает отработать даже для
199
+ относительно небольших таблиц (~5 млн строк). Существует ряд инструментов, которые
200
+ могут позволить сделать это более эффективно
201
+
202
+ Инструмент для решения | Преимущества | Недостатки | Пример использования
203
+
204
+ nodetool tablestats | 1) Никак не влияет на производительность кластера 2) Получение
205
+ большого количества метрик по таблице, в том числе используемой памяти | 1)
206
+ Не позволяет получить точное количество строк в таблице, что критично для данной
207
+ постановки задачи 2) Посчитать можно только примерное количество строк (total
208
+ size / row size) | Подробная документация https://docs.datastax.com/en/cassandra-oss/3.x/cassandra/tools/toolsTablestats.html
209
+
210
+ DataStax dsbulk count | 1) Считает довольно точно 2) Не так сильно нагружает,
211
+ как обычный COUNT(*) 3) Работает из коробки, не требует слишком тонкой настройки
212
+ 4) Есть интеграция со спарком | 1) Считает посредством постепенной загрузки
213
+ батчей таблицы к себе в память, то есть по сути это SELECT по всей таблице, но
214
+ относительно оптимизированный. 2) На больших таблицах может работать довольно
215
+ долго | Документация: https://docs.datastax.com/en/dsbulk/reference/count-examples.html
216
+
217
+ В итоге наиболее подходящим решением для получения точного количества строк будет
218
+ использование dsbulk в связке со спарком. Эт�� позволит раз в сутки считать количество
219
+ строк в таблицах и не слишком сильно нагружать кассандру. Делать это будет удобно
220
+ в даге аирфлоу и запускать его можно ночью, когда нагрузка на кластер меньше.
221
+ Но dsbulk нужно будет протестировать на mdp кластере и потом также продолжать
222
+ мониторить, как он влияет на утилизацию ресурсов кластера, чтобы избежать проблем'
223
+ - 'Имеется возможность запустить обучение/инференс ANNA на удалённых ресурсах, не
224
+ занимая ресурсы собственной машины. Артефакты работы системы будут доступны в
225
+ MLflow. Замечание: на данный момент реализована очередь исполнения задач на удаленный
226
+ запуск среди пользователей.'
227
+ - source_sentence: 'Документация пакета
228
+
229
+ [08] Работа с MLflow в ARTEML
230
+
231
+ 5. Как достать любой другой артефакт?'
232
+ sentences:
233
+ - 'Допустим нам нужно достать всю папку model_tester, в которой хранятся артефакты
234
+ метрик модели. Тогда нам нужно указать путь до папки model_tester и метод download_artifacts
235
+ положит весь путь и эту папку в dst_path
236
+
237
+
238
+ import os
239
+
240
+ os.environ[''MLFLOW_TRACKING_URI''] = "http://mlflow-mdp-prod.mlflow-autotrain.svc.cluster.local:5000"'
241
+ - 'Чтобы создать сразу два конфига, нужно использовать команду (описано подробнее
242
+ здесь: Формирование конфига одной командой):
243
+
244
+ python -m validator_get_config
245
+
246
+ Конфиги будут добавлены во wrappers/online/scripts/mlops_validators_config/ с
247
+ названиями request_validation_config.json и response_validation_config.json. Ворд
248
+ файлы будут в корневой директории.
249
+
250
+ Команда для формирования двух конфигов предполагает запуск validator_get_config
251
+ в репозитории модели, request.json и response.json лежат в корне модели (или можно
252
+ указать путь к request.json и response.json флагом –json-dir)'
253
+ - 'После создания тела каскада можно приступить к добавлению конфигурации в Cascade-developer.
254
+ Для этого воспользуйтесь функцией cascadeCreate(), в параметр body передайте созданную
255
+ ранее конфигурацию:
256
+
257
+
258
+ {
259
+
260
+ "type": "chain",
261
+
262
+ "name": "demo_chain",
263
+
264
+ "desc": "Запуск последовательности групп модулей",
265
+
266
+ "tags": ["pd", "demo", "test"],
267
+
268
+ "nodes": []
269
+
270
+ }'
271
+ - source_sentence: '[01] Актуальная инструкция по разработке моделей и выводу их в
272
+ ПРОМ
273
+
274
+ Инструкция по разработке и внедрению каскадных онлайн-моделей
275
+
276
+ Get one'
277
+ sentences:
278
+ - 'Для получения одного модуля из справочника используйте метод Get By Name (GET
279
+ /module/{name}). В параметры запроса передайте название интересующего модуля.
280
+
281
+ Curl: curl -X ‘GET’ {host}/module/{name} -H ‘accept: application/json’.
282
+
283
+ При использовании Swagger:'
284
+ - 'Для запуска каскада через Cascade API используйте функцию runSync() в рамках
285
+ сессии с Cascade API. В параметр body передается Input JSON
286
+
287
+
288
+ {
289
+
290
+ "type": "chain",
291
+
292
+ "name": "demo_chain",
293
+
294
+ "desc": "Запуск последовательности групп модулей",
295
+
296
+ "tags": ["pd", "demo", "test"],
297
+
298
+ "nodes": []
299
+
300
+ }
301
+
302
+
303
+ В качестве ответа возвращается результат работы каскада.'
304
+ - 'Для сборки используется библиотека pyinstaller, она довольно просто позволяет
305
+ собирать питон код в .exe файлы
306
+
307
+ Перед сборкой так же нужно немного модифицировать код библиотеки cookiecutter
308
+ в venv. В файле venv/Lib/site-packages/cookiecutter/__init__.py заменить код на
309
+ такой:
310
+
311
+ Это н��жно, так как pyinstaller не собирает по стандарту текстовые файлики VERSION.txt
312
+ в .exe. Возможно это можно как-то пофиксить.
313
+
314
+ После этого можно запустить сборку:
315
+
316
+ Результат сборки будет .exe файл в ./dist/fstemplater.exe'
317
+ pipeline_tag: sentence-similarity
318
+ library_name: sentence-transformers
319
+ ---
320
+
321
+ # SentenceTransformer
322
+
323
+ This is a [sentence-transformers](https://www.SBERT.net) model trained. It maps sentences & paragraphs to a 768-dimensional dense vector space and can be used for retrieval.
324
+
325
+ ## Model Details
326
+
327
+ ### Model Description
328
+ - **Model Type:** Sentence Transformer
329
+ <!-- - **Base model:** [Unknown](https://huggingface.co/unknown) -->
330
+ - **Maximum Sequence Length:** 2048 tokens
331
+ - **Output Dimensionality:** 768 dimensions
332
+ - **Similarity Function:** Cosine Similarity
333
+ - **Supported Modality:** Text
334
+ <!-- - **Training Dataset:** Unknown -->
335
+ <!-- - **Language:** Unknown -->
336
+ <!-- - **License:** Unknown -->
337
+
338
+ ### Model Sources
339
+
340
+ - **Documentation:** [Sentence Transformers Documentation](https://sbert.net)
341
+ - **Repository:** [Sentence Transformers on GitHub](https://github.com/huggingface/sentence-transformers)
342
+ - **Hugging Face:** [Sentence Transformers on Hugging Face](https://huggingface.co/models?library=sentence-transformers)
343
+
344
+ ### Full Model Architecture
345
+
346
+ ```
347
+ SentenceTransformer(
348
+ (0): Transformer({'transformer_task': 'feature-extraction', 'modality_config': {'text': {'method': 'forward', 'method_output_name': 'last_hidden_state'}}, 'module_output_name': 'token_embeddings', 'architecture': 'Gemma3TextModel'})
349
+ (1): Pooling({'embedding_dimension': 768, 'pooling_mode': 'mean', 'include_prompt': True})
350
+ (2): Dense({'in_features': 768, 'out_features': 3072, 'bias': False, 'activation_function': 'torch.nn.modules.linear.Identity', 'module_input_name': 'sentence_embedding', 'module_output_name': 'sentence_embedding'})
351
+ (3): Dense({'in_features': 3072, 'out_features': 768, 'bias': False, 'activation_function': 'torch.nn.modules.linear.Identity', 'module_input_name': 'sentence_embedding', 'module_output_name': 'sentence_embedding'})
352
+ (4): Normalize({})
353
+ )
354
+ ```
355
+
356
+ ## Usage
357
+
358
+ ### Direct Usage (Sentence Transformers)
359
+
360
+ First install the Sentence Transformers library:
361
+
362
+ ```bash
363
+ pip install -U sentence-transformers
364
+ ```
365
+ Then you can load this model and run inference.
366
+ ```python
367
+ from sentence_transformers import SentenceTransformer
368
+
369
+ # Download from the 🤗 Hub
370
+ model = SentenceTransformer("sentence_transformers_model_id")
371
+ # Run inference
372
+ queries = [
373
+ '[01] Актуальная инструкция по разработке моделей и выводу их в ПРОМ\nИнструкция по разработке и внедрению каскадных онлайн-моделей\nGet one',
374
+ ]
375
+ documents = [
376
+ 'Для получения одного модуля из справочника используйте метод Get By Name (GET /module/{name}). В параметры запроса передайте название интересующего модуля.\nCurl: curl -X ‘GET’ {host}/module/{name} -H ‘accept: application/json’.\nПри использовании Swagger:',
377
+ 'Для запуска каскада через Cascade API используйте функцию runSync() в рамках сессии с Cascade API. В параметр body передается Input JSON\n\n{\n"type": "chain",\n"name": "demo_chain",\n"desc": "Запуск последовательности групп модулей",\n"tags": ["pd", "demo", "test"],\n"nodes": []\n}\n\nВ качестве ответа возвращается результат работы каскада.',
378
+ 'Для сборки используется библиотека pyinstaller, она довольно просто позволяет собирать питон код в .exe файлы\nПеред сборкой так же нужно немного модифицировать код библиотеки cookiecutter в venv. В файле venv/Lib/site-packages/cookiecutter/__init__.py заменить код на такой:\nЭто нужно, так как pyinstaller не собирает по стандарту текстовые файлики VERSION.txt в .exe. Возможно это можно как-то пофиксить.\nПосле этого можно запустить сборку:\nРезультат сборки будет .exe файл в ./dist/fstemplater.exe',
379
+ ]
380
+ query_embeddings = model.encode_query(queries)
381
+ document_embeddings = model.encode_document(documents)
382
+ print(query_embeddings.shape, document_embeddings.shape)
383
+ # [1, 768] [3, 768]
384
+
385
+ # Get the similarity scores for the embeddings
386
+ similarities = model.similarity(query_embeddings, document_embeddings)
387
+ print(similarities)
388
+ # tensor([[0.7531, 0.0722, 0.0281]])
389
+ ```
390
+ <!--
391
+ ### Direct Usage (Transformers)
392
+
393
+ <details><summary>Click to see the direct usage in Transformers</summary>
394
+
395
+ </details>
396
+ -->
397
+
398
+ <!--
399
+ ### Downstream Usage (Sentence Transformers)
400
+
401
+ You can finetune this model on your own dataset.
402
+
403
+ <details><summary>Click to expand</summary>
404
+
405
+ </details>
406
+ -->
407
+
408
+ <!--
409
+ ### Out-of-Scope Use
410
+
411
+ *List how the model may foreseeably be misused and address what users ought not to do with the model.*
412
+ -->
413
+
414
+ <!--
415
+ ## Bias, Risks and Limitations
416
+
417
+ *What are the known or foreseeable issues stemming from this model? You could also flag here known failure cases or weaknesses of the model.*
418
+ -->
419
+
420
+ <!--
421
+ ### Recommendations
422
+
423
+ *What are recommendations with respect to the foreseeable issues? For example, filtering explicit content.*
424
+ -->
425
+
426
+ ## Training Details
427
+
428
+ ### Training Dataset
429
+
430
+ #### Unnamed Dataset
431
+
432
+ * Size: 695 training samples
433
+ * Columns: <code>sentence_0</code> and <code>sentence_1</code>
434
+ * Approximate statistics based on the first 100 samples:
435
+ | | sentence_0 | sentence_1 |
436
+ |:---------|:-----------------------------------------------------------------------------------|:--------------------------------------------------------------------------------------|
437
+ | type | string | string |
438
+ | modality | text | text |
439
+ | details | <ul><li>min: 16 tokens</li><li>mean: 35.18 tokens</li><li>max: 73 tokens</li></ul> | <ul><li>min: 16 tokens</li><li>mean: 145.51 tokens</li><li>max: 2048 tokens</li></ul> |
440
+ * Samples:
441
+ | sentence_0 | sentence_1 |
442
+ |:----------------------------------------------------------------------------------------------------------------------------------|:---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
443
+ | <code>[04] Сервисы Feature Store<br>FS-ETL Templater<br>Разработка</code> | <code>Разработка утилиты возможна только на машине с Windows 10+</code> |
444
+ | <code>5.1.2. Архитектурные решения по пайплайнам<br>[01] MLOPS-Pipelines<br>Конфигурация<br>Структура проекта</code> | <code>Рассмотрим, как выглядит типичный проект модели (здесь и далее будет делаться акцент именно на конфигурацию запуска и минимально необходимый набор файлов).<br>.<br>├── .mlops<br>│ └── config.yaml<br>└── scripts<br> ├── __init__.py<br> ├── inference.py<br> ├── requirements.txt<br> └── train.py</code> |
445
+ | <code>[01] Актуальная инструкция по разработке моделей и выводу их в ПРОМ<br>Работа с Kafka при Online inference<br>Методы</code> | <code>def __init__(self) -> None:<br>Этот метод загружает модель и инициализирует экземпляр класса StorageManager, подготавливая его для работы. Метод устанавливает флаг self.loaded в True.<br><br>def __init__(self) -> None:<br>Этот метод принимает request_body - тело запроса, который содержит данные для предсказания отправленные по HTTP.<br>Метод выполняет следующие шаги:<br>1. Проверка, была ли модель загружена. Если нет, то происходит загрузка модели вызовом метода load. 2. Валидация тела запроса. 3. Предобработка данных, полученных из request_body. 4. Выполнение предсказания на основе предобработанных данных. 5. Постобработка полученных предсказаний. 6. Сохранение результатов в систему хранения. 7. Возвращение ответа на запрос.<br><br>def __init__(self) -> None:<br>Этот статический метод обрабатывает исключения типа InternalServerError, преобразуя их в JSON-ответ с соответствующим кодом состояния HTTP.</code> |
446
+ * Loss: [<code>MultipleNegativesRankingLoss</code>](https://sbert.net/docs/package_reference/sentence_transformer/losses.html#multiplenegativesrankingloss) with these parameters:
447
+ ```json
448
+ {
449
+ "scale": 20.0,
450
+ "similarity_fct": "cos_sim",
451
+ "gather_across_devices": false,
452
+ "directions": [
453
+ "query_to_doc"
454
+ ],
455
+ "partition_mode": "joint",
456
+ "hardness_mode": null,
457
+ "hardness_strength": 0.0
458
+ }
459
+ ```
460
+
461
+ ### Training Hyperparameters
462
+ #### Non-Default Hyperparameters
463
+
464
+ - `per_device_train_batch_size`: 4
465
+ - `num_train_epochs`: 1
466
+ - `per_device_eval_batch_size`: 4
467
+ - `multi_dataset_batch_sampler`: round_robin
468
+
469
+ #### All Hyperparameters
470
+ <details><summary>Click to expand</summary>
471
+
472
+ - `per_device_train_batch_size`: 4
473
+ - `num_train_epochs`: 1
474
+ - `max_steps`: -1
475
+ - `learning_rate`: 5e-05
476
+ - `lr_scheduler_type`: linear
477
+ - `lr_scheduler_kwargs`: None
478
+ - `warmup_steps`: 0
479
+ - `optim`: adamw_torch
480
+ - `optim_args`: None
481
+ - `weight_decay`: 0.0
482
+ - `adam_beta1`: 0.9
483
+ - `adam_beta2`: 0.999
484
+ - `adam_epsilon`: 1e-08
485
+ - `optim_target_modules`: None
486
+ - `gradient_accumulation_steps`: 1
487
+ - `average_tokens_across_devices`: True
488
+ - `max_grad_norm`: 1
489
+ - `label_smoothing_factor`: 0.0
490
+ - `bf16`: False
491
+ - `fp16`: False
492
+ - `bf16_full_eval`: False
493
+ - `fp16_full_eval`: False
494
+ - `tf32`: None
495
+ - `gradient_checkpointing`: False
496
+ - `gradient_checkpointing_kwargs`: None
497
+ - `torch_compile`: False
498
+ - `torch_compile_backend`: None
499
+ - `torch_compile_mode`: None
500
+ - `use_liger_kernel`: False
501
+ - `liger_kernel_config`: None
502
+ - `use_cache`: False
503
+ - `neftune_noise_alpha`: None
504
+ - `torch_empty_cache_steps`: None
505
+ - `auto_find_batch_size`: False
506
+ - `log_on_each_node`: True
507
+ - `logging_nan_inf_filter`: True
508
+ - `include_num_input_tokens_seen`: no
509
+ - `log_level`: passive
510
+ - `log_level_replica`: warning
511
+ - `disable_tqdm`: False
512
+ - `project`: huggingface
513
+ - `trackio_space_id`: None
514
+ - `trackio_bucket_id`: None
515
+ - `trackio_static_space_id`: None
516
+ - `per_device_eval_batch_size`: 4
517
+ - `prediction_loss_only`: True
518
+ - `eval_on_start`: False
519
+ - `eval_do_concat_batches`: True
520
+ - `eval_use_gather_object`: False
521
+ - `eval_accumulation_steps`: None
522
+ - `include_for_metrics`: []
523
+ - `batch_eval_metrics`: False
524
+ - `save_only_model`: False
525
+ - `save_on_each_node`: False
526
+ - `enable_jit_checkpoint`: False
527
+ - `push_to_hub`: False
528
+ - `hub_private_repo`: None
529
+ - `hub_model_id`: None
530
+ - `hub_strategy`: every_save
531
+ - `hub_always_push`: False
532
+ - `hub_revision`: None
533
+ - `load_best_model_at_end`: False
534
+ - `ignore_data_skip`: False
535
+ - `restore_callback_states_from_checkpoint`: False
536
+ - `full_determinism`: False
537
+ - `seed`: 42
538
+ - `data_seed`: None
539
+ - `use_cpu`: False
540
+ - `accelerator_config`: {'split_batches': False, 'dispatch_batches': None, 'even_batches': True, 'use_seedable_sampler': True, 'non_blocking': False, 'gradient_accumulation_kwargs': None}
541
+ - `parallelism_config`: None
542
+ - `dataloader_drop_last`: False
543
+ - `dataloader_num_workers`: 0
544
+ - `dataloader_pin_memory`: True
545
+ - `dataloader_persistent_workers`: False
546
+ - `dataloader_prefetch_factor`: None
547
+ - `remove_unused_columns`: True
548
+ - `label_names`: None
549
+ - `train_sampling_strategy`: random
550
+ - `length_column_name`: length
551
+ - `ddp_find_unused_parameters`: None
552
+ - `ddp_bucket_cap_mb`: None
553
+ - `ddp_broadcast_buffers`: False
554
+ - `ddp_static_graph`: None
555
+ - `ddp_backend`: None
556
+ - `ddp_timeout`: 1800
557
+ - `fsdp`: []
558
+ - `fsdp_config`: {'min_num_params': 0, 'xla': False, 'xla_fsdp_v2': False, 'xla_fsdp_grad_ckpt': False}
559
+ - `deepspeed`: None
560
+ - `debug`: []
561
+ - `skip_memory_metrics`: True
562
+ - `do_predict`: False
563
+ - `resume_from_checkpoint`: None
564
+ - `warmup_ratio`: None
565
+ - `local_rank`: -1
566
+ - `prompts`: None
567
+ - `batch_sampler`: batch_sampler
568
+ - `multi_dataset_batch_sampler`: round_robin
569
+ - `router_mapping`: {}
570
+ - `learning_rate_mapping`: {}
571
+
572
+ </details>
573
+
574
+ ### Training Time
575
+ - **Training**: 2.3 hours
576
+
577
+ ### Framework Versions
578
+ - Python: 3.12.12
579
+ - Sentence Transformers: 5.5.1
580
+ - Transformers: 5.9.0
581
+ - PyTorch: 2.7.1+cu118
582
+ - Accelerate: 1.13.0
583
+ - Datasets: 4.8.5
584
+ - Tokenizers: 0.22.2
585
+
586
+ ## Citation
587
+
588
+ ### BibTeX
589
+
590
+ #### Sentence Transformers
591
+ ```bibtex
592
+ @inproceedings{reimers-2019-sentence-bert,
593
+ title = "Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks",
594
+ author = "Reimers, Nils and Gurevych, Iryna",
595
+ booktitle = "Proceedings of the 2019 Conference on Empirical Methods in Natural Language Processing",
596
+ month = "11",
597
+ year = "2019",
598
+ publisher = "Association for Computational Linguistics",
599
+ url = "https://arxiv.org/abs/1908.10084",
600
+ }
601
+ ```
602
+
603
+ #### MultipleNegativesRankingLoss
604
+ ```bibtex
605
+ @misc{oord2019representationlearningcontrastivepredictive,
606
+ title={Representation Learning with Contrastive Predictive Coding},
607
+ author={Aaron van den Oord and Yazhe Li and Oriol Vinyals},
608
+ year={2019},
609
+ eprint={1807.03748},
610
+ archivePrefix={arXiv},
611
+ primaryClass={cs.LG},
612
+ url={https://arxiv.org/abs/1807.03748},
613
+ }
614
+ ```
615
+
616
+ <!--
617
+ ## Glossary
618
+
619
+ *Clearly define terms in order to be accessible across audiences.*
620
+ -->
621
+
622
+ <!--
623
+ ## Model Card Authors
624
+
625
+ *Lists the people who create the model card, providing recognition and accountability for the detailed work that goes into its construction.*
626
+ -->
627
+
628
+ <!--
629
+ ## Model Card Contact
630
+
631
+ *Provides a way for people who have updates to the Model Card, suggestions, or questions, to contact the Model Card authors.*
632
+ -->
config.json ADDED
@@ -0,0 +1,68 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "_sliding_window_pattern": 6,
3
+ "architectures": [
4
+ "Gemma3TextModel"
5
+ ],
6
+ "attention_bias": false,
7
+ "attention_dropout": 0.0,
8
+ "attn_logit_softcapping": null,
9
+ "bos_token_id": 2,
10
+ "dtype": "float32",
11
+ "eos_token_id": 1,
12
+ "final_logit_softcapping": null,
13
+ "head_dim": 256,
14
+ "hidden_activation": "gelu_pytorch_tanh",
15
+ "hidden_size": 768,
16
+ "initializer_range": 0.02,
17
+ "intermediate_size": 1152,
18
+ "layer_types": [
19
+ "sliding_attention",
20
+ "sliding_attention",
21
+ "sliding_attention",
22
+ "sliding_attention",
23
+ "sliding_attention",
24
+ "full_attention",
25
+ "sliding_attention",
26
+ "sliding_attention",
27
+ "sliding_attention",
28
+ "sliding_attention",
29
+ "sliding_attention",
30
+ "full_attention",
31
+ "sliding_attention",
32
+ "sliding_attention",
33
+ "sliding_attention",
34
+ "sliding_attention",
35
+ "sliding_attention",
36
+ "full_attention",
37
+ "sliding_attention",
38
+ "sliding_attention",
39
+ "sliding_attention",
40
+ "sliding_attention",
41
+ "sliding_attention",
42
+ "full_attention"
43
+ ],
44
+ "max_position_embeddings": 2048,
45
+ "model_type": "gemma3_text",
46
+ "num_attention_heads": 3,
47
+ "num_hidden_layers": 24,
48
+ "num_key_value_heads": 1,
49
+ "pad_token_id": 0,
50
+ "query_pre_attn_scalar": 256,
51
+ "rms_norm_eps": 1e-06,
52
+ "rope_parameters": {
53
+ "full_attention": {
54
+ "rope_theta": 1000000.0,
55
+ "rope_type": "default"
56
+ },
57
+ "sliding_attention": {
58
+ "rope_theta": 10000.0,
59
+ "rope_type": "default"
60
+ }
61
+ },
62
+ "sliding_window": 65,
63
+ "tie_word_embeddings": true,
64
+ "transformers_version": "5.9.0",
65
+ "use_bidirectional_attention": true,
66
+ "use_cache": false,
67
+ "vocab_size": 262144
68
+ }
config_sentence_transformers.json ADDED
@@ -0,0 +1,26 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "__version__": {
3
+ "pytorch": "2.7.1+cu118",
4
+ "sentence_transformers": "5.5.1",
5
+ "transformers": "5.9.0"
6
+ },
7
+ "default_prompt_name": null,
8
+ "model_type": "SentenceTransformer",
9
+ "prompts": {
10
+ "BitextMining": "task: search result | query: ",
11
+ "Classification": "task: classification | query: ",
12
+ "Clustering": "task: clustering | query: ",
13
+ "InstructionRetrieval": "task: code retrieval | query: ",
14
+ "MultilabelClassification": "task: classification | query: ",
15
+ "PairClassification": "task: sentence similarity | query: ",
16
+ "Reranking": "task: search result | query: ",
17
+ "Retrieval": "task: search result | query: ",
18
+ "Retrieval-document": "title: none | text: ",
19
+ "Retrieval-query": "task: search result | query: ",
20
+ "STS": "task: sentence similarity | query: ",
21
+ "Summarization": "task: summarization | query: ",
22
+ "document": "title: none | text: ",
23
+ "query": "task: search result | query: "
24
+ },
25
+ "similarity_fn_name": "cosine"
26
+ }
model.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:b374e341b9061f63de00365465c23db8df2b6c861ea6b97a0bfe7933109d7088
3
+ size 1211486072
modules.json ADDED
@@ -0,0 +1,32 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ [
2
+ {
3
+ "idx": 0,
4
+ "name": "0",
5
+ "path": "",
6
+ "type": "sentence_transformers.base.modules.transformer.Transformer"
7
+ },
8
+ {
9
+ "idx": 1,
10
+ "name": "1",
11
+ "path": "1_Pooling",
12
+ "type": "sentence_transformers.sentence_transformer.modules.pooling.Pooling"
13
+ },
14
+ {
15
+ "idx": 2,
16
+ "name": "2",
17
+ "path": "2_Dense",
18
+ "type": "sentence_transformers.base.modules.dense.Dense"
19
+ },
20
+ {
21
+ "idx": 3,
22
+ "name": "3",
23
+ "path": "3_Dense",
24
+ "type": "sentence_transformers.base.modules.dense.Dense"
25
+ },
26
+ {
27
+ "idx": 4,
28
+ "name": "4",
29
+ "path": "4_Normalize",
30
+ "type": "sentence_transformers.sentence_transformer.modules.normalize.Normalize"
31
+ }
32
+ ]
sentence_bert_config.json ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "transformer_task": "feature-extraction",
3
+ "modality_config": {
4
+ "text": {
5
+ "method": "forward",
6
+ "method_output_name": "last_hidden_state"
7
+ }
8
+ },
9
+ "module_output_name": "token_embeddings"
10
+ }
tokenizer.json ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:3f797e7e336523ba3845bf09a648fd87c14bf357f26beb091d8284dff48ea27c
3
+ size 33385261
tokenizer_config.json ADDED
@@ -0,0 +1,31 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "backend": "tokenizers",
3
+ "boi_token": "<start_of_image>",
4
+ "bos_token": "<bos>",
5
+ "clean_up_tokenization_spaces": false,
6
+ "eoi_token": "<end_of_image>",
7
+ "eos_token": "<eos>",
8
+ "image_token": "<image_soft_token>",
9
+ "is_local": true,
10
+ "local_files_only": false,
11
+ "mask_token": "<mask>",
12
+ "max_length": 2048,
13
+ "model_max_length": 2048,
14
+ "model_specific_special_tokens": {
15
+ "boi_token": "<start_of_image>",
16
+ "eoi_token": "<end_of_image>",
17
+ "image_token": "<image_soft_token>"
18
+ },
19
+ "pad_to_multiple_of": null,
20
+ "pad_token": "<pad>",
21
+ "pad_token_type_id": 0,
22
+ "padding_side": "right",
23
+ "sp_model_kwargs": null,
24
+ "spaces_between_special_tokens": false,
25
+ "stride": 0,
26
+ "tokenizer_class": "GemmaTokenizer",
27
+ "truncation_side": "right",
28
+ "truncation_strategy": "longest_first",
29
+ "unk_token": "<unk>",
30
+ "use_default_system_prompt": false
31
+ }