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

Delete README.md

Browse files
Files changed (1) hide show
  1. README.md +0 -632
README.md DELETED
@@ -1,632 +0,0 @@
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
- -->