/ Модель

Характеристики

Контекст
1 536 токенов
Лицензия
MIT
Архитектура
gpt2 · dense
Опубликована
29 авг 2026

Bormokrut

Генерация текстаТекст → текст4 профессии

Русскоязычная GPT-2-модель для извлечения сущностей, аспектов и вопросов из текста и маршрутизации вопросов по экспертным областям.

192скачиваний за 30 дней0лайковвеса обновлены29 авг 2026

Бенчмарки

Как модель справилась с задачами пользователей ailist и что о ней публикуют открытые лидерборды

Тесты пользователейпока нет

Никто ещё не опубликовал тест этой модели. Соберите бенчмарк из своих задач — результат появится здесь.

  1. Добавьте модель в бенчмарк

    Вместе с другими моделями категории «Текст» — сравнение идёт внутри одной категории.

  2. Опишите свои задачи

    Напишите запросы, при необходимости приложите файлы и эталонные ответы.

  3. Запустите и опубликуйте

    Модели ответят на каждую задачу, судья оценит ответы. Опубликованный результат появится на этой странице.

Публичные оценки

Из открытых лидербордов. Сравнивайте результаты одного теста при одинаковых условиях — отсутствие оценки не значит, что модель хуже.

В подключённых источниках результатов для этой модели пока нет.

Что умеет модель

Описание составлено по карточке модели и метаданным Hugging Face

Bormokrut — русскоязычная модель генерации текста на архитектуре GPT-2, созданная дообучением Bormotuha методом SFT с использованием TRL. Она предназначена для извлечения из текста сущностей, аспектов и ключевого вопроса, а также для маршрутизации вопроса к экспертной области, например медицинской или гуманитарной.

Модель содержит 42 слоя, размер скрытого представления 256 и 8 голов внимания; контекст — до 1536 токенов. В карточке приведены примеры извлечения сведений из текста и выбора области для вопроса. Указанные сценарии — узкоспециализированная обработка текста на русском языке.

Модель распространяется по лицензии MIT. Короткий контекст ограничивает работу с длинными документами; карточка не приводит оценок качества или подробных сведений о проверке на разных типах входных данных.

Сценарии применения

  • извлечение сущностей и аспектов из текста
  • формулирование ключевого вопроса по контексту
  • определение экспертной области для входящего вопроса
  • маршрутизация медицинских и гуманитарных вопросов

Ограничения

Контекст ограничен 1536 токенами. Карточка не содержит количественных оценок качества, поэтому точность маршрутизации и извлечения по различным темам не установлена.

Для каких профессий подходит4

Разделы каталога профессий, в задачах которых используется эта модель

Все профессии

Карточка модели

README от автора на Hugging Face, как он его опубликовал

Открыть на Hugging Face

🧠 Bormokrut

Bormokrut — это лёгкая, но глубокая языковая модель на базе GPT-2, дообученная (SFT) с использованием trl для выполнения двух специфических задач:

  1. Извлечение (extract) — сущности, аспектов и ключевого вопроса из текста
  2. Маршрутизация (route) — выбор экспертной области по входному вопросу

Модель создана на основе Bormotuha и ориентирована на использование в узких, но содержательных сценариях обработки текста.


Как использовать (How to use)

Модель обучена на следующих шаблонах:

  1. extract Вопрос:...[Контекст: ...] Entity:... Aspects:... Question:...
  2. route experts:... Вопрос:...[Контекст: ...] Entity:... Aspects:... Route:...

Набор экспертов фиксирован и должен быть перечислен в специальном блоке:

prompt="...<subject>experts: биограф; учёный; инженер; кибернетик; математик; гуманитарий; медик; экономист; искусствовед; жизнекачер; смежник</subject><newline>..."

Тестовый скрипт

import torch
from transformers import AutoModelForCausalLM, AutoTokenizer, TextIteratorStreamer, StoppingCriteria, StoppingCriteriaList
from threading import Thread

# Загрузка модели и токенизатора
checkpoint_path = "Vladniag/Bormokrut"

model = AutoModelForCausalLM.from_pretrained(
    checkpoint_path,
    device_map="cuda",
    torch_dtype=torch.float16
)
tokenizer = AutoTokenizer.from_pretrained(checkpoint_path, use_fast=True)

if tokenizer.pad_token is None:
    tokenizer.pad_token = tokenizer.eos_token

# Настройка стоп-слов
class StopOnTokens(StoppingCriteria):
    def __init__(self, stop_token_ids_list):
        self.stop_token_ids_list = stop_token_ids_list

    def __call__(self, input_ids: torch.LongTensor, scores: torch.FloatTensor, **kwargs) -> bool:
        for stop_ids in self.stop_token_ids_list:
            if len(input_ids[0]) >= len(stop_ids):
                if input_ids[0][-len(stop_ids):].tolist() == stop_ids:
                    return True
        return False

stop_words = ["</result>"]
stop_ids_list = [tokenizer.encode(word, add_special_tokens=False) for word in stop_words]
stopping_criteria = StoppingCriteriaList([StopOnTokens(stop_ids_list)])

# Функция генерации
def generate_response(prompt):
    processed_input = "▁" + prompt.lstrip().replace(" ", "▁").replace("\n", "<newline>")
    inputs = tokenizer(
        processed_input,
        return_tensors="pt",
        add_special_tokens=False,
    ).to(model.device)
    
    streamer = TextIteratorStreamer(tokenizer, skip_prompt=True, skip_special_tokens=False)
    generation_kwargs = dict(
        inputs,
        streamer=streamer,
        max_new_tokens=256,
        do_sample=True,
        temperature=0.3,
        top_p=0.5,
        repetition_penalty=1.3,
        pad_token_id=tokenizer.pad_token_id,
        eos_token_id=tokenizer.eos_token_id,
        stopping_criteria=stopping_criteria
    )
    
    thread = Thread(target=model.generate, kwargs=generation_kwargs)
    thread.start()
    
    full_response = ""
    for new_text in streamer:
        decoded_chunk = new_text.replace("▁", " ").replace("<newline>", "\n").replace("\\n", "\n")
        if "</result>" in decoded_chunk:
            print(decoded_chunk.split("</result>")[0], end="", flush=True)
            break
        print(decoded_chunk, end="", flush=True)
    print()

# Пример использования
prompt = """<instruction>extract</instruction>
<fragment>
Не одному Перуну предназначались почести, но всем «кумирам» без исключения. «И жряху им, наричюще я богы, и привожаху сыны своя и дъщери, и жряху бесом, и оскверняху землю требами своими». Приведенный летописный отрывок чрезвычайно интересен для понимания внутреннего развития восточнославянского язычества на стадии политеизма. Божества других племен и народов не отрицаются, не подчиняются, не становятся второстепенными по отношению к Перуну, а, наоборот, признаются существующими и самостоятельными. Главный бог – только сильнее и могущественнее остальных, он их счастливый соперник, победитель при столкновениях.
</fragment>
<result>"""

generate_response(prompt)

Примеры работы

Задача: извлечение (extract)

Входной текст:

  • Не одному Перуну предназначались почести, но всем «кумирам» без исключения. «И жряху им, наричюще я богы, и привожаху сыны своя и дъщери, и жряху бесом, и оскверняху землю требами своими». Приведенный летописный отрывок чрезвычайно интересен для понимания внутреннего развития восточнославянского язычества на стадии политеизма. Божества других племен и народов не отрицаются, не подчиняются, не становятся второстепенными по отношению к Перуну, а, наоборот, признаются существующими и самостоятельными. Главный бог – только сильнее и могущественнее остальных, он их счастливый соперник, победитель при столкновениях.

Результат:

  • Entity: Перун

  • Aspects: боги; роль в мифологии; связь с другими божествами; социальная структура

  • Question: Какова роль и значение богов в древнерусском язычестве, согласно летописи?

Задача: маршрутизация (route)

Входной вопрос:

  • Какие нарушения функций печени связаны со злоупотреблением алкоголем?

Результат:

  • Route: медик

Входной вопрос:

  • Каково значение Духа в контексте Троицы и Его роли в мире?

Результат:

  • Route: гуманитарий

📊 Данные обучения

ПараметрЗначение
Объём выборки351 815 примеров
Режим обученияSFT (Supervised Fine-Tuning)
ИнструментTRL (Transformer Reinforcement Learning)
Базовая модельBormotuha

⚙️ Конфигурация модели

{
  "activation_function": "gelu_new",
  "architectures": ["GPT2LMHeadModel"],
  "attn_pdrop": 0.1,
  "bos_token_id": null,
  "dtype": "float32",
  "embd_pdrop": 0.1,
  "eos_token_id": 3,
  "initializer_range": 0.02,
  "layer_norm_epsilon": 1e-05,
  "model_type": "gpt2",
  "n_ctx": 1536,
  "n_embd": 256,
  "n_head": 8,
  "n_inner": 1024,
  "n_layer": 42,
  "n_positions": 1536,
  "pad_token_id": 0,
  "reorder_and_upcast_attn": false,
  "resid_pdrop": 0.1,
  "scale_attn_by_inverse_layer_idx": false,
  "scale_attn_weights": true,
  "summary_activation": null,
  "summary_first_dropout": 0.1,
  "summary_proj_to_labels": true,
  "summary_type": "cls_index",
  "summary_use_proj": true,
  "transformers_version": "4.56.1",
  "use_cache": true,
  "vocab_size": 6002
}

Как запустить

На своей GPU в ailist. Цена — по текущим предложениям провайдеров

GPU в ailist

Универсальный рантайм

Можно запустить

Подбираем GPU…

Класс архитектуры
GPT2LMHeadModel
Ревизия весов
1882c97

0 моделей