/ Модель

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

Контекст
512 токенов
Лицензия
MIT
Опубликована
9 авг 2026

mcq-scratch-lstm-transformer

Ответы на вопросыТекст → текст3 профессии

Модель с архитектурой BiLSTM и Transformer выбирает и ранжирует варианты ответа в заданиях с множественным выбором.

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

Бенчмарки

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

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

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

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

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

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

MCQ Scratch Solver — это модель для выбора правильного варианта ответа в заданиях с несколькими вариантами, созданная Pranay Aggarwal в рамках учебного проекта для соревнования Smart MCQ Solver на Kaggle. Модель построена с нуля и не использует предварительно обученную языковую основу: она независимо оценивает пары «вопрос и вариант ответа», а затем ранжирует варианты и формирует прогноз из трёх лучших.

Архитектура включает обучаемые эмбеддинги, двунаправленную LSTM, нормализацию слоёв, двухслойный Transformer Encoder с четырьмя головами внимания, пулинг по среднему и максимуму и линейный классификатор. Для кодирования входов используется токенизатор BERT WordPiece. В README указана оценка MAP@3 1,0 на валидации; это результат конкретного учебного эксперимента и не гарантирует качество на других данных. Модель опубликована в формате PyTorch state dict, лицензия — MIT.

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

  • выбор правильного ответа в тестах с несколькими вариантами
  • ранжирование вариантов ответа по вопросу
  • решение учебных заданий формата multiple choice

Ограничения

Модель обучена для конкретного соревнования и учебного проекта; указанная валидационная оценка не подтверждает обобщение на другие наборы вопросов. Использует собственные обученные эмбеддинги и не имеет предварительно обученной языковой основы.

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

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

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

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

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

Открыть на Hugging Face

MCQ Scratch Solver — BiLSTM + Transformer

A custom multiple-choice QA model built from scratch (no pretrained backbone) for the Smart MCQ Solver Challenge on Kaggle.

Architecture

Embedding → BiLSTM (bidirectional) → LayerNorm → Transformer Encoder (self-attention) → Mean+Max Pooling → Linear classifier

Each (prompt, option) pair is scored independently; the 5 option scores per question form the final logits, ranked to produce a top-3 prediction (MAP@3 metric).

Files

This repo stores weights as a plain PyTorch state dict (pytorch_model.bin) rather than safetensors, due to shared-storage tensors in the LSTM layer that are incompatible with safetensors' serialization checks. Config (architecture hyperparameters) is stored separately in config.json.

Training

  • Tokenizer: bert-base-uncased (WordPiece, used for input encoding only)
  • Embedding dim: 128, LSTM hidden: 128, Attention heads: 4, Transformer layers: 2
  • Optimizer: AdamW, lr=1e-3, weight decay 0.01
  • Loss: CrossEntropyLoss with label smoothing (0.1)
  • Epochs: 5, batch size: 16
  • Validation MAP@3: 1.0

Usage

import torch, json
from huggingface_hub import hf_hub_download
from transformers import AutoTokenizer
import torch.nn as nn

class HybridQAModel(nn.Module):
    def __init__(self, vocab_size, embed_dim, lstm_hidden, num_heads, num_layers):
        super().__init__()
        self.embedding = nn.Embedding(vocab_size, embed_dim, padding_idx=0)
        self.lstm = nn.LSTM(embed_dim, lstm_hidden, batch_first=True, bidirectional=True)
        self.layer_norm = nn.LayerNorm(lstm_hidden * 2)
        encoder_layer = nn.TransformerEncoderLayer(d_model=lstm_hidden * 2, nhead=num_heads, batch_first=True)
        self.transformer = nn.TransformerEncoder(encoder_layer, num_layers=num_layers)
        self.classifier = nn.Linear(lstm_hidden * 4, 1)

    def forward(self, input_ids):
        b, n, s = input_ids.shape
        flat = input_ids.view(b * n, s)
        mask = flat == 0
        emb = self.embedding(flat)
        out, _ = self.lstm(emb)
        out = self.layer_norm(out)
        enc = self.transformer(out, src_key_padding_mask=mask)
        pooled = torch.cat([enc.mean(1), enc.max(1)[0]], dim=1)
        return self.classifier(pooled).view(b, n)

repo_id = "pranay-aggarwal/mcq-scratch-lstm-transformer"
config_path = hf_hub_download(repo_id=repo_id, filename="config.json")
weights_path = hf_hub_download(repo_id=repo_id, filename="pytorch_model.bin")

with open(config_path) as f:
    config = json.load(f)

model = HybridQAModel(**config)
model.load_state_dict(torch.load(weights_path, map_location="cpu"))
model.eval()

tokenizer = AutoTokenizer.from_pretrained(repo_id)

Live demo

mcq-scratch-solver Space

Author

Built as part of BSDA2001P: Introduction to DL and GenAI (project coursework).

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

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

GPU в ailist

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

Нельзя запустить

Архитектура ? неизвестна transformers в образе рантайма.

Ревизия весов
64c7e05

0 моделей