Sergei Vorobev
commited on
Commit
·
a885561
1
Parent(s):
8fc1784
update readme and tokenizer config
Browse files- README.md +56 -6
- tokenizer_config.json +2 -0
README.md
CHANGED
@@ -9,10 +9,22 @@ Pretrain-версия большой языковой модели YandexGPT 5 L
|
|
9 |
|
10 |
На первом этапе модель обучалась преимущественно на русскоязычных и англоязычных текстах общим объёмом 15T токенов с длиной контекста до 8k токенов. Состав датасета: 60% — веб-страницы, 15% — код, 10% — математика, остальное — другие специфичные данные, в том числе сгенерированная с помощью наших моделей синтетика и датасеты наших сервисов, например Яндекс Переводчика и база фактов Поиска.
|
11 |
|
12 |
-
На втором этапе, который мы назвали Powerup, модель обучалась на высококачественных данных объёмом 320B токенов. Состав Powerup-датасета: 25% — веб-страницы, 19% — математика, 18% — код, 18% — образовательные данные, остальное — синтетика, датасеты сервисов и прочие качественные тексты. На этом этапе мы увеличили длину контекста до 32k токенов.
|
|
|
|
|
|
|
|
|
|
|
|
|
13 |
|
14 |
## Бенчмарки
|
15 |
-
В своей категории
|
|
|
|
|
|
|
|
|
|
|
|
|
16 |
|
17 |
## Как использовать
|
18 |
|
@@ -32,7 +44,7 @@ model = AutoModelForCausalLM.from_pretrained(
|
|
32 |
input_text = "Кто сказал тебе, что нет на свете настоящей,"
|
33 |
input_ids = tokenizer(input_text, return_tensors="pt").to("cuda")
|
34 |
|
35 |
-
outputs = model.generate(**input_ids, max_new_tokens=
|
36 |
print(tokenizer.decode(outputs[0], skip_special_tokens=True))
|
37 |
```
|
38 |
|
@@ -41,8 +53,7 @@ print(tokenizer.decode(outputs[0], skip_special_tokens=True))
|
|
41 |
from vllm import LLM, SamplingParams
|
42 |
|
43 |
|
44 |
-
|
45 |
-
MODEL_NAME = "/home/serv01/repos/YandexGPT-5-Lite-8B-pretrain"
|
46 |
|
47 |
sampling_params = SamplingParams(
|
48 |
temperature=0.3,
|
@@ -60,6 +71,45 @@ for i in range(len(input_texts)):
|
|
60 |
print(input_texts[i] + outputs[i].outputs[0].text)
|
61 |
```
|
62 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
63 |
## Ка�� дообучить под свои задачи
|
64 |
|
65 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
9 |
|
10 |
На первом этапе модель обучалась преимущественно на русскоязычных и англоязычных текстах общим объёмом 15T токенов с длиной контекста до 8k токенов. Состав датасета: 60% — веб-страницы, 15% — код, 10% — математика, остальное — другие специфичные данные, в том числе сгенерированная с помощью наших моделей синтетика и датасеты наших сервисов, например Яндекс Переводчика и база фактов Поиска.
|
11 |
|
12 |
+
На втором этапе, который мы назвали Powerup, модель обучалась на высококачественных данных объёмом 320B токенов. Состав Powerup-датасета: 25% — веб-страницы, 19% — математика, 18% — код, 18% — образовательные данные, остальное — синтетика, датасеты сервисов и прочие качественные тексты. На этом этапе мы увеличили длину контекста до 32k токенов.
|
13 |
+
|
14 |
+
Кроме того, наш токенизатор хорошо оптимизирован для русского языка. Например, 32k токенов нашей модели в среднем соответствует 48k токенам Qwen-2.5.
|
15 |
+
|
16 |
+
Более подробно — в нашей [статье на Хабре](https://habr.com/ru/companies/yandex/articles/885218/).
|
17 |
+
|
18 |
+
Задавайте вопросы в discussions.
|
19 |
|
20 |
## Бенчмарки
|
21 |
+
В своей категории модель достигает паритета с мировыми SOTA по ряду ключевых бенчмарков для pretrain-моделей, а по многим другим — превосходит их:
|
22 |
+
|
23 |
+
Бенчмарки опубликованы в [статье на Хабре](https://habr.com/ru/companies/yandex/articles/885218/).
|
24 |
+
|
25 |
+
\* по данным репорта разработчиков модели. <br>
|
26 |
+
BBH — 3-shot, HUMAN_EVAL и MPBB — 0-shot, все остальные бенчмарки — 5-shot. <br>
|
27 |
+
Все замеры мы производили в HF transformers.
|
28 |
|
29 |
## Как использовать
|
30 |
|
|
|
44 |
input_text = "Кто сказал тебе, что нет на свете настоящей,"
|
45 |
input_ids = tokenizer(input_text, return_tensors="pt").to("cuda")
|
46 |
|
47 |
+
outputs = model.generate(**input_ids, max_new_tokens=18)
|
48 |
print(tokenizer.decode(outputs[0], skip_special_tokens=True))
|
49 |
```
|
50 |
|
|
|
53 |
from vllm import LLM, SamplingParams
|
54 |
|
55 |
|
56 |
+
MODEL_NAME = "yandex/YandexGPT-5-Lite-8B-pretrain"
|
|
|
57 |
|
58 |
sampling_params = SamplingParams(
|
59 |
temperature=0.3,
|
|
|
71 |
print(input_texts[i] + outputs[i].outputs[0].text)
|
72 |
```
|
73 |
|
74 |
+
Для полного соответствия токенизации мы рекомендуем пользоваться оригинальным [sentencepiece](https://github.com/google/sentencepiece):
|
75 |
+
```python
|
76 |
+
import sentencepiece as spm
|
77 |
+
import torch
|
78 |
+
# git clone https://huggingface.co/yandex/YandexGPT-5-Lite-8B-pretrain
|
79 |
+
tokenizer = spm.SentencePieceProcessor(
|
80 |
+
model_file="<path_to_local_repo>/tokenizer.model"
|
81 |
+
)
|
82 |
+
input_ids = tokenizer.encode(input_text, add_bos=True)
|
83 |
+
input_ids = torch.Tensor([input_ids]).to(model.device).to(torch.long)
|
84 |
+
outputs = model.generate(
|
85 |
+
input_ids=input_ids,
|
86 |
+
attention_mask=torch.ones_like(input_ids),
|
87 |
+
max_new_tokens=18
|
88 |
+
)
|
89 |
+
print(tokenizer.decode(outputs[0].tolist()))
|
90 |
+
```
|
91 |
+
|
92 |
## Ка�� дообучить под свои задачи
|
93 |
|
94 |
+
У нашей модели llama-like архитектура, это означает, что она совместима с большинством существующих фреймворков по дообучению LLM. Приведем короткий пример, как можно обучить нашу модель в torchtune:
|
95 |
+
|
96 |
+
Скачиваем репозиторий:
|
97 |
+
```bash
|
98 |
+
tune download yandex/YandexGPT-5-Lite-8B-pretrain \
|
99 |
+
--output-dir YandexGPT-5-Lite-8B-pretrain \
|
100 |
+
```
|
101 |
+
|
102 |
+
Смотрим список конфигов и копируем подходящий под задачу:
|
103 |
+
```bash
|
104 |
+
tune ls
|
105 |
+
tune cp llama3_1/8B_lora training_config.yaml
|
106 |
+
```
|
107 |
+
|
108 |
+
Изменяем конфиг, адаптируем его под нашу модель и делаем подходящим нашу задачу. Например, [такой](https://huggingface.co/yandex/YandexGPT-5-Lite-8B-pretrain/discussions/1#67bc4e6472499ce2ba3659a7) вариант подойдет для lora обучения на открытом инстракт датасете `alpaca-cleaned`.
|
109 |
+
|
110 |
+
Запускаем обучение:
|
111 |
+
```bash
|
112 |
+
tune run lora_finetune_single_device --config training_config.yaml
|
113 |
+
```
|
114 |
+
|
115 |
+
Подробности можно найти в официальной [документации](https://pytorch.org/torchtune/stable/overview.html) torchtune.
|
tokenizer_config.json
CHANGED
@@ -1,4 +1,6 @@
|
|
1 |
{
|
|
|
|
|
2 |
"bos_token": "<s>",
|
3 |
"eos_token": "</s>",
|
4 |
"legacy": false,
|
|
|
1 |
{
|
2 |
+
"add_bos_token": true,
|
3 |
+
"add_eos_token": false,
|
4 |
"bos_token": "<s>",
|
5 |
"eos_token": "</s>",
|
6 |
"legacy": false,
|