inkoziev commited on
Commit
8544327
1 Parent(s): fb6ce89

Update README.md

Browse files
Files changed (1) hide show
  1. README.md +62 -1
README.md CHANGED
@@ -3,4 +3,65 @@ license: openrail
3
  language:
4
  - ru
5
  library_name: transformers
6
- ---
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3
  language:
4
  - ru
5
  library_name: transformers
6
+ tags:
7
+ - pytorch
8
+ - causal-lm
9
+ ---
10
+
11
+ ## CharGPT-96M
12
+
13
+ Крошечная языковая модель с посимвольной токенизацией для всевозможных экспериментов, когда решаемая задача решается плохо из-за BPE токенизации на слова и их части.
14
+
15
+ К примеру, если вы хотите делать детектор орфографии, или фонетическую транскрипцию и т.д., модель с посимвольной токенизацией может оказаться предпочтительнее.
16
+
17
+ Размер модели - 96 милионов параметров.
18
+
19
+ ### Особенности предварительной тренировки
20
+
21
+ Я делал эту модель для экспериментов с русской поэзией. Поэтому корпус претрейна содержал значительное количество текстов
22
+ поэтического формата. Это может повлиять на ваши downstream задачи.
23
+
24
+ Объем корпуса претрейна - около 30B токенов.
25
+
26
+ ### Использование
27
+
28
+ С библиотекой transformerts модель можно использовать штатным способом как обычную GPT:
29
+
30
+ ```
31
+ import os
32
+ import torch
33
+ import transformers
34
+
35
+ device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
36
+
37
+ model_name_or_path = 'inkoziev/chargpt-96M'
38
+ model = transformers.GPT2LMHeadModel.from_pretrained(model_name_or_path)
39
+ model.to(device)
40
+ model.eval()
41
+
42
+ tokenizer = transformers.GPT2Tokenizer.from_pretrained(model_name_or_path)
43
+ tokenizer.add_special_tokens({'bos_token': '<s>', 'eos_token': '</s>', 'pad_token': '<pad>'})
44
+
45
+ prompt = '<s>У Лукоморья дуб зеленый\n'
46
+ encoded_prompt = tokenizer.encode(prompt, return_tensors='pt')
47
+
48
+ output_sequences = model.generate(
49
+ input_ids=encoded_prompt.to(device),
50
+ max_length=400,
51
+ temperature=1.0,
52
+ top_k=0,
53
+ top_p=0.8,
54
+ repetition_penalty=1.0,
55
+ do_sample=True,
56
+ num_return_sequences=5,
57
+ pad_token_id=0,
58
+ )
59
+
60
+ for o in output_sequences:
61
+ text = tokenizer.decode(o)
62
+ if text.startswith('<s>'):
63
+ text = text.replace('<s>', '')
64
+ text = text[:text.index('</s>')].strip()
65
+ print(text)
66
+ print('-'*80)
67
+ ```