Text Generation
Transformers
Safetensors
Russian
English
llama
conversational
text-generation-inference
Inference Endpoints
LakoMoor commited on
Commit
5b9e980
·
verified ·
1 Parent(s): 1cbb55e

Create README.md

Browse files
Files changed (1) hide show
  1. README.md +180 -0
README.md ADDED
@@ -0,0 +1,180 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ library_name: transformers
3
+ model_name: Vikhrmodels/Vikhr-YandexGPT-5-Lite-8B-it
4
+ base_model:
5
+ - yandex/YandexGPT-5-Lite-8B-pretrain
6
+ language:
7
+ - ru
8
+ - en
9
+ license: other
10
+ license_name: yandexgpt-5-lite-8b-pretrain
11
+ license_link: LICENSE
12
+ ---
13
+
14
+ # Vikhr-YandexGPT-5-Lite-8B-it
15
+
16
+ Инструктивная модель на основе **YandexGPT-5-Lite-8B-pretrain**, обученная на русскоязычном датасете **GrandMaster-PRO-MAX** и **Grounded-RAG-RU-v2** с использованием **SFT**.
17
+
18
+
19
+ ## Quatized variants:
20
+ - [GGUF](https://hf.co/Vikhrmodels/Vikhr-YandexGPT-5-Lite-8B-it_GGUF)
21
+ - MLX
22
+ - [4 bit](https://hf.co/Vikhrmodels/Vikhr-YandexGPT-5-Lite-8B-it_MLX-4bit)
23
+ - [8 bit](https://hf.co/Vikhrmodels/Vikhr-YandexGPT-5-Lite-8B-it_MLX-8bit)
24
+
25
+
26
+ ## Особенности:
27
+
28
+ - 📚 Основа: [YandexGPT-5-Lite-8B-pretrain](https://huggingface.co/yandex/YandexGPT-5-Lite-8B-pretrain)
29
+ - 💾 Датасет / Dataset: [GrandMaster-PRO-MAX](https://huggingface.co/datasets/Vikhrmodels/GrandMaster-PRO-MAX), [Grounded-RAG-RU-v2](https://huggingface.co/datasets/Vikhrmodels/Grounded-RAG-RU-v2)
30
+ - 🇷🇺 Специализация: **RU**
31
+ - 🌍 Поддержка: **Bilingual RU/EN**
32
+
33
+ ## Попробовать / Try now:
34
+
35
+ [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/drive/1jIm0beQiUoW6bn57jixEdFEgIa-vZMLM?usp=sharing)
36
+
37
+
38
+ ## Обучение:
39
+
40
+ **Vikhr-YandexGPT-5-Lite-8B-it** была создана с использованием метода SFT (Supervised Fine-Tuning).
41
+
42
+ #### Инструктивная SFT часть
43
+
44
+ Для SFT этапа обучения модели мы подготовили большой (150к инструкций) инструктивный синтетический датасет [Vikhrmodels/GrandMaster-PRO-MAX](https://huggingface.co/datasets/Vikhrmodels/GrandMaster-PRO-MAX). Его особенностью является встроеный CoT (Chain-Of-Thought), для сбора которого мы использовали модифицированный промет для gpt-4-turbo, подробности в карточке датасета.
45
+
46
+ Кроме того, для того чтобы сделать RAG Grounding, мы подготовили другой синтетический датасет - [Vikhrmodels/Grounded-RAG-RU-v2](https://huggingface.co/datasets/Vikhrmodels/Grounded-RAG-RU-v2) (50k диалогов), его пайплайн сборки достаточно сложный для короткого описания и полробнее об этом вы можете прочитать в его карточке.
47
+
48
+ [Конфиг обучения](https://github.com/VikhrModels/effective_llm_alignment/tree/main/training_configs/sft/sft-yandex-lora-GrandmasterRAG.yaml)
49
+
50
+ ## Пример кода для запуска:
51
+
52
+ ```python
53
+ from transformers import AutoModelForCausalLM, AutoTokenizer
54
+
55
+ # Load the model and tokenizer
56
+ model_name = "Vikhrmodels/Vikhr-YandexGPT-5-Lite-8B-it"
57
+ model = AutoModelForCausalLM.from_pretrained(model_name)
58
+ tokenizer = AutoTokenizer.from_pretrained(model_name)
59
+
60
+ # Prepare the input text
61
+ input_text = "Напиши краткое описание фильма Назад в будущее."
62
+
63
+ messages = [
64
+ {"role": "user", "content": input_text},
65
+ ]
66
+
67
+ # Tokenize and generate text
68
+ input_ids = tokenizer.apply_chat_template(messages, truncation=True, add_generation_prompt=True, return_tensors="pt")
69
+ output = model.generate(
70
+ input_ids,
71
+ max_length=1512,
72
+ temperature=0.7,
73
+ )
74
+
75
+ # Decode and print result
76
+ generated_text = tokenizer.decode(output[0], skip_special_tokens=True)
77
+ print(generated_text)
78
+ ```
79
+
80
+ #### Ответ модели:
81
+
82
+ >"Назад в будущее" (англ. "Back to the Future") — это американский научно-фантастический фильм, выпущенный в 1985 году. Режиссёром картины выступил Роберт Земекис, а сценарий написал Боб Гейл. Главные роли исполнили Майкл Дж. Фокс, Кристофер Ллойд и Лиа Томпсон.
83
+ >
84
+ >Фильм рассказывает историю Марти МакФлая, обычного подростка из 1985 года, который случайно попадает в 1955 год благодаря изобретению своего друга-ученого, доктора Эмметта Брауна. Марти оказывается в прошлом, где он должен помочь доктору Брауну, который в то время был молодым и наивным, изобрести машину времени.
85
+ >
86
+ >В процессе своих приключений Марти встречает молодого доктора Брауна и его семью, а также влюбляется в девушку, которая в б��дущем станет его матерью. Марти должен не только исправить ошибки прошлого, но и предотвратить катастрофу, которая может изменить будущее.
87
+ >
88
+ >Фильм получил множество наград и стал культовым, породив два сиквела и множество мемов и цитат, которые до сих пор популярны.
89
+
90
+ ### Как работать с RAG
91
+
92
+ Роль documents представляет из себя список словарей с описанием контента документов, с примнением `json.dumps(array, ensure_ascii=False)` (см. пример ниже). \
93
+ Контент документов может быть представлен в **3** различных форматах: **Markdown**, **HTML**, **Plain Text**. Контент каждого документа - может быть чанком текста длиной до 4к символов.
94
+
95
+ ```json
96
+ [
97
+ {
98
+ "doc_id": (0..5),
99
+ "title": "(null or str)",
100
+ "content": "(html or markdown or plain text)"
101
+ }
102
+ ]
103
+ ```
104
+
105
+ #### Пример правильного использования с OpenAI-like API
106
+
107
+ Запуск vLLM сервера: `vllm serve --dtype half --max-model-len 32000 -tp 1 Vikhrmodels/Vikhr-YandexGPT-5-Lite-8B-it --api-key token-abc123`
108
+
109
+ ```python
110
+ 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."
111
+ documents = [
112
+ {
113
+ "doc_id": 0,
114
+ "title": "Глобальное потепление: ледники",
115
+ "content": "За последние 50 лет объем ледников в мире уменьшился на 30%"
116
+ },
117
+ {
118
+ "doc_id": 1,
119
+ "title": "Глобальное потепление: Уровень моря",
120
+ "content": "Уровень мирового океана повысился на 20 см с 1880 года и продолжает расти на 3,3 мм в год"
121
+ }
122
+ ]
123
+ sample_history = [
124
+ {'role': 'system', 'content': GROUNDED_SYSTEM_PROMPT},
125
+ {'role': 'documents', 'content': json.dumps(documents, ensure_ascii=False)},
126
+ {'role': 'user', 'content': 'Глоабльное потепление'}
127
+ ]
128
+ relevant_indexes = llm_client.chat.completions.create(
129
+ model=llm_model,
130
+ messages=sample_history,
131
+ temperature=0.0,
132
+ max_tokens=2048
133
+ ).choices[0].message.content
134
+ print('Using documents: ' + relevant_indexes + '\n----')
135
+ final_answer = llm_client.chat.completions.create(
136
+ model=llm_model,
137
+ messages=sample_history + [{'role': 'assistant', 'content': relevant_indexes}],
138
+ temperature=0.3,
139
+ max_tokens=2048
140
+ ).choices[0].message.content
141
+ print(final_answer)
142
+ ```
143
+
144
+ Ответ после выполнения кода будет выглядеть примерно так:
145
+
146
+ >Using documents: {"relevant_doc_ids": [0, 1]}
147
+ >----
148
+ >Глобальное потепление – это долгосрочное повышение средней температуры атмосферы и океанов Земли. Это явление имеет множество последствий для нашей планеты, и среди них можно выделить два ключевых аспекта, основанных на доступных мне данных:
149
+ >
150
+ >1. **Уменьшение объема ледников**: За последние 50 лет наблюдается значительное сокращение объема ледников по всему миру. Согласно данным, объем ледников уменьшился на 30%. Это может быть связано с таянием ледников из-за повышения температур, что является одним из признаков глобального потепления.
151
+ >
152
+ >2. **Повышение уровня моря**: Уровень мирового океана также увеличивается, что связано с таянием ледников и ледяных покровов, а также с расширением воды при повышении температуры. С 1880 года уровень моря повысился на 20 сантиметров, и этот процесс продолжается, с ежегодным увеличением на 3,3 миллиметра.
153
+ >
154
+ >Эти изменения имеют серьезные последствия для экосистем, климата и человеческого общества. Таяние ледников приводит к повышению уровня моря, что может привести к затоплению прибрежных терри��орий и островов, а также к изменению водных ресурсов и климатических паттернов.
155
+
156
+ Используя первый ответ модели `relevant_indexes` (JSON), можно понять нашла ли модель информацию в документах или нет, она обучена возврашать пустой массив если ее нет и в таком случае она будет отвечать, что не смогла найти информацию в базе знаний (при генерации второго ответа).
157
+
158
+ ### Нюансы и ограничения
159
+ - Модель имеет **низкий уровень безопасности ответов** и нацелена на правильное и полное выполенние инструкций, имейте это ввиду при использовании и тестируйте самостоятельно. Частично это исправляется системными промптами и дополнительными указаниями о важности безопасности в промпте пользователя.
160
+ - Системные промпты не предназначены для описание персонажей, мы рекомендуем использовать их для спецификации стиля ответа (вроде "answer only in json format"). Кроме того, желательно, писать их **на английском языке**, так как так было в датасете, от использования английского в системных промтпах не зависит язык ответа.
161
+ - RAG режим **требует обязательного** наличия системного промпта `GROUNDED_SYSTEM_PROMPT` описаного в секции *Как работать с RAG*. Так же иногда модель может добавлять общую информацию из своих знаний в ответ к той, что есть в документах.
162
+ - Модель лучше использовать с низкой темптературой (0.1-0.5), а таже использовать top_k (30-50), при температуре 1.0 были замечены случайные дефекты генерации.
163
+
164
+ ### Авторы
165
+
166
+ - Sergei Bratchikov, [NLP Wanderer](https://t.me/nlpwanderer), [Vikhr Team](https://t.me/vikhrlabs)
167
+ - Nikolay Kompanets, [LakoMoor](https://t.me/lakomoordev), [Vikhr Team](https://t.me/vikhrlabs)
168
+ - Konstantin Korolev, [Vikhr Team](https://t.me/vikhrlabs)
169
+ - Aleksandr Nikolich, [Vikhr Team](https://t.me/vikhrlabs)
170
+
171
+ ```
172
+ @inproceedings{nikolich2024vikhr,
173
+ title={Vikhr: Advancing Open-Source Bilingual Instruction-Following Large Language Models for Russian and English},
174
+ author={Aleksandr Nikolich and Konstantin Korolev and Sergei Bratchikov and Nikolay Kompanets and Igor Kiselev and Artem Shelmanov},
175
+ booktitle={Proceedings of the 4th Workshop on Multilingual Representation Learning (MRL) @ EMNLP-2024},
176
+ year={2024},
177
+ publisher={Association for Computational Linguistics},
178
+ url={https://arxiv.org/pdf/2405.13929}
179
+ }
180
+ ```