Create README.md
Browse files
README.md
ADDED
@@ -0,0 +1,109 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
---
|
2 |
+
library_name: transformers
|
3 |
+
model_name: Vikhrmodels/QVikhr-2.5-1.5B-Instruct-SMPO
|
4 |
+
base_model:
|
5 |
+
- Vikhrmodels/Vikhr-Qwen-2.5-1.5B-Instruct
|
6 |
+
language:
|
7 |
+
- ru
|
8 |
+
- en
|
9 |
+
license: apache-2.0
|
10 |
+
---
|
11 |
+
|
12 |
+
# 💨🦅 QVikhr-2.5-1.5B-Instruct-SMPO
|
13 |
+
|
14 |
+
Инструктивная модель на основе **Qwen-2.5-1.5B-Instruct**, обученная на русскоязычном датасете **GrandMaster-PRO-MAX** с использованием **SMPO** (Simple Margin Preference Optimization).
|
15 |
+
|
16 |
+
|
17 |
+
## Quatized variants:
|
18 |
+
|
19 |
+
|
20 |
+
## Особенности:
|
21 |
+
|
22 |
+
- 📚 Основа: [Vikhr-Qwen-2.5-1.5B-Instruct](https://huggingface.co/Vikhrmodels/Vikhr-Qwen-2.5-1.5B-Instruct)
|
23 |
+
- 🇷🇺 Специализация: **RU**
|
24 |
+
- 🌍 Поддержка: **Bilingual RU/EN**
|
25 |
+
|
26 |
+
## Описание:
|
27 |
+
|
28 |
+
**QVikhr-2.5-1.5B-Instruct-SMPO** представляет собой языковую модель, прошедшую специализированное обучение с использованием метода **SMPO**. Эта модель демонстрирует прогресс в методах выравнивания, особенно в области улучшения качества ответов через оптимизацию предпочтений.
|
29 |
+
|
30 |
+
## Обучение:
|
31 |
+
|
32 |
+
### Этап алайнмента с SMPO (Simple Margin Preference Optimization)
|
33 |
+
|
34 |
+
[Конфиг обучения](https://github.com/VikhrModels/effective_llm_alignment/blob/e3672f6ec4023109699a951bf08f1bce23338921/training_configs/preference/smpo-qvikhr2.5-1.5b-lora-best-rs.yaml)
|
35 |
+
|
36 |
+
|
37 |
+
|
38 |
+
Для дальнейшего улучшения качества ответов мы использовали следущий пайплайн:
|
39 |
+
|
40 |
+
- Использовали [Skywork/Skywork-Reward-Llama-3.1-8B-v0.2](https://huggingface.co/Skywork/Skywork-Reward-Llama-3.1-8B-v0.2) в качестве Reward модель
|
41 |
+
- Дедуплицировали и отфилтровали используя RM модель оригинальный датасет Vikhrmodels/GrandMaster-PRO-MAX, получив порядка 10к самых высококачественных и разнообразных диалогов.
|
42 |
+
- Сделали Rejection Sampling с SFT чекпоинтом [Vikhr-Qwen-2.5-1.5B-Instruct](https://huggingface.co/Vikhrmodels/Vikhr-Qwen-2.5-1.5B-Instruct) используя полученный датасет и Reward модель. (Генерировали 7 гипотез)
|
43 |
+
- Дообучили SFT чекпоинт с помощью нашего метода SMPO используя полученный датасет из этапа 3.
|
44 |
+
SMPO был спроектирован и выбран как метод для повышения стабильности тренировки преференсов в условиях Rejection Sampling и достижения нужного margin.
|
45 |
+
|
46 |
+
Реализацию SMPO, rejection sampling и тд можно найти в нашей библиотеке [effective_llm_alignment](https://github.com/VikhrModels/effective_llm_alignment) на GitHub
|
47 |
+
|
48 |
+
Идея использования именно SMPO, а не другого PO метода, возникла в результате проведения большого количества экспериментов с классическими методами, при необходимости лучшего контроля процесса сходимости. При тщательной настройке других методов (например SimPO), можно добится похожего результата, однако мы постарались стаблизировать этот процесс и объединить лучшие практики из других методов.
|
49 |
+
|
50 |
+
## Пример кода для запуска:
|
51 |
+
|
52 |
+
**Рекомендуемая температура для генерации: 0.4**.
|
53 |
+
|
54 |
+
```python
|
55 |
+
from transformers import AutoModelForCausalLM, AutoTokenizer
|
56 |
+
|
57 |
+
# Load the model and tokenizer
|
58 |
+
model_name = "Vikhrmodels/QVikhr-2.5-1.5B-Instruct-SMPO"
|
59 |
+
model = AutoModelForCausalLM.from_pretrained(model_name)
|
60 |
+
tokenizer = AutoTokenizer.from_pretrained(model_name)
|
61 |
+
|
62 |
+
# Prepare the input text
|
63 |
+
input_text = "Напиши краткое описание книги Гарри Поттер."
|
64 |
+
|
65 |
+
messages = [
|
66 |
+
{"role": "system", "content": "Вы — Vikhr, ИИ помощник, созданный компанией Vikhr models для предоставления полезной, честной и безопасной информации."},
|
67 |
+
{"role": "user", "content": input_text},
|
68 |
+
]
|
69 |
+
|
70 |
+
# Tokenize and generate text
|
71 |
+
input_ids = tokenizer.apply_chat_template(messages, truncation=True, add_generation_prompt=True, return_tensors="pt")
|
72 |
+
output = model.generate(
|
73 |
+
input_ids,
|
74 |
+
max_length=1512,
|
75 |
+
temperature=0.4,
|
76 |
+
)
|
77 |
+
|
78 |
+
# Decode and print result
|
79 |
+
generated_text = tokenizer.decode(output[0], skip_special_tokens=True)
|
80 |
+
print(generated_text)
|
81 |
+
```
|
82 |
+
|
83 |
+
#### ��твет модели:
|
84 |
+
|
85 |
+
>**Краткое описание книги "Гарри Поттер"**
|
86 |
+
|
87 |
+
>"Гарри Поттер" – это серия книг о мальчике-волшебнике, который обнаруживает в себе силу волшебства после того, как его семья умирает от злого колдуна Драко Малфоя. Главный герой, Гарри Поттер, живёт с родителями на окраине Хогвартса, школы магии и волшебства.
|
88 |
+
>В детстве Гарри встречает своего лучшего друга Рона Уизли и его тётку Гермиону Грейнджер. Они вместе отправляются в Хогвартс, где начинают учиться волшебству. В ходе учебы Гарри знакомится с другими учениками: Слизеринами (главные антагонисты) и Хогвартсом как место обучения магии.
|
89 |
+
>Самым важным событием в жизни Гарри становится то, что он узнаёт о своем происхождении – он является последним из семьи Поттеров, которые когда-то владели всеми знаниями о волшебстве. Это знание открывает ему путь к своей миссии – борьбе против темных сил, которые стремятся уничтожить волшебство.
|
90 |
+
>По мере развития сюжета Гарри сталкивается с различными препятствиями, включая преследование со стороны Драко Малфоя и его друзей, а также внутренние конфликты внутри самого Хогвартса. Однако благодаря поддержке своих друзей и новых знакомых, таких как Философский камень, Гарри продолжает свой путь к победе над темными силами.
|
91 |
+
>В конце концов, Гарри и его друзья успешно борются с темными силами, восстанавливают мир в Хогвартсе и получают признание за свои поступки. Книги завершаются тем, что Гарри готовится стать волшебником, но его будущее ещё не определено.
|
92 |
+
|
93 |
+
### Авторы
|
94 |
+
|
95 |
+
- Sergei Bratchikov, [NLP Wanderer](https://t.me/nlpwanderer), [Vikhr Team](https://t.me/vikhrlabs)
|
96 |
+
- Nikolay Kompanets, [LakoMoor](https://t.me/lakomoordev), [Vikhr Team](https://t.me/vikhrlabs)
|
97 |
+
- Konstantin Korolev, [Vikhr Team](https://t.me/vikhrlabs)
|
98 |
+
- Aleksandr Nikolich, [Vikhr Team](https://t.me/vikhrlabs)
|
99 |
+
|
100 |
+
```
|
101 |
+
@inproceedings{nikolich2024vikhr,
|
102 |
+
title={Vikhr: Advancing Open-Source Bilingual Instruction-Following Large Language Models for Russian and English},
|
103 |
+
author={Aleksandr Nikolich and Konstantin Korolev and Sergei Bratchikov and Nikolay Kompanets and Igor Kiselev and Artem Shelmanov},
|
104 |
+
booktitle={Proceedings of the 4th Workshop on Multilingual Representation Learning (MRL) @ EMNLP-2024},
|
105 |
+
year={2024},
|
106 |
+
publisher={Association for Computational Linguistics},
|
107 |
+
url={https://arxiv.org/pdf/2405.13929}
|
108 |
+
}
|
109 |
+
```
|