inkoziev commited on
Commit
364a3fa
1 Parent(s): 38fd129

Update README.md

Browse files
Files changed (1) hide show
  1. README.md +83 -0
README.md CHANGED
@@ -1,3 +1,86 @@
1
  ---
2
  license: openrail
 
 
 
 
 
 
3
  ---
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  ---
2
  license: openrail
3
+ language:
4
+ - ru
5
+ library_name: transformers
6
+ tags:
7
+ - pytorch
8
+ - causal-lm
9
  ---
10
+
11
+ ## CharLLaMa-35M
12
+
13
+ Это крошечная языковая модель, имеющая архитектуру LLaMa, с **посимвольной** токенизацией для всевозможных экспериментов, когда задача решается плохо из-за BPE токенизации на слова и их части:
14
+
15
+ 1) генеративные спеллчекеры
16
+ 2) классификация текста: замена ```TfidfVectorizer(analyzer='char')```, т.е. когда хорошо сработал бейзлайн на символьных n-граммах
17
+ 3) транскрипция текста
18
+ 4) детекция орфографических ошибок, опечаток
19
+
20
+ Размер модели - **35 913 600** параметров.
21
+
22
+ ### Особенности предварительной тренировки
23
+
24
+ Я делал эту модель для экспериментов с русской поэзией в рамках проекта ["Литературная студия"](https://github.com/Koziev/verslibre).
25
+ Поэтому корпус претрейна содержал значительное количество текстов поэтического формата.
26
+ Это может повлиять на ваши downstream задачи.
27
+
28
+ Объем корпуса претрейна - около **80B** токенов, тексты только на русском языке.
29
+
30
+ Кривая loss_val: ![pretrain_loss_val](pretrain_loss_val.png)
31
+
32
+
33
+ ### Токенизатор
34
+
35
+ Для использования модели нужно установить специальный токенизатор:
36
+
37
+ ```
38
+ pip install git+https://github.com/Koziev/character-tokenizer
39
+ ```
40
+
41
+ Кроме символов кириллицы и пунктуации, этот токенизатор знает про специальные токены ```<s>```, ```</s>```, ```<pad>``` и ```<unk>```.
42
+
43
+ ### Использование
44
+
45
+ С библиотекой transformerts модель можно использовать штатным способом как обычную GPT'шку:
46
+
47
+ ```
48
+ import os
49
+ import torch
50
+ import transformers
51
+ import charactertokenizer
52
+
53
+ device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
54
+
55
+ model_name_or_path = 'inkoziev/charllama-35M'
56
+ model = transformers.AutoModelForCausalLM.from_pretrained(model_name_or_path)
57
+ model.to(device)
58
+ model.eval()
59
+
60
+ tokenizer = charactertokenizer.CharacterTokenizer.from_pretrained(model_path)
61
+
62
+ prompt = 'Меня зовут Ар'
63
+ encoded_prompt = tokenizer.encode(prompt, return_tensors='pt')
64
+
65
+ output_sequences = model.generate(
66
+ input_ids=encoded_prompt.to(device),
67
+ max_length=500,
68
+ temperature=1.0,
69
+ top_k=0,
70
+ top_p=0.8,
71
+ repetition_penalty=1.0,
72
+ do_sample=True,
73
+ num_return_sequences=5,
74
+ pad_token_id=0,
75
+ )
76
+
77
+ for o in output_sequences:
78
+ text = tokenizer.decode(o)
79
+ if text.startswith('<s>'):
80
+ text = text.replace('<s>', '')
81
+ text = text[:text.index('</s>')].strip()
82
+ print(text)
83
+ print('-'*80)
84
+ ```
85
+
86
+ Также, будут работать все прочие инструменты для GPT моделей, например transformers.GPT2ForSequenceClassification.