File size: 5,742 Bytes
0d61a0e
 
 
 
 
 
c5a9d28
0d61a0e
 
 
 
 
 
 
 
 
569ffe5
0d61a0e
97209c3
 
0d61a0e
 
7afb4d3
 
 
 
 
 
 
 
 
 
 
 
 
 
0123035
7afb4d3
dfc2610
0123035
 
 
 
dfc2610
 
0123035
 
 
 
0d61a0e
d1d6a80
0d61a0e
 
 
 
 
 
 
 
 
d1d6a80
0d61a0e
 
d1d6a80
0d61a0e
d1d6a80
 
 
cd94e95
d1d6a80
 
 
 
0d61a0e
 
 
 
7afb4d3
 
 
 
 
0d61a0e
 
 
7afb4d3
 
1a5ce42
 
 
 
 
 
 
 
 
 
0123035
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
---
datasets:
- IlyaGusev/ru_turbo_alpaca
- yahma/alpaca-cleaned
language:
- ru
- en
pipeline_tag: text2text-generation
inference: false
---

# LLaMA 13B trained on the ru_turbo_alpaca, Russian instructions dataset

Based on [LLaMA 13B](https://huggingface.co/decapoda-research/llama-13b-hf).

* This is an adapter-only version.
* llama.cpp version: [link](https://huggingface.co/IlyaGusev/llama_13b_ru_turbo_alpaca_lora_llamacpp).

Colab: [link](https://colab.research.google.com/drive/18GG-zwxyGAHoVXghlOQONkxb_GpR7USj)

Training code: [link](https://github.com/IlyaGusev/rulm/tree/master/self_instruct)

Prompt template for v2:
```
### Задание: {instruction}
### Вход: {input}
### Ответ: 
```

or

```
### Задание: {instruction}
### Ответ: 
```

Versions:
- v2, April 8, 2023: A model trained with outputs capped at 800 tokens instead of 400. Also, now only a single prompt template is supported.
  - `revision="3dff86a20f80ba203fec6e986a3422b83822ca70"`
  - Final loss: 0.995
  - Time: 38 hours, 35 minutes
  - Hardware: 1x RTX 3090Ti
  - Wandb link: [link](https://wandb.ai/ilyagusev/rulm_self_instruct/runs/wy66bwim/overview?workspace=user-ilyagusev)
- v1, April 2, 2023: Original model trained with 400 max tokens in outputs. Both Russian and English are supported, trained on the ru_turbo_alpaca and alpaca-cleaned.
  - `revision="97209c36c9261eb9527371a341c70f90c39ee158"`
  - Final loss: 1.074
  - Time: 53 hours, 53 minutes
  - Hardware: 1x RTX 3090

```python
import torch
from peft import PeftModel, PeftConfig
from transformers import AutoModelForCausalLM, AutoTokenizer, GenerationConfig

MODEL_NAME = "IlyaGusev/llama_13b_ru_turbo_alpaca_lora"

config = PeftConfig.from_pretrained(MODEL_NAME)
model = AutoModelForCausalLM.from_pretrained(
    config.base_model_name_or_path,
    load_in_8bit=True,
    torch_dtype=torch.float16,
    device_map="auto"
)
model = PeftModel.from_pretrained(model, MODEL_NAME, torch_dtype=torch.float16)
tokenizer = AutoTokenizer.from_pretrained(MODEL_NAME)
model.eval()

generation_config = GenerationConfig.from_pretrained(MODEL_NAME)
data = tokenizer(["### Задание: Почему трава зеленая?\n### Ответ: "], return_tensors="pt")
data = {k: v.to(model.device) for k, v in data.items() if k in ("input_ids", "attention_mask")}
output_ids = model.generate(**data, generation_config=generation_config)[0]
print(tokenizer.decode(output_ids, skip_special_tokens=True))

```

Examples:
```
### Задание: Почему трава зеленая? 
### Ответ: Трава зеленая из-за содержания в ней хлорофилла, который является пигментом, ответственным за зеленый цвет растений.
Хлорофилл содержится в хлоропластах, органе, который находится внутри клеток растений и отвечает за фотосинтез -
процесс, который позволяет растениям использовать солнечную энергию для создания сахара из воды и углекислого газа.
Хлорофиллы способны поглощать световой спектр с длиной волны от 400 до 700 нанометров, что приводит к зеленому цвету растений.
```

```
### Задание: Сочини длинный рассказ, обязательно упоминая следующие объекты.
### Вход: Таня, мяч
### Ответ: Однажды летом Таня решила пойти на прогулку в парк. Она взяла с собой свой любимый мяч и отправилась на прогулку.
Парк был очень красивым и зеленым. Таня гуляла по его аллее, наслаждаясь свежим воздухом и красивыми цветами.
Вскоре она заметила, что рядом с ней стоит маленький мальчик. Он был немного младше Тани, но был очень добрым и дружелюбным.
"Здравствуй, девочка", - сказал мальчик, улыбаясь.
Таня улыбнулась ему в ответ и предложила сыграть в мяч. Мальчик согласился, и они начали играть вместе.
Они играли долгое время, и Таня забыла о времени и о том, что она должна была вернуться домой.
Когда они закончили играть, мальчик попросил Таню поиграть с ним еще раз. Таня согласилась, и они продолжили играть.
Когда Таня вернулась домой, она была очень уставшая, но она была очень счастлива, что провела такую замечательную прогулку и познакомилась с таким замечательным мальчиком.
С тех пор Таня и мальчик стали лучшими друзьями. Они играли вместе каждый день, и Таня всегда чувствовала себя счастливой, когда играла с ним.
Таким образом, Таня обнаружила, что игра в мяч может быть не только увлекательным, но и способствовать созданию новых дружеских отношений.
```