File size: 8,988 Bytes
6ea2c28
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
aa6c586
 
 
 
6ea2c28
 
 
 
 
 
 
 
 
 
 
 
7058f8d
 
 
 
 
6ea2c28
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
---
library_name: transformers
model_name: Vikhrmodels/QVikhr-2.5-1.5B-Instruct-SMPO
base_model:
- Vikhrmodels/Vikhr-Qwen-2.5-1.5B-Instruct
language:
- ru
- en
license: apache-2.0
---

# 💨🦅 QVikhr-2.5-1.5B-Instruct-SMPO

Инструктивная модель на основе **Qwen-2.5-1.5B-Instruct**, обученная на русскоязычном датасете **GrandMaster-PRO-MAX** с использованием **SMPO** (Simple Margin Preference Optimization). 


## Quatized variants:
 - [GGUF](https://hf.co/Vikhrmodels/QVikhr-2.5-1.5B-Instruct-SMPO_GGUF)
 - MLX
   - [4 bit](https://hf.co/Vikhrmodels/QVikhr-2.5-1.5B-Instruct-SMPO_MLX-4bit)
   - [8 bit](https://hf.co/Vikhrmodels/QVikhr-2.5-1.5B-Instruct-SMPO_MLX-8bit)


## Особенности:

- 📚 Основа: [Vikhr-Qwen-2.5-1.5B-Instruct](https://huggingface.co/Vikhrmodels/Vikhr-Qwen-2.5-1.5B-Instruct)
- 🇷🇺 Специализация: **RU**
- 🌍 Поддержка: **Bilingual RU/EN**

## Описание:

**QVikhr-2.5-1.5B-Instruct-SMPO** представляет собой языковую модель, прошедшую специализированное обучение с использованием метода **SMPO**. Эта модель демонстрирует прогресс в методах выравнивания, особенно в области улучшения качества ответов через оптимизацию предпочтений.

## Попробовать / Try now:

[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/drive/1xpTj8gLZAl2kbgciEAP9XxF5G18f7znr?usp=sharing)


## Обучение:

### Этап алайнмента с SMPO (Simple Margin Preference Optimization)

[Конфиг обучения](https://github.com/VikhrModels/effective_llm_alignment/blob/e3672f6ec4023109699a951bf08f1bce23338921/training_configs/preference/smpo-qvikhr2.5-1.5b-lora-best-rs.yaml)



Для дальнейшего улучшения качества ответов мы использовали следущий пайплайн:

- Использовали [Skywork/Skywork-Reward-Llama-3.1-8B-v0.2](https://huggingface.co/Skywork/Skywork-Reward-Llama-3.1-8B-v0.2) в качестве Reward модель
- Дедуплицировали и отфилтровали используя RM модель оригинальный датасет Vikhrmodels/GrandMaster-PRO-MAX, получив порядка 10к самых высококачественных и разнообразных диалогов.
- Сделали Rejection Sampling с SFT чекпоинтом [Vikhr-Qwen-2.5-1.5B-Instruct](https://huggingface.co/Vikhrmodels/Vikhr-Qwen-2.5-1.5B-Instruct) используя полученный датасет и Reward модель. (Генерировали 7 гипотез)
- Дообучили SFT чекпоинт с помощью нашего метода SMPO используя полученный датасет из этапа 3. 
SMPO был спроектирован и выбран как метод для повышения стабильности тренировки преференсов в условиях Rejection Sampling и достижения нужного margin.

Реализацию SMPO, rejection sampling и тд можно найти в нашей библиотеке [effective_llm_alignment](https://github.com/VikhrModels/effective_llm_alignment) на GitHub

Идея использования именно SMPO, а не другого PO метода, возникла в результате проведения большого количества экспериментов с классическими методами, при необходимости лучшего контроля процесса сходимости. При тщательной настройке других методов (например SimPO), можно добится похожего результата, однако мы постарались стаблизировать этот процесс и объединить лучшие практики из других методов.

## Пример кода для запуска:

**Рекомендуемая температура для генерации: 0.4**.

```python
from transformers import AutoModelForCausalLM, AutoTokenizer

# Load the model and tokenizer
model_name = "Vikhrmodels/QVikhr-2.5-1.5B-Instruct-SMPO"
model = AutoModelForCausalLM.from_pretrained(model_name)
tokenizer = AutoTokenizer.from_pretrained(model_name)

# Prepare the input text
input_text = "Напиши краткое описание книги Гарри Поттер."

messages = [
    {"role": "system", "content": "Вы — Vikhr, ИИ помощник, созданный компанией Vikhr models для предоставления полезной, честной и безопасной информации."},
    {"role": "user", "content": input_text},
]

# Tokenize and generate text
input_ids = tokenizer.apply_chat_template(messages, truncation=True, add_generation_prompt=True, return_tensors="pt")
output = model.generate(
    input_ids,
    max_length=1512,
    temperature=0.4,
)

# Decode and print result
generated_text = tokenizer.decode(output[0], skip_special_tokens=True)
print(generated_text)
```

#### Ответ модели:

>**Краткое описание книги "Гарри Поттер"**

>"Гарри Поттер" – это серия книг о мальчике-волшебнике, который обнаруживает в себе силу волшебства после того, как его семья умирает от злого колдуна Драко Малфоя. Главный герой, Гарри Поттер, живёт с родителями на окраине Хогвартса, школы магии и волшебства.
>В детстве Гарри встречает своего лучшего друга Рона Уизли и его тётку Гермиону Грейнджер. Они вместе отправляются в Хогвартс, где начинают учиться волшебству. В ходе учебы Гарри знакомится с другими учениками: Слизеринами (главные антагонисты) и Хогвартсом как место обучения магии.
>Самым важным событием в жизни Гарри становится то, что он узнаёт о своем происхождении – он является последним из семьи Поттеров, которые когда-то владели всеми знаниями о волшебстве. Это знание открывает ему путь к своей миссии – борьбе против темных сил, которые стремятся уничтожить волшебство.
>По мере развития сюжета Гарри сталкивается с различными препятствиями, включая преследование со стороны Драко Малфоя и его друзей, а также внутренние конфликты внутри самого Хогвартса. Однако благодаря поддержке своих друзей и новых знакомых, таких как Философский камень, Гарри продолжает свой путь к победе над темными силами.
>В конце концов, Гарри и его друзья успешно борются с темными силами, восстанавливают мир в Хогвартсе и получают признание за свои поступки. Книги завершаются тем, что Гарри готовится стать волшебником, но его будущее ещё не определено.

### Авторы

- Sergei Bratchikov, [NLP Wanderer](https://t.me/nlpwanderer), [Vikhr Team](https://t.me/vikhrlabs)
- Nikolay Kompanets, [LakoMoor](https://t.me/lakomoordev), [Vikhr Team](https://t.me/vikhrlabs)
- Konstantin Korolev, [Vikhr Team](https://t.me/vikhrlabs)
- Aleksandr Nikolich, [Vikhr Team](https://t.me/vikhrlabs)

```
@inproceedings{nikolich2024vikhr,
  title={Vikhr: Advancing Open-Source Bilingual Instruction-Following Large Language Models for Russian and English},
  author={Aleksandr Nikolich and Konstantin Korolev and Sergei Bratchikov and Nikolay Kompanets and Igor Kiselev and Artem Shelmanov},
  booktitle={Proceedings of the 4th Workshop on Multilingual Representation Learning (MRL) @ EMNLP-2024},
  year={2024},
  publisher={Association for Computational Linguistics},
  url={https://arxiv.org/pdf/2405.13929}
}
```