obnimorda commited on
Commit
32ea2de
1 Parent(s): 385da53

Add README.md

Browse files
Files changed (1) hide show
  1. README.md +75 -0
README.md ADDED
@@ -0,0 +1,75 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Llama 2 13B - GPTQ fine-tuned for arithmetical reasoning task
2
+
3
+ Based on [Llama 2 13B - GPTQ](https://huggingface.co/TheBloke/Llama-2-13B-GPTQ/tree/gptq-4bit-32g-actorder_True).
4
+
5
+ This version of the model is adapter-only.
6
+
7
+ Llama 2 13B has been fine-tuned for a specific task: to check if the sum of odd numbers from a certain group results in an even total. This fine-tuning aims to illustrate the [example](https://obnimorda.ru/guides/prompt/introduction/examples/#задачи-на-логику) in the Russian guide.
8
+
9
+ As a demonstration model, it often makes errors in arithmetic and logic, but generally produces results in the correct format.
10
+
11
+ ## How to use this model from Python code
12
+
13
+ Before running this code, ensure that all necessary software is installed.
14
+
15
+ ```python
16
+ from transformers import AutoModelForCausalLM, AutoTokenizer, GenerationConfig
17
+ from peft.peft_model import PeftModel
18
+
19
+ MODEL_ID = 'TheBloke/Llama-2-13B-GPTQ' # Идентификатор предобученной модели в репозитории huggingface.co
20
+ MODEL_REVISION ='gptq-4bit-32g-actorder_True' # Версия модели: ветка репозитория. Указываем, т. к. это не main
21
+ LORA_ID = 'obnimorda/llama-2-13b-gptq-ru-sum-odd-lora' # Идентификатор адаптера LoRA в репозитории huggingface.co
22
+
23
+ # Загрузка предобученной модели
24
+ model = AutoModelForCausalLM.from_pretrained(
25
+ MODEL_ID,
26
+ revision=MODEL_REVISION,
27
+ device_map="auto", # Автоматический выбор устройства для загрузки и запуска модели на основе доступности и совместимости
28
+ )
29
+
30
+ # Загрузка адаптера LoRA и его применение к модели, загруженной на предыдущем шаге
31
+ model = PeftModel.from_pretrained(
32
+ model,
33
+ LORA_ID
34
+ )
35
+
36
+ # Входные данные
37
+ #prompt = "Если сложить нечетные числа этого множества, получится нечетное число: 15, 32, 5, 13, 82, 7, 1.\nОтвет:"
38
+ prompt = "Если сложить нечетные числа этого множества, получится нечетное число: 15, 32, 5, 13, 82, 7, 1.\nДля проверки выполните действия по порядку. Сначала найдите все нечетные числа, затем сложите их и определите, четным или нечетным является результат.\n\n"
39
+ print('prompt:', prompt)
40
+
41
+ # Токенизатор для преобразования входных данных и результата генерации: создается из файлов токенизатора, полученных с моделью
42
+ tokenizer = AutoTokenizer.from_pretrained(
43
+ MODEL_ID,
44
+ revision=MODEL_REVISION,
45
+ use_fast=False,
46
+ legacy=True,
47
+ )
48
+
49
+ # Токенизация входных данных
50
+ input_ids = tokenizer(prompt, return_tensors='pt').input_ids.cuda()
51
+
52
+ # Конфигурация для генерации последовательности: создается из конфигурационного файла, полученного с моделью
53
+ config = GenerationConfig.from_pretrained(
54
+ MODEL_ID,
55
+ revision=MODEL_REVISION,
56
+ )
57
+
58
+ # Установка пользовательских параметров генерации
59
+ config.do_sample = True
60
+ config.max_new_tokens = 100
61
+ config.repetition_penalty = 1.15
62
+ config.temperature = 0.7
63
+ config.top_k = 20
64
+ config.top_p = 1
65
+
66
+ # Генерация последовательности
67
+ output_ids = model.generate(
68
+ inputs=input_ids,
69
+ generation_config=config
70
+ )
71
+
72
+ # Декодирование результата генерации
73
+ output = tokenizer.decode(output_ids[0])
74
+ print('output:', output)
75
+ ```