LLM Course HW1 — Byte-level BPE + Tiny Russian Jokes LM
Это домашнее задание: обучение Byte-level BPE токенизатора и небольшой Causal Transformer на датасете русских анекдотов.
Что внутри
- Токенизатор: Byte-level BPE, обучен с нуля на
IgorVolochay/russian_jokes - Модель: Causal Transformer с:
- ALiBi позиционными смещениями (по умолчанию) или RoPE (опционально)
- GQA (Grouped-Query Attention)
- SwiGLU в FFN
- (опционально) Multi-Head Latent Attention (MLA) для экономии KV-кэша
- Конфиги размеров:
nano/mini/small - Код генерации и обучения на PyTorch
Примечание: Модель и токенизатор — кастомные классы, не
transformers. Для использования см. примеры ниже.
Файлы в репозитории
model.safetensors— веса моделиconfig.json— конфиг моделиvocabulary.json,merges.json— файлы Byte-level BPEREADME.md— эта карточка
Архитектура
- Embedding: token embedding (без learnable pos embed; позиции кодируются ALiBi или RoPE)
- Attention: Multi-head, GQA (число KV-голов меньше числа Q-голов)
- Positional encoding:
- ALiBi (additive linear bias) — не требует табличек, хорошо масштабируется
- RoPE (опционально): комплексные вращения Q/K; требует чётного
head_dim
- FFN: SwiGLU =
silu(W₁a x) ⊙ (W₁b x)→W₂ - Norm: RMSNorm (pre-norm)
- (Опция) MLA: свёртка K/V в общий латент и on-the-fly дешифрация (снижение памяти под KV-кэш)
Тренировочные детали
- Датасет:
IgorVolochay/russian_jokes(train/test split 90/10, фиксированный seed) - Оптимизатор: AdamW (
lr=3e-4,weight_decay=0.1) - Шедулер: Linear warmup (10% шагов) → linear decay
- Batching: паддинг до максимальной длины в батче +
attention_mask - Критерий: next-token cross-entropy с маскированием паддингов
- Макс. контекст:
max_seq_len=128
Графики
- Downloads last month
- 54
Dataset used to train Amir337/llm-course-hw1
Evaluation results
- Validation cross-entropy on Russian Jokestest set self-reported2.624
