GGUF
English
Russian
Inference Endpoints
conversational
aashish1904 commited on
Commit
6ae376b
·
verified ·
1 Parent(s): c7422d5

Upload README.md with huggingface_hub

Browse files
Files changed (1) hide show
  1. README.md +291 -0
README.md ADDED
@@ -0,0 +1,291 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ ---
3
+
4
+ license: apache-2.0
5
+ datasets:
6
+ - Vikhrmodels/GrandMaster-PRO-MAX
7
+ - Vikhrmodels/Grounded-RAG-RU-v2
8
+ language:
9
+ - en
10
+ - ru
11
+ base_model:
12
+ - meta-llama/Meta-Llama-3.1-8B-Instruct
13
+
14
+ ---
15
+
16
+ [![QuantFactory Banner](https://lh7-rt.googleusercontent.com/docsz/AD_4nXeiuCm7c8lEwEJuRey9kiVZsRn2W-b4pWlu3-X534V3YmVuVc2ZL-NXg2RkzSOOS2JXGHutDuyyNAUtdJI65jGTo8jT9Y99tMi4H4MqL44Uc5QKG77B0d6-JfIkZHFaUA71-RtjyYZWVIhqsNZcx8-OMaA?key=xt3VSDoCbmTY7o-cwwOFwQ)](https://hf.co/QuantFactory)
17
+
18
+
19
+ # QuantFactory/Vikhr-Llama3.1-8B-Instruct-R-21-09-24-GGUF
20
+ This is quantized version of [Vikhrmodels/Vikhr-Llama3.1-8B-Instruct-R-21-09-24](https://huggingface.co/Vikhrmodels/Vikhr-Llama3.1-8B-Instruct-R-21-09-24) created using llama.cpp
21
+
22
+ # Original Model Card
23
+
24
+
25
+ ## Vikhr-Llama3.1-8B-Instruct-R-21-09-24
26
+
27
+ ### Описание
28
+
29
+ **Vikhr-Llama3.1** - это унимодальная LLM (Large Language Model) на 8B параметров представляющая из себя улучшенную версию [meta-llama/Meta-Llama-3.1-8B-Instruct](https://huggingface.co/meta-llama/Meta-Llama-3.1-8B-Instruct) командой **VikhrModels**, адаптированную преимущественно для русского и английского языков. Для ее обучения мы использовали несколько этапов включающих в себя **SFT** и **SMPO** - нашу собственную вариацию DPO, подробнее читайте в секции *"Как эта модель создавалась"*.
30
+
31
+ Модель оптимизированна для различных вариантов использования, включая ризонинг, суммаризацию, код, roleplay, поддержание диалога. Vikhr-Llama обладает возможностью многоязычной генерации, и высокопроизводительными возможностями RAG. Модель иммет лучшие оценки среди прочих на наших инструктивных и RAG бенчарках и, поэтому, мы верим, что во многих задачах может быть лучше чем gpt-3.5-turbo от OpenAI.
32
+
33
+ Весь использованный код для обучения доступен в нашем репозитории [effective_llm_alignment](https://github.com/VikhrModels/effective_llm_alignment/) на GitHub, а основные датасеты доступны в нашем [профиле на HF](https://huggingface.co/Vikhrmodels).
34
+
35
+ ### Особенности
36
+ 1. Высокое качество генераций на русском и английском языках, а также некоторых других языках, благодаря датасету [Grandmaster-PRO-MAX](https://huggingface.co/datasets/Vikhrmodels/GrandMaster-PRO-MAX) и исходной модели
37
+ 2. Поддержка системных промптов для регулриования стиля ответов
38
+ 3. Поддержка до 128k токенов контекста благодаря исходной модели (RoPE scaling)
39
+ 4. Grounded RAG режим - модель имеет специальную роль documents и специальный режим работы для поиска идентификаторов релевантных вопросу пользователя документов и использования их для ответа на вопрос, вдохновлено аналогичной способностью модели Command-R
40
+
41
+ ### Метрики и оценка качества
42
+
43
+ Модель оценивалась на нашем русскоязычном open-source SbS бенчмарке [ru-arena-general](https://github.com/VikhrModels/ru_llm_arena) (50 топиков по 10 вопросов), где судьей выступает gpt-4-1106-preview и [бенчмарке](https://colab.research.google.com/drive/16730rWQ4-yGqWoooLs0Ece_16frmOniP?usp=sharing) для RAG на основе тестового сета [Grounded-RAG-v2](https://huggingface.co/datasets/Vikhrmodels/Grounded-RAG-RU-v2), где судей выступа gpt-4o.
44
+
45
+ #### Результаты на Ru-Arena-General
46
+
47
+ В качестве референсых отвеов, с которыми сравниваются модели выступают ответы от gpt-3.5-turbo-0125, поэтому она имеет винрейт 50%.
48
+
49
+ Здесь приведена лишь часть лидерборда, подробнее смотрите в репозитории бенчмарка.
50
+
51
+ | Model Name | Winrate | 95% CI | Average # Tokens |
52
+ |--------------------------------------------------|--------|--------------------|------------------|
53
+ | gpt-4-1106-preview | 90.9 | (-1.3, 1.0) | 541 |
54
+ | gpt-4o-mini | 83.9 | (-1.8, 1.1) | 448 |
55
+ | vikhr-nemo-12b-instruct-r-21-09-24 | 79.8 | (-2.2, 1.9) | 627 |
56
+ | gemma-2-9b-it-sppo-iter3 | 73.6 | (-1.6, 2.2) | 509 |
57
+ | gemma-2-9b-it | 69.2 | (-2.5, 1.9) | 459 |
58
+ | t-lite-instruct-0.1 | 64.7 | (-2.1, 1.7) | 810 |
59
+ | **vikhr-llama3.1-8b-instruct-r-21-09-24** | **63.4** | (-2.1, 2.5) | **618** |
60
+ | suzume-llama-3-8B-multilingual-orpo-borda-half | 57.1 | (-1.9, 2.2) | 682 |
61
+ | mistral-nemo-instruct-2407 | 50.5 | (-2.7, 2.6) | 403 |
62
+ | gpt-3.5-turbo-0125 | 50.0 | (0.0, 0.0) | 220 |
63
+ | c4ai-command-r-v01 | 49.0 | (-1.7, 2.2) | 529 |
64
+ | meta-llama-3.1-8b-instruct | 43.1 | (-2.8, 2.3) | 628 |
65
+
66
+ #### Результаты на бенчмарке RAG
67
+
68
+ Общий размер тестового сета - 200 примеров, 100 для in_domain вопросов и 100 для out_of_domain.
69
+
70
+ Тут для оценки качества модель-судья gpt-4o была проинструктирована учитывать релеватность и фактологичкскую полноту ответов исходя из документов и реферсного ответа от gpt-4-1106-preview.
71
+
72
+ Подробности промптов и оценок смотрите в коде бенчмарка на [коллабе](https://colab.research.google.com/drive/16730rWQ4-yGqWoooLs0Ece_16frmOniP?usp=sharing)
73
+
74
+ in_domain - вопросы которые связаны с содержанием предоставленных документов в той или иной степени \
75
+ out_of_domain - вопросы которые специально никак не связаны с содержанием предоставленных документов
76
+
77
+ <table>
78
+ <thead>
79
+ <tr>
80
+ <th rowspan="2">question_type</th>
81
+ <th colspan="3">gpt-4o</th>
82
+ </tr>
83
+ <tr>
84
+ <th>judge_correct_percent</th>
85
+ <th>avg_answer_match_rougeL</th>
86
+ <th>avg_abs_indexes_diff</th>
87
+ </tr>
88
+ </thead>
89
+ <tbody>
90
+ <tr>
91
+ <td>in_domain</td>
92
+ <td>73%</td>
93
+ <td>0.34</td>
94
+ <td>NaN</td>
95
+ </tr>
96
+ <tr>
97
+ <td>out_of_domain</td>
98
+ <td>81%</td>
99
+ <td>0.20</td>
100
+ <td>NaN</td>
101
+ </tr>
102
+ </tbody>
103
+ </table>
104
+
105
+ <table>
106
+ <thead>
107
+ <tr>
108
+ <th style="visibility: hidden;" rowspan="2">question_type</th>
109
+ <th colspan="3">Vikhr-Llama3.1-8B-Instruct-R-21-09-24</th>
110
+ </tr>
111
+ <tr>
112
+ <th style="visibility: hidden;">judge_correct_percent</th>
113
+ <th style="visibility: hidden;">avg_answer_match_rougeL</th>
114
+ <th style="visibility: hidden;">avg_abs_indexes_diff</th>
115
+ </tr>
116
+ </thead>
117
+ <tbody>
118
+ <tr>
119
+ <td>in_domain</td>
120
+ <td>64%</td>
121
+ <td>0.41</td>
122
+ <td>0</td>
123
+ </tr>
124
+ <tr>
125
+ <td>out_of_domain</td>
126
+ <td>89%</td>
127
+ <td>0.51</td>
128
+ <td>0</td>
129
+ </tr>
130
+ </tbody>
131
+ </table>
132
+
133
+ <table>
134
+ <thead>
135
+ <tr>
136
+ <th style="visibility: hidden;" rowspan="2">question_type</th>
137
+ <th colspan="3">gpt-4o-mini</th>
138
+ </tr>
139
+ <tr>
140
+ <th style="visibility: hidden;">judge_correct_percent</th>
141
+ <th style="visibility: hidden;">avg_answer_match_rougeL</th>
142
+ <th style="visibility: hidden;">avg_abs_indexes_diff</th>
143
+ </tr>
144
+ </thead>
145
+ <tbody>
146
+ <tr>
147
+ <td>in_domain</td>
148
+ <td>65%</td>
149
+ <td>0.33</td>
150
+ <td>NaN</td>
151
+ </tr>
152
+ <tr>
153
+ <td>out_of_domain</td>
154
+ <td>73%</td>
155
+ <td>0.18</td>
156
+ <td>NaN</td>
157
+ </tr>
158
+ </tbody>
159
+ </table>
160
+
161
+ <table>
162
+ <thead>
163
+ <tr>
164
+ <th style="visibility: hidden;" rowspan="2">question_type</th>
165
+ <th colspan="3">gpt-3.5-turbo-0125 </th>
166
+ </tr>
167
+ <tr>
168
+ <th style="visibility: hidden;">judge_correct_percent</th>
169
+ <th style="visibility: hidden;">avg_answer_match_rougeL</th>
170
+ <th style="visibility: hidden;">avg_abs_indexes_diff</th>
171
+ </tr>
172
+ </thead>
173
+ <tbody>
174
+ <tr>
175
+ <td>in_domain</td>
176
+ <td>49%</td>
177
+ <td>0.28</td>
178
+ <td>NaN</td>
179
+ </tr>
180
+ <tr>
181
+ <td>out_of_domain</td>
182
+ <td>76%</td>
183
+ <td>0.20</td>
184
+ <td>NaN</td>
185
+ </tr>
186
+ </tbody>
187
+ </table>
188
+
189
+ ### Как эта модель создавалась
190
+
191
+ #### Инструктивная SFT часть
192
+
193
+ Для SFT этапа обучения модели мы подготовили большой (150к инструкций) инструктивный синтетический датасет [Vikhrmodels/GrandMaster-PRO-MAX](https://huggingface.co/datasets/Vikhrmodels/GrandMaster-PRO-MAX). Его особенностью является встроеный CoT (Chain-Of-Thought), для сбора которого мы использовали модифицированный промет для gpt-4-turbo, подробности в карточке датасета.
194
+
195
+ Кроме того, для того чтобы сделать RAG Grounding, мы подготовили другой синтетический датасет - [Vikhrmodels/Grounded-RAG-RU-v2](https://huggingface.co/datasets/Vikhrmodels/Grounded-RAG-RU-v2) (50k диалогов), его пайплайн сборки достаточно сложный для короткого описания и полробнее об этом вы можете прочитать в его карточке.
196
+
197
+ #### Этап алайнмента с SMPO
198
+
199
+ Для дальнейшего улучшения качества ответов мы использовали следущий пайплайн:
200
+ 1) Обучили кастомную Reward модель (она пока не будет выкладываться в открытый доступ)
201
+ 2) Дедуплицировали и отфилтровали используя RM модель оригинальный датасет Vikhrmodels/GrandMaster-PRO-MAX, получив порядка 10к самых высококачественных и разнообразных диалогов.
202
+ 3) Сделали Rejection Sampling с SFT чекпоинтом используя полученный датасет и Reward модель. (Генерировали 7 гипотез и брали только 2 самые худшие как rejected)
203
+ 4) Дообучили SFT чекпоинт с помощью нашего метода SMPO используя полученный датасет из этапа 3. SMPO был спроектирован и выбран как метод для повышения стабильности тренировки преференсов в условиях Rejection Samping и достижения нужного margin.
204
+
205
+ Реализацию SMPO, rejection sampling и другое можно найти в нашей библиотеке [effective_llm_alignment](https://github.com/VikhrModels/effective_llm_alignment/) на GitHub
206
+
207
+ Идея использования именно SMPO, а не другого PO метода, возникла в результате проведения большого количества экспериментов с классическими методами, при необходимости лучшего контроля процесса сходимости. При тщательной настройке других методов (например SimPO), можно добится похожего результата, однако мы постарались стаблизировать этот процесс и объединить лучшие практики из других методов.
208
+
209
+ ### Как работать с RAG
210
+
211
+ Роль documents представляет из себя список словарей с описанием контента документов, с примнением `json.dumps(array, ensure_ascii=False)` (см. пример ниже). \
212
+ Контент документов может быть представлен в **3** различных форматах: **Markdown**, **HTML**, **Plain Text**. Контент каждого документа - может быть чанком текста длиной до 4к символов.
213
+
214
+ ```json
215
+ [
216
+ {
217
+ "doc_id": (0..5),
218
+ "title": "(null or str)",
219
+ "content": "(html or markdown or plain text)"
220
+ }
221
+ ]
222
+ ```
223
+
224
+ #### Пример правильного использования с OpenAI-like API
225
+
226
+ Запуск vLLM сервера: `vllm serve --dtype half --max-model-len 32000 -tp 1 Vikhrmodels/Vikhr-Llama3.1-8B-Instruct-R-21-09-24 --api-key token-abc123`
227
+
228
+ ```python
229
+ GROUNDED_SYSTEM_PROMPT = "Your task is to answer the user's questions using only the information from the provided documents. Give two answers to each question: one with a list of relevant document identifiers and the second with the answer to the question itself, using documents with these identifiers."
230
+
231
+ documents = [
232
+ {
233
+ "doc_id": 0,
234
+ "title": "Глобальное потепление: ледники",
235
+ "content": "За последние 50 лет объем ледников в мире уменьшился на 30%"
236
+ },
237
+ {
238
+ "doc_id": 1,
239
+ "title": "Глобальное потепление: Уровень моря",
240
+ "content": "Уровень мирового океана повысился на 20 см с 1880 года и продолжает расти на 3,3 мм в год"
241
+ }
242
+ ]
243
+ sample_history = [
244
+ {'role': 'system', 'content': GROUNDED_SYSTEM_PROMPT},
245
+ {'role': 'documents', 'content': json.dumps(documents, ensure_ascii=False)},
246
+ {'role': 'user', 'content': 'Глоабльное потепление'}
247
+ ]
248
+ relevant_indexes = llm_client.chat.completions.create(
249
+ model=llm_model,
250
+ messages=sample_history,
251
+ temperature=0.0,
252
+ max_tokens=2048
253
+ ).choices[0].message.content
254
+
255
+ print('Using documents: ' + relevant_indexes + '\n----')
256
+ final_answer = llm_client.chat.completions.create(
257
+ model=llm_model,
258
+ messages=sample_history + [{'role': 'assistant', 'content': relevant_indexes}],
259
+ temperature=0.3,
260
+ max_tokens=2048
261
+ ).choices[0].message.content
262
+
263
+ print(final_answer)
264
+ ```
265
+
266
+ Ответ после выполнения кода будет выглядеть примерно так:
267
+
268
+ Using documents: {"relevant_doc_ids": [0, 1]}
269
+ ----
270
+
271
+ Глобальное потепление – это долгосрочное повышение средней температуры атмосферы Земли. Это явление имеет множество последствий, включая таяние ледников и повышение уровня мирового океана.
272
+
273
+ Из доступной мне информации видно, что за последние 50 лет объем ледников в мире уменьшился на 30%. Это свидетельствует о том, что таяние ледников является одним из проявлений глобального потепления. Ледники играют важную роль в регулировании климата, так как они отражают солнечный свет и замедляют таяние снега и льда. Уменьшение их объема может привести к усилению таяния снега и льда в высоких широтах, что, в свою очередь, может привести к изменению климата в этих регионах.
274
+
275
+ Кроме того, уровень мирового океана повысился на 20 см с 1880 года и продолжает расти на 3,3 мм в год. Это повышение уровня моря обусловлено несколькими факторами, включая таяние ледников и ледниковых щитов, а также расширение океанов из-за повышения температуры воды. Повышение уровня моря может привести к затоплению прибрежных территорий, эрозии берегов и увеличению риска наводнений.
276
+
277
+ Глобальное потепление является сложной и многогранной проблемой, которая требует международного сотрудничества и принятия мер для сокращения выбросов парниковых газов, чтобы замедлить и, в конечном счете, остановить этот процесс.
278
+
279
+ Используя первый ответ модели `relevant_indexes` (JSON), можно понять нашла ли модель информацию в документах или нет, она обучена возврашать пустой массив если ее нет и в таком случае она будет отвечать, что не смогла найти информацию в базе знаний (при генерации второго ответа).
280
+
281
+ ### Нюансы и ограничения
282
+ - Модель имеет **низкий уровень безопасности ответов** и нацелена на правильное и полное выполенние инструкций, имейте это ввиду при использовании и тестируйте самостоятельно. Частично это исправляется системными промптами и дополнительными указаниями о важности безопасности в промпте пользователя.
283
+ - Системные промпты не предназначены для описание персонажей, мы рекомендуем использовать их для спецификации стиля ответа (вроде "answer only in json format"). Кроме того, желательно, писать их **на английском языке**, так как так было в датасете, от использования английского в системных промтпах не зависит язык ответа.
284
+ - RAG режим **требует обязательного** наличия системного промпта `GROUNDED_SYSTEM_PROMPT` описаного в секции *Как работать с RAG*. Так же иногда модель может добавлять общую информацию из своих знаний в ответ к той, что есть в документах.
285
+ - Модель лучше использовать с низкой темптературой (0.1-0.4) и желательно с beam search, а таже использовать top_k (30-50).
286
+
287
+ ### Авто��ы
288
+ - Sergei Bratchikov, [NLP Wanderer](https://t.me/nlpwanderer), Vikhr Team
289
+ - Konstantin Korolev, Vikhr Team
290
+ - Aleksandr Nikolich, Vikhr Team
291
+