Text Generation
Transformers
Safetensors
Russian
English
gpt_oss
reasoning
russian
gpt-oss
thinking
conversational
How to use from the
Use from the
Transformers library
# Use a pipeline as a high-level helper
from transformers import pipeline

pipe = pipeline("text-generation", model="NotEvilAI/gpt-oss-20b-ru-reasoner")
messages = [
    {"role": "user", "content": "Who are you?"},
]
pipe(messages)
# Load model directly
from transformers import AutoTokenizer, AutoModelForCausalLM

tokenizer = AutoTokenizer.from_pretrained("NotEvilAI/gpt-oss-20b-ru-reasoner")
model = AutoModelForCausalLM.from_pretrained("NotEvilAI/gpt-oss-20b-ru-reasoner", device_map="auto")
messages = [
    {"role": "user", "content": "Who are you?"},
]
inputs = tokenizer.apply_chat_template(
	messages,
	add_generation_prompt=True,
	tokenize=True,
	return_dict=True,
	return_tensors="pt",
).to(model.device)

outputs = model.generate(**inputs, max_new_tokens=40)
print(tokenizer.decode(outputs[0][inputs["input_ids"].shape[-1]:]))
Quick Links

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

NotEvilAI/gpt-oss-20b-ru-reasoner - экспериментальная модель с адаптивным русскоязычным ризонингом на основе 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 предлагает сделать файн-тюн gpt-oss-20b на основе датасета HuggingFaceH4/Multilingual-Thinking(синтетический датасет из 1к примеров, полученных путём перевода prompt-reasoning-answer на 4 языка с английского). Этот подход позволяет задать 'Reasoning language' в системном промте и заставить модель думтаь на требуемом языке, что в теории должно повысить качество ответов. Во время файнтюна модель выявляет новые закономерности и учится думать на запрашиваемом языке.

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

Обучение

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

Downloads last month
187
Safetensors
Model size
21B params
Tensor type
BF16
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for NotEvilAI/gpt-oss-20b-ru-reasoner

Finetuned
(538)
this model
Quantizations
2 models

Datasets used to train NotEvilAI/gpt-oss-20b-ru-reasoner