加载中…
加载中…
Языковые модели, обученные на датасете русских анекдотов в рамках домашней работы по курсу Deep Learning.
В рамках задания было реализовано с нуля:
| Модель | Репозиторий | Positional Encoding | Attention |
|---|---|---|---|
| Базовая | llm-course-hw1 | ALiBi | GQA |
| RoPE | llm-course-hw1-rope | RoPE | GQA |
| MLA | llm-course-hw1-mla | RoPE | MLA |
| Параметр | Значение |
|---|---|
| Слоёв | 3 |
| Голов внимания | 4 |
| KV голов | 2 |
| Hidden dim | 96 |
| Intermediate dim | 256 |
| Vocab size | 1024 |
| Max seq len | 128 |
| Параметров | ~0.5M |
Byte-level BPE токенизатор с размером словаря 1024 токенов, обученный на тренировочной части датасета.
Специальный токен: [EOS] — конец последовательности.
| Модель | Train Loss | Val Loss |
|---|---|---|
| ALiBi | 3.496 | 3.490 |
| RoPE | 3.461 | 3.473 |
| MLA | 3.512 | 3.522 |
Prompt: Заходит в бар
ALiBi: Заходит в баре. Пока:- Ну что ты не могу внутьсячу?- Я не могу идешь!- Ну, сегодня я не могу сразу.
RoPE: Заходит в бар в кухни:- Папа, а вчера не знает, кто у тебя снова.
MLA: Заходит в барпарату. Слышал с пациенту:- Я тебе не папа, что я тебе, и с ним и говорит: - Мама, доктор, я не придется! - Ну и что, что это? - Да нет, ты мне, что у меня ведь я не понимаешь, что это я, что он у меня не знаю, что у тебя на кого?
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()))