--- 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). Там мы будем выкладывать новые модели и датасеты. Также там вы можете задать автору интересующие вас вопросы.