CoolFace
Modelpublic

zhanslu/llm-course-hw1

sourceHugging Facemitupdated 4mo agoView on Hugging Face
0likes29downloads
Model Card

Russian Jokes LLM

Языковые модели, обученные на датасете русских анекдотов в рамках домашней работы по курсу Deep Learning.

Описание задания

В рамках задания было реализовано с нуля:

  • —Byte-level BPE токенизатор — обучение словаря заданного размера и набора слияний, кодирование и декодирование текста
  • —Transformer для языкового моделирования со следующими компонентами:
  • —RMSNorm — предварительная нормализация
  • —GQA (Grouped Query Attention) — механизм внимания с группировкой запросов
  • —SwiGLU — активация в Feed-Forward блоке
  • —ALiBi — позиционные эмбеддинги
  • —RoPE — Rotary Positional Embedding
  • —MLA (Multi-Head Latent Attention)

Датасет

IgorVolochay/russian_jokes

Обученные модели

МодельРепозиторийPositional EncodingAttention
Базоваяllm-course-hw1ALiBiGQA
RoPEllm-course-hw1-ropeRoPEGQA
MLAllm-course-hw1-mlaRoPEMLA

Архитектура

ПараметрЗначение
Слоёв3
Голов внимания4
KV голов2
Hidden dim96
Intermediate dim256
Vocab size1024
Max seq len128
Параметров~0.5M

Токенизатор

Byte-level BPE токенизатор с размером словаря 1024 токенов, обученный на тренировочной части датасета. Специальный токен: [EOS] — конец последовательности.

Качество

МодельTrain LossVal Loss
ALiBi3.4963.490
RoPE3.4613.473
MLA3.5123.522

Примеры генерации

Prompt: Заходит в бар

ALiBi: Заходит в баре. Пока:- Ну что ты не могу внутьсячу?- Я не могу идешь!- Ну, сегодня я не могу сразу.
RoPE: Заходит в бар в кухни:- Папа, а вчера не знает, кто у тебя снова.
MLA: Заходит в барпарату. Слышал с пациенту:- Я тебе не папа, что я тебе, и с ним и говорит: - Мама, доктор, я не придется! - Ну и что, что это? - Да нет, ты мне, что у меня ведь я не понимаешь, что это я, что он у меня не знаю, что у тебя на кого?

Использование

python
import torch
from huggingface_hub import snapshot_download

tokenizer = ByteLevelBPETokenizer.from_pretrained("zhanslu/llm-course-hw1")
model = TransformerForCausalLM.from_pretrained("zhanslu/llm-course-hw1")
model.eval()

text = "Заходит в бар"
input_ids = torch.tensor(tokenizer.encode(text)[:-1])[None, :]
output = model.generate(
    input_ids,
    max_new_tokens=100,
    eos_token_id=tokenizer.eos_token_id,
    do_sample=True,
    top_k=10
)
print(tokenizer.decode(output[0].tolist()))