В этом проекте разработан Byte-level BPE токенизатор и небольшой самописный Transformer.
Для позиционного кодирования применяется ALiBi, а в качестве блока Feed-Forward используется SwiGLU. Модель обучалась на корпусе русских анекдотов.
'Заходит в бар лягушка в бар, открывает дверь - берет лягушка с пивом. - Девушка, у вас такие вкусные, что идут? - Нет, это я виноват.'
'Штирлиц пришел в бар. Его спрашивают:- Все, в каком смысле?- Скажешь - я съел, и даже боялся не могу, а дальше.'
'Штирлиц пришел в 5 часов. Вдруг вдруг у него спрашивают - Что-то я, дорогая.'
Модель генерирует тексты, стилистически приближенные к русскому языку, однако не особо осмысленные.
1device = torch.device("cuda")
2REPO_NAME = 'CMCenjoyer/llm-course-hw1'
3
4tokenizer = ByteLevelBPETokenizer.from_pretrained(REPO_NAME)
5check_model = TransformerForCausalLM.from_pretrained(REPO_NAME)
6check_model = check_model.to(device)
7check_model = check_model.eval()
8
9text = "Штирлиц пришел домой"
10input_ids = torch.tensor(tokenizer.encode(text)[:-1], device=device)
11model_output = check_model.generate(
12 input_ids[None, :], max_new_tokens=200, eos_token_id=tokenizer.eos_token_id, do_sample=True, top_k=10
13)
14tokenizer.decode(model_output[0].tolist())
This model has been pushed to the Hub using the
PytorchModelHubMixin integration: