Text Generation
Transformers
Safetensors
Russian
English
gpt_oss
reasoning
russian
gpt-oss
thinking
conversational
File size: 4,250 Bytes
56670b4
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
9e0fbfa
 
b533603
56670b4
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
b4fc772
 
 
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
---
license: mit
datasets:
- NotEvilAI/ru-reasoning_effort-sft_dpo_think_gpt
- NotEvilAI/gpt-ru-reasoning_effort-sft
- NotEvilAI/gpt-oss-20b-ru-reasoning-dpo
language:
- ru
- en
base_model:
- openai/gpt-oss-20b
library_name: transformers
tags:
- reasoning
- russian
- gpt-oss
- thinking
---

# NotEvilAI/gpt-oss-20b-ru-reasoner

[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).

Модель думает на том языке, на котором требуется сгенерировать ответ(протестировано на английском и русском) без явного указания языка ризонинга.

Имеется 5 режимов ризонинга(`reasoning_effort`):
- `low`, `medium`, `high` - стандартные значения минимального, среднего и большого ризонинга для gpt-oss-20b/gpt-oss-120b
- `none` - отключить ризонинг, в thinking будет пустая строка
- `auto` - "автоматический" размер ризонинга

## Предпосылки

gpt-oss-20b и gpt-oss-120b по-умолчанию всегда думают только на английском языке.
[Официальный Cookbook OpenAI](https://cookbook.openai.com/articles/gpt-oss/fine-tune-transfomers) предлагает сделать файн-тюн gpt-oss-20b на основе датасета `HuggingFaceH4/Multilingual-Thinking`(синтетический датасет из 1к примеров, полученных путём перевода prompt-reasoning-answer на 4 языка с английского).
Этот подход позволяет задать 'Reasoning language' в системном промте и заставить модель думтаь на требуемом языке, что в теории должно повысить качество ответов.
Во время файнтюна модель выявляет новые закономерности и учится думать на запрашиваемом языке.

При разработке данной модели мы поставили цель исключить явное указание языка ризонинга, а также добавить два новых режима ризонинга: автоматический(auto) и без ризонинга(none).

## Обучение 

Для обучения модели был составлен датасет [NotEvilAI/ru-reasoning_effort-sft_dpo_think_gpt](https://huggingface.co/datasets/NotEvilAI/ru-reasoning_effort-sft_dpo_think_gpt).

Модель обучалась на собственном сервере с 8x H200 в 2 стадии:
- Full fine-tuning SFT с помощью axolotl:
  - `num_epochs: 5` (20b версия модели сходится медленнее, чем 120b, однако переобучения замечено не было)
  - `learning_rate: 5e-5` подобран эмпирически
  - `optimizer: adamw_torch_fused`
  - Упаковка семплов через `sample_packing, multipack_real_batches, pad_to_sequence_len, group_by_length`
  - Обучение длилось ~ 5 часов
- DPO с помощью transformers:
  - Семплирование по 25 семплов на промт с целью поиска ризонинга не на нужном языке
  - `learning_rate: 5e-6`
  - `gradient_accumulation_steps: 4`
  - Конвертация результатирующей модели из fp32 в bf16
  - Обучение длилось ~ 3.5 часа

## Больше информации

Подписывайтесь на наш [Telegram-канал](https://t.me/ak_segfault). Там мы будем выкладывать новые модели и датасеты. Также там вы можете задать автору интересующие вас вопросы.