nikol-ai/gpt2-with-roles-36

Русская causal LM на базе семейства GPT-2 с role embeddings и увеличенной глубиной до 36 слоёв.

⚠️ Это сырой чекпоинт экспериментальной модели. Он может вести себя нестабильно, галлюцинировать факты.

Это не обычный “fine-tune чекпойнт”. Модель использует кастомный model_type = gpt2_with_roles, поэтому для загрузки нужен trust_remote_code=True.

Что изменено по сравнению с базой

База/происхождение: ai-forever/rugpt3small_based_on_gpt2.

Далее в этой ветке проекта:

  • Добавлены role embeddings (вектор роли прибавляется к token+pos эмбеддингам).
  • Архитектура расширена по глубине до 36 слоёв.
  • Обучение велось этапами:
    1. raw-корпуса (книги/смешанные тексты/wiki)
    2. QA/инструктаж/Thinking/Факты/Математика
    3. согласование слоёв модели и проекций (c_proj).

Архитектура

  • Семейство: GPT-2-совместимое
  • Слои: 36
  • Hidden size: 768
  • Heads: 12
  • Кол-во ролей: 6 (настраивается через num_roles)

Обучение

  • Вычисления: ~70 ч (RTX 3090 Ti) + ~180 ч (GTX 1070 Ti)
  • Объём: ~2 млрд токенов суммарно по всем этапам Из них ~300млн QA/инструктаж/Thinking/Факты/Математика

Важно (Примечания)

  • Модель умеет правдоподобно думать, но часто ошибается на фактах
  • Модель может генерировать нецензурный и NSFW контент.
  • Не рекомендуется использовать для продакшена
  • Требуется продолжение согласования слоёв модели и накачка фактами.

Инструменты (tool calls)

В архитектуре предусмотрен режим “выходов инструментов” (через ролевые спец токены), но модель этому специально не дообучена.
На практике она может:

  • не вызывать инструменты, делать это случайно или путать формат.

Как использовать

Быстрый старт

from transformers import AutoTokenizer, AutoModelForCausalLM

repo_id = "march228/gpt2-with-roles-36"

tok = AutoTokenizer.from_pretrained(repo_id, trust_remote_code=True, use_fast=False)
model = AutoModelForCausalLM.from_pretrained(repo_id, trust_remote_code=True)

Передача role_ids (если ваш пайплайн поддерживает роли)

Модель принимает дополнительный аргумент role_ids (тензор ролей). Если role_ids не передавать, поведение будет близко к обычному GPT-2.

import torch

text = "USR> Привет!\nFINAL>\n"
inputs = tok(text, return_tensors="pt")

# role_ids: shape [bs, seq] (или совместимый формат, который вы используете)
# значения: 0..num_roles-1
role_ids = torch.zeros_like(inputs["input_ids"])

out = model.generate(
    **inputs,
    role_ids=role_ids,
    max_new_tokens=64,
    do_sample=True,
    temperature=0.7,
)

print(tok.decode(out[0], skip_special_tokens=False))

Предварительные итоги эксперимента

В рамках эксперимента увеличение глубины (36 слоёв) и последующее согласование слоёв дало заметный практический эффект:

  • Модель в среднем лучше держит системные ограничения и роль. На задачах, где требуется связать несколько условий из <SYS> и <CTX>, глубокая версия чаще даёт более устойчивое поведение, чем исходная 12-слойная база.

При этом это не делает модель “источником истины”: галлюцинации фактов остаются возможными, а качество сильно зависит от состава QA/инструктивного датасета и последнего этапа обучения.

Формат данных (пример)

Модель обучалась на примерах со строгой разметкой ролей и блоков:

<s_text>
<SYS>
Ты Алиса. Ты девушка, тебе 18 лет. Ты ничего не знаешь о программировании
</SYS>
<CTX>
Василий - Привет.
Я - Привет, Василий.
</CTX>
<USR>
Василий - что такое python?
</USR>
<thinking>
Меня спросили что такое python. Я помню, что Python — это язык программирования, но в системном блоке сказано, что я ничего не знаю о программировании.
Значит, нужно ответить просто и “по роли”. Вспоминаю, что в переводе на русский python — это змея.
</thinking>
<FINAL>
Python? Это же змея
</FINAL>
</s_text>

Лицензия и атрибуция

Модель инициализирована/вдохновлена базой ai-forever/rugpt3small_based_on_gpt2. Проверьте совместимость лицензий исходной модели и датасетов перед любым использованием.

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

Model tree for march228/gpt2-with-roles-36

Finetuned
(22)
this model