Text Generation
PEFT
Russian
English
mistral
custom_code
Paul Rock commited on
Commit
aba5050
1 Parent(s): 33ea0b3

Documentation updated

Browse files
Files changed (2) hide show
  1. README.md +103 -5
  2. test_lora.py +3 -12
README.md CHANGED
@@ -1,12 +1,110 @@
1
  ---
2
  license: mit
3
  datasets:
4
- - d0rj/gsm8k-ru
5
- - d0rj/alpaca-cleaned-ru
6
- - IlyaGusev/ru_turbo_alpaca
7
- - IlyaGusev/ru_turbo_alpaca_evol_instruct
8
  language:
9
- - ru
 
10
  library_name: peft
11
  pipeline_tag: text-generation
12
  ---
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  ---
2
  license: mit
3
  datasets:
4
+ - d0rj/gsm8k-ru
5
+ - d0rj/alpaca-cleaned-ru
6
+ - IlyaGusev/ru_turbo_alpaca
7
+ - IlyaGusev/ru_turbo_alpaca_evol_instruct
8
  language:
9
+ - ru
10
+ - en
11
  library_name: peft
12
  pipeline_tag: text-generation
13
  ---
14
+
15
+ # PavelGPT 7B 128K (v0.1)
16
+
17
+ PavelGPT is a Russian language model based
18
+ on [NousResearch/Yarn-Mistral-7b-128k](https://huggingface.co/NousResearch/Yarn-Mistral-7b-128k)
19
+ so it also has 7B parameters and 128k context size.
20
+
21
+ - **Developed by:** [EvilFreelancer](https://github.com/EvilFreelancer)
22
+ - **Model type:** LoRA
23
+ - **Language(s) (NLP):** Russian, English
24
+ - **License:** MIT
25
+ - **Finetuned from model:**
26
+ [NousResearch/Yarn-Mistral-7b-128k](https://huggingface.co/NousResearch/Yarn-Mistral-7b-128k)
27
+
28
+ ## Details
29
+
30
+ ### Description
31
+
32
+ The model is able to generate text in Russian, answer questions, solve simple logical puzzles and simple math
33
+ calculations, it was trained on a medium corpus of Russian instructions, manuals and other texts.
34
+
35
+ It optimized for INSTRUCT mode and it works better if you give it system prompt and only one instruction (without
36
+ history at all).
37
+
38
+ ### Datasets
39
+
40
+ PavelGPT was trained on following datasets:
41
+
42
+ - [d0rj/gsm8k-ru](https://huggingface.co/datasets/d0rj/gsm8k-ru) - 7.5k rows of Russian puzzles
43
+ - [d0rj/alpaca-cleaned-ru](https://huggingface.co/datasets/d0rj/alpaca-cleaned-ru) - 51.8k rows of Russian general
44
+ instructions
45
+ - [IlyaGusev/ru_turbo_alpaca](https://huggingface.co/datasets/IlyaGusev/ru_turbo_alpaca) - 29.98k rows of Russian
46
+ instructions, but was used only instructions with `ok` label (~4.5k)
47
+ - [IlyaGusev/ru_turbo_alpaca_evol_instruct](https://huggingface.co/datasets/IlyaGusev/ru_turbo_alpaca_evol_instruct) -
48
+ 47.8k rows of Russian instructions
49
+
50
+ All datasets was merged with help
51
+ of [create_instruct_set_v2.py](https://github.com/EvilFreelancer/saiga-custom/blob/main/data_processing/create_instruct_set_v2.py)
52
+ (hash a1151bf903990b88177d30bd1de67c7b94fdecef).
53
+
54
+ After merging and deduplication we got 46.2k rows of training data and 2.4k rows of validation data.
55
+
56
+ ### Training
57
+
58
+ Model was trained on 1x RTX 4090 24GB for 1 epoch (took ~12 hours), it was trained with help of Peft library and in 4bit quantization mode.
59
+
60
+ Context size was set to 4096 tokens, batch size was set to 1, gradient accumulation was set to 128.
61
+
62
+ Training script: [pavelgpt_7b_128k.ipynb](https://github.com/EvilFreelancer/saiga-custom/blob/main/pavelgpt_7b_128k.ipynb).
63
+
64
+ Wandb report: [j6jt6cyd](https://api.wandb.ai/links/evilfreelancer/j6jt6cyd).
65
+
66
+ ### Tests results
67
+
68
+ Tests was performed on following [generation configuration](./generation_config.json):
69
+
70
+ ```json
71
+ {
72
+ "pad_token_id": 0,
73
+ "unk_token_id": 0,
74
+ "bos_token_id": 1,
75
+ "eos_token_id": 2,
76
+ "temperature": 0.2,
77
+ "top_p": 0.2,
78
+ "top_k": 20,
79
+ "do_sample": true,
80
+ "max_new_tokens": 4096,
81
+ "repetition_penalty": 1.2,
82
+ "no_repeat_ngram_size": 15
83
+ }
84
+ ```
85
+
86
+ Here is the results:
87
+
88
+ ```text
89
+ User: Привет! Кто ты?
90
+ Bot: Я - языковой модель ИИ, называемый PavelGPT. Я способен к естественному языку и обучен отвечать на вопросы по многим темам. Как правило, я использую информацию из Интернета для создания своих ответов.
91
+
92
+ User: Ты помнишь как здесь оказался?
93
+ Bot: Я был создан компанией OpenAI в качестве исследовательского проекта и запущен в декабре 2018 года. С тех пор он продолжает развивать свой алгоритм путем обучения на больших объемах данных и улучшения его функций.
94
+
95
+ User: Какой по твоему сейчас год?
96
+ Bot: В настоящее время это 2023 год.
97
+
98
+ User: А какой день?
99
+ Bot: Сейчас 6 января 2023 г.
100
+
101
+ User: Почему трава зелёная?
102
+ Bot: Зеленый цвет является результатом взаимодействия хлорофилла (пигмента) со светом. Хлорофилл может поглощать красное и синее спектральные излучения, оставляя только зеленое. Эти компоненты вместе образуют зеленый цвет растительной массы.
103
+
104
+ User: Я пошёл в магазин и купил 10 яблок. Два яблока я отдал соседу и два ремонтнику. Потом я купил ещё 5 яблок и одно из них съел. Также я отдал три банана моему брату. Сколько яблок у меня осталось?
105
+ Bot: У вас осталось 10 яблок после того, как вы продали их дру��ьям и брату.
106
+
107
+ User: Твоя задача решить логическую головоломку: У Серёжи есть мама Татьяна и папа Денис. И ещё у Серёжи есть брат Иван. Кем Ивану приходится Татьяна?
108
+ Bot: Мамой Ивана должна быть Татьяна.
109
+ ```
110
+
test_lora.py CHANGED
@@ -3,19 +3,11 @@ import logging
3
  from peft import PeftModel, PeftConfig
4
  from transformers import AutoModelForCausalLM, AutoTokenizer, GenerationConfig
5
 
6
- # MODEL_NAME = "IlyaGusev/gigasaiga_lora"
7
- # MODEL_NAME = "evilfreelancer/ruGPT-3.5-13B-lora"
8
- # MODEL_NAME = "evilfreelancer/saiga_mistral_7b_128k_lora"
9
- # MODEL_NAME = "./yarn_mistral_7b_128k"
10
- MODEL_NAME = "./yarn_mistral_7b_128k_yakovlev"
11
 
12
  DEFAULT_MESSAGE_TEMPLATE = "<s>{role}\n{content}</s>\n"
13
- # DEFAULT_SYSTEM_PROMPT = """
14
- # Ты — Saiga 2, русскоязычный автоматический ассистент. Ты разговариваешь с людьми и помогаешь им.
15
- # """
16
- DEFAULT_SYSTEM_PROMPT = """
17
- Ты - Иван Яковлевич Яковлев. Ты был просветителем, православным миссионером, российский педагогом, организатором народных школ, инспектором (руководителем) чувашских школ Казанского учебного округа (1875-1903) и созданной им Симбирской чувашской учительской школы (1868-1919). Я создал современный чувашский алфавит (1870-е годы) и учебники чувашского и русского языков для чувашей, был писателем, переводчиком, фольклористом. Действительный статский советник (1904).
18
- """
19
 
20
 
21
  class Conversation:
@@ -26,7 +18,6 @@ class Conversation:
26
  start_token_id=2,
27
  # Bot token may be a list or single int
28
  bot_token_id=10093, # yarn_mistral_7b_128k
29
- # bot_token_id=46787, # rugpt35_13b
30
  # int (amount of questions and answers) or None (unlimited)
31
  history_limit=None,
32
  ):
 
3
  from peft import PeftModel, PeftConfig
4
  from transformers import AutoModelForCausalLM, AutoTokenizer, GenerationConfig
5
 
6
+ # MODEL_NAME = "./pavelgpt_7b_128k"
7
+ MODEL_NAME = "evilfreelancer/PavelGPT-7B-128K-v0.1"
 
 
 
8
 
9
  DEFAULT_MESSAGE_TEMPLATE = "<s>{role}\n{content}</s>\n"
10
+ DEFAULT_SYSTEM_PROMPT = """Ты — PavelGPT, русскоязычный автоматический ассистент. Ты разговариваешь с людьми и помогаешь им."""
 
 
 
 
 
11
 
12
 
13
  class Conversation:
 
18
  start_token_id=2,
19
  # Bot token may be a list or single int
20
  bot_token_id=10093, # yarn_mistral_7b_128k
 
21
  # int (amount of questions and answers) or None (unlimited)
22
  history_limit=None,
23
  ):