IgorVolochay/russian_jokes
Viewer • Updated • 151k • 364 • 13
ДЗ 1 по курсу LLM: byte-level BPE токенизатор (словарь 1024) и небольшая языковая модель, обученные на датасете IgorVolochay/russian_jokes.
Decoder-only трансформер: alibi, gqa (3 kv heads), SwiGLU, RMSNorm, 6 слоев, 6 голов, hidden 384, ~10.5M параметров, контекст 128.
| параметр | значение |
|---|---|
n_layer |
6 |
n_head |
6 |
n_kv_head |
3 |
hidden_dim |
384 |
intermediate_dim |
1024 |
dropout |
0.1 |
vocab_size |
1024 |
max_seq_len |
128 |
pos_encoding |
alibi |
attention_type |
gqa |
rope_theta |
10000.0 |
kv_lora_rank |
0 |
q_lora_rank |
0 |
mla_rope_dim |
0 |
Обучение: AdamW, lr 3e-4, weight decay 0.01, linear warmup 10% + linear decay, 10000 шагов, batch size 32.
| модель | val loss |
|---|---|
| mini ALiBi + GQA (основная), 10000 шагов | 2.7328 |
| mini rope, 3000 шагов | 3.0934 |
| mini mla, 3000 шагов | 3.0604 |
| mini mla-rope, 3000 шагов | 3.0737 |
RoPE и MLA версии: amrvlv/llm-course-hw1-rope, amrvlv/llm-course-hw1-mla, amrvlv/llm-course-hw1-mla-rope.
tokenizer = ByteLevelBPETokenizer.from_pretrained("amrvlv/llm-course-hw1")
model = TransformerForCausalLM.from_pretrained("amrvlv/llm-course-hw1").eval()
ids = torch.tensor(tokenizer.encode("Штирлиц пришел домой")[:-1])[None, :]
out = model.generate(ids, max_new_tokens=100, eos_token_id=tokenizer.eos_token_id, do_sample=True, top_k=10)
print(tokenizer.decode(out[0].tolist()))