
# PavelGPT 7B 128K (v0.1)

PavelGPT is a Russian language model based
on [NousResearch/Yarn-Mistral-7b-128k](https://huggingface.co/NousResearch/Yarn-Mistral-7b-128k)
so it also has 7B parameters and 128k context size.

- **Developed by:** [EvilFreelancer](https://github.com/EvilFreelancer)
- **Model type:** GGUF
- **Language(s) (NLP):** Russian, English
- **License:** MIT
- **Finetuned from model:**
  [NousResearch/Yarn-Mistral-7b-128k](https://huggingface.co/NousResearch/Yarn-Mistral-7b-128k)

## Details

### Description

The model is able to generate text in Russian, answer questions, solve simple logical puzzles and simple math
calculations, it was trained on a medium corpus of Russian instructions, manuals and other texts.

It optimized for INSTRUCT mode and it works better if you give it system prompt and only one instruction (without
history at all).

### Datasets

PavelGPT was trained on following datasets:

- [d0rj/gsm8k-ru](https://huggingface.co/datasets/d0rj/gsm8k-ru) - 7.5k rows of Russian puzzles
- [d0rj/alpaca-cleaned-ru](https://huggingface.co/datasets/d0rj/alpaca-cleaned-ru) - 51.8k rows of Russian general
  instructions
- [IlyaGusev/ru_turbo_alpaca](https://huggingface.co/datasets/IlyaGusev/ru_turbo_alpaca) - 29.98k rows of Russian
  instructions, but was used only instructions with `ok` label (~4.5k)
- [IlyaGusev/ru_turbo_alpaca_evol_instruct](https://huggingface.co/datasets/IlyaGusev/ru_turbo_alpaca_evol_instruct) -
  47.8k rows of Russian instructions

All datasets was merged with help
of [create_instruct_set_v2.py](https://github.com/EvilFreelancer/saiga-custom/blob/main/data_processing/create_instruct_set_v2.py)
(hash a1151bf903990b88177d30bd1de67c7b94fdecef).

After merging and deduplication we got 46.2k rows of training data and 2.4k rows of validation data.

### Training

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.

Context size was set to 4096 tokens, batch size was set to 1, gradient accumulation was set to 128.

Training script: [pavelgpt_7b_128k.ipynb](https://github.com/EvilFreelancer/saiga-custom/blob/main/pavelgpt_7b_128k.ipynb).

Wandb report: [j6jt6cyd](https://api.wandb.ai/links/evilfreelancer/j6jt6cyd).

### Tests results

Tests was performed on following [generation configuration](./generation_config.json):

```json
{
  "pad_token_id": 0,
  "unk_token_id": 0,
  "bos_token_id": 1,
  "eos_token_id": 2,
  "temperature": 0.2,
  "top_p": 0.2,
  "top_k": 20,
  "do_sample": true,
  "max_new_tokens": 4096,
  "repetition_penalty": 1.2,
  "no_repeat_ngram_size": 15
}
```

Here is the results:

```text
User: Привет! Кто ты?
Bot: Я - языковой модель ИИ, называемый PavelGPT. Я способен к естественному языку и обучен отвечать на вопросы по многим темам. Как правило, я использую информацию из Интернета для создания своих ответов.

User: Ты помнишь как здесь оказался?
Bot: Я был создан компанией OpenAI в качестве исследовательского проекта и запущен в декабре 2018 года. С тех пор он продолжает развивать свой алгоритм путем обучения на больших объемах данных и улучшения его функций.

User: Какой по твоему сейчас год?
Bot: В настоящее время это 2023 год.

User: А какой день?
Bot: Сейчас 6 января 2023 г.

User: Почему трава зелёная?
Bot: Зеленый цвет является результатом взаимодействия хлорофилла (пигмента) со светом. Хлорофилл может поглощать красное и синее спектральные излучения, оставляя только зеленое. Эти компоненты вместе образуют зеленый цвет растительной массы.

User: Я пошёл в магазин и купил 10 яблок. Два яблока я отдал соседу и два ремонтнику. Потом я купил ещё 5 яблок и одно из них съел. Также я отдал три банана моему брату. Сколько яблок у меня осталось?
Bot: У вас осталось 10 яблок после того, как вы продали их друзьям и брату.

User: Твоя задача решить логическую головоломку: У Серёжи есть мама Татьяна и папа Денис. И ещё у Серёжи есть брат Иван. Кем Ивану приходится Татьяна?
Bot: Мамой Ивана должна быть Татьяна.
```
## Links

* https://t.me/evilfreelancer
* https://dzen.ru/evilfreelancer
* https://github.com/EvilFreelancer
* https://youtube.com/@pavelzloi
{"language": ["ru", "en"], "license": "mit", "datasets": ["d0rj/gsm8k-ru", "d0rj/alpaca-cleaned-ru", "IlyaGusev/ru_turbo_alpaca", "IlyaGusev/ru_turbo_alpaca_evol_instruct"], "pipeline_tag": "text-generation"}
gguf text-generation ru en dataset:d0rj/gsm8k-ru dataset:d0rj/alpaca-cleaned-ru dataset:IlyaGusev/ru_turbo_alpaca dataset:IlyaGusev/ru_turbo_alpaca_evol_instruct license:mit region:us