AlekseyCalvin commited on
Commit
b72cbe4
·
verified ·
1 Parent(s): b38fbd1

Upload README.md with huggingface_hub

Browse files
Files changed (1) hide show
  1. README.md +94 -0
README.md ADDED
@@ -0,0 +1,94 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ license: other
3
+ license_name: yandexgpt-5-lite-8b
4
+ license_link: LICENSE
5
+ language:
6
+ - ru
7
+ - en
8
+ base_model:
9
+ - yandex/YandexGPT-5-Lite-8B-pretrain
10
+ ---
11
+
12
+ # YandexGPT-5-Lite-Instruct
13
+
14
+ Instruct-версия большой языковой модели YandexGPT 5 Lite на 8B параметров с длиной контекста 32k токенов. Также в отдельном [репозитории](https://huggingface.co/yandex/YandexGPT-5-Lite-8B-instruct-GGUF) опубликована квантизованная версия модели в формате GGUF.
15
+
16
+ Обучена на базе [YandexGPT 5 Lite Pretrain](https://huggingface.co/yandex/YandexGPT-5-Lite-8B-pretrain), без использования весов каких-либо сторонних моделей. Алайнмент Lite-версии совпадает с алайнментом YandexGPT 5 Pro и состоит из этапов SFT и RLHF (более подробно о них — в [статье](https://habr.com/ru/companies/yandex/articles/885218/) на Хабре).
17
+
18
+ Задавайте вопросы в discussions.
19
+
20
+ ## Бенчмарки
21
+ По результатам международных бенчмарков и их адаптаций для русского языка, YandexGPT 5 Lite вплотную приблизилась к аналогам (Llama-3.1-8B-instruct и Qwen-2.5-7B-instruct) и превосходит их в ряде сценариев, в том числе — в знании русской культуры и фактов.
22
+
23
+ <img src="https://habrastorage.org/r/w1560/getpro/habr/upload_files/6b5/eb4/9ea/6b5eb49ea757bc124c938717b21f1cf7.png" alt="Таблица бенчмарков" width="100%"/>
24
+
25
+ MMLU — 5-shot, все остальные бенчмарки — 0-shot.
26
+
27
+ ## Как использовать
28
+
29
+ Модель можно запустить через HF Transformers:
30
+ ```python
31
+ from transformers import AutoModelForCausalLM, AutoTokenizer
32
+
33
+
34
+ MODEL_NAME = "yandex/YandexGPT-5-Lite-8B-instruct"
35
+
36
+ tokenizer = AutoTokenizer.from_pretrained(MODEL_NAME)
37
+ model = AutoModelForCausalLM.from_pretrained(
38
+ MODEL_NAME,
39
+ device_map="cuda",
40
+ torch_dtype="auto",
41
+ )
42
+
43
+ messages = [{"role": "user", "content": "Для чего нужна токенизация?"}]
44
+ input_ids = tokenizer.apply_chat_template(
45
+ messages, tokenize=True, return_tensors="pt"
46
+ ).to("cuda")
47
+
48
+ outputs = model.generate(input_ids, max_new_tokens=1024)
49
+ print(tokenizer.decode(outputs[0][input_ids.size(1) :], skip_special_tokens=True))
50
+ ```
51
+
52
+ Или через vLLM:
53
+ ```python
54
+ from vllm import LLM, SamplingParams
55
+ from transformers import AutoTokenizer
56
+
57
+
58
+ MODEL_NAME = "yandex/YandexGPT-5-Lite-8B-instruct"
59
+
60
+ sampling_params = SamplingParams(
61
+ temperature=0.3,
62
+ top_p=0.9,
63
+ max_tokens=1024,
64
+ )
65
+
66
+ tokenizer = AutoTokenizer.from_pretrained(MODEL_NAME)
67
+ llm = LLM(
68
+ MODEL_NAME,
69
+ tensor_parallel_size=1,
70
+ )
71
+
72
+ messages = [{"role": "user", "content": "В чем смысл жизни?"}]
73
+ input_ids = tokenizer.apply_chat_template(
74
+ messages, tokenize=True, add_generation_prompt=True
75
+ )[1:] # remove bos
76
+ text = tokenizer.decode(input_ids)
77
+
78
+ outputs = llm.generate(text, use_tqdm=False, sampling_params=sampling_params)
79
+
80
+ print(tokenizer.decode(outputs[0].outputs[0].token_ids, skip_special_tokens=True))
81
+
82
+ ```
83
+
84
+ Для запуска в llama.cpp и ollama можно воспользоваться нашей квантизованной моделью, которая выложена в репозитории [YandexGPT-5-Lite-8B-instruct-GGUF](https://huggingface.co/yandex/YandexGPT-5-Lite-8B-instruct-GGUF).
85
+
86
+ ## Особенности токенизации
87
+ Для полного соответствия токенизации мы рекомендуем пользоваться оригинальным [sentencepiece](https://github.com/google/sentencepiece) — файл токенизатора лежит в папке `original_tokenizer`. В нашей инфраструктуре каждую реплику диалога мы токенизируем отдельно.
88
+
89
+ Из-за этого, в частности, появляется пробел в начале каждой реплики. Также `\n` токены мы заменяем на `[NL]`, это можно сделать с помощью `text.replace("\n", "[NL]")` перед токенизацией.
90
+
91
+ ## Особенности шаблона
92
+ Мы используем нестандартный шаблон диалога — модель обучена генерировать только одну реплику после последовательности `Ассистент:[SEP]`, завершая её токеном `</s>`. При этом диалог в промпте может быть любой длины.
93
+
94
+ Это приводит к тому, что в интерактивном режиме модель может выдавать результаты, отличающиеся от вызова модели в режиме генерации на фиксированном диалоге. Поэтому мы рекомендуем использовать интерактивный режим только для ознакомления с моделью.