Create README.md
Browse files
README.md
ADDED
|
@@ -0,0 +1,55 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
license: mit
|
| 3 |
+
datasets:
|
| 4 |
+
- NotEvilAI/ru-reasoning_effort-sft_dpo_think_gpt
|
| 5 |
+
- NotEvilAI/gpt-ru-reasoning_effort-sft
|
| 6 |
+
- NotEvilAI/gpt-oss-20b-ru-reasoning-dpo
|
| 7 |
+
language:
|
| 8 |
+
- ru
|
| 9 |
+
- en
|
| 10 |
+
base_model:
|
| 11 |
+
- openai/gpt-oss-20b
|
| 12 |
+
library_name: transformers
|
| 13 |
+
tags:
|
| 14 |
+
- reasoning
|
| 15 |
+
- russian
|
| 16 |
+
- gpt-oss
|
| 17 |
+
- thinking
|
| 18 |
+
---
|
| 19 |
+
|
| 20 |
+
[NotEvilAI/gpt-oss-20b-ru-reasoner](https://huggingface.co/NotEvilAI/gpt-oss-20b-ru-reasoner) - модель с адаптивным русскоязычным ризонингом на основе [openai/gpt-oss-20b](https://huggingface.co/openai/gpt-oss-20b).
|
| 21 |
+
|
| 22 |
+
Модель думает на том языке, на котором требуется сгенерировать ответ(протестировано на английском и русском) без явного указания языка ризонинга.
|
| 23 |
+
|
| 24 |
+
Имеется 5 режимов ризонинга(`reasoning_effort`):
|
| 25 |
+
- `low`, `medium`, `high` - стандартные значения минимального, среднего и большого ризонинга для gpt-oss-20b/gpt-oss-120b
|
| 26 |
+
- `none` - отключить ризонинг, в thinking будет пустая строка
|
| 27 |
+
- `auto` - "автоматический" размер ризонинга
|
| 28 |
+
|
| 29 |
+
## Предпосылки
|
| 30 |
+
|
| 31 |
+
gpt-oss-20b и gpt-oss-120b по-умолчанию всегда думают только на английском языке.
|
| 32 |
+
[Официальный Cookbook OpenAI](https://cookbook.openai.com/articles/gpt-oss/fine-tune-transfomers) предлагает сделать файн-тюн gpt-oss-20b на основе датасета `HuggingFaceH4/Multilingual-Thinking`(синтетический датасет из 1к примеров, полученных путём перевода prompt-reasoning-answer на 4 языка с английского).
|
| 33 |
+
Этот подход позволяет задать 'Reasoning language' в системном промте и заставить модель думтаь на требуемом языке, что в теории должно повысить качество ответов.
|
| 34 |
+
Во время файнтюна модель выявляет новые закономерности и учится думать на запрашиваемом языке.
|
| 35 |
+
|
| 36 |
+
При разработке данной модели мы поставили цель исключить явное указание языка ризонинга, а также добавить два новых режима ризонинга: автоматический(auto) и без ризонинга(none).
|
| 37 |
+
|
| 38 |
+
## Обучение
|
| 39 |
+
|
| 40 |
+
Для обучения модели был составлен датасет [NotEvilAI/ru-reasoning_effort-sft_dpo_think_gpt](https://huggingface.co/datasets/NotEvilAI/ru-reasoning_effort-sft_dpo_think_gpt).
|
| 41 |
+
|
| 42 |
+
Модель обучалась на собственном сервере с 8x H200 в 2 стадии:
|
| 43 |
+
- Full fine-tuning SFT с помощью axolotl:
|
| 44 |
+
- `num_epochs: 5` (20b версия модели сходится медленнее, чем 120b, однако переобучения замечено не было)
|
| 45 |
+
- `learning_rate: 5e-5` подобран эмпирически
|
| 46 |
+
- `optimizer: adamw_torch_fused`
|
| 47 |
+
- Упаковка семплов через `sample_packing, multipack_real_batches, pad_to_sequence_len, group_by_length`
|
| 48 |
+
- Обучение длилось ~ 5 часов
|
| 49 |
+
- DPO с помощью transformers:
|
| 50 |
+
- Семплирование по 25 семплов на промт с целью поиска ризонинга не на нужном языке
|
| 51 |
+
- `learning_rate: 5e-6`
|
| 52 |
+
- `gradient_accumulation_steps: 4`
|
| 53 |
+
- Конвертация результатирующей модели из fp32 в bf16
|
| 54 |
+
- Обучение длилось ~ 3.5 часа
|
| 55 |
+
|