File size: 3,942 Bytes
ad56daa 32ea2de ad56daa |
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 |
---
language:
- ru
library_name: peft
---
# Llama 2 13B - GPTQ fine-tuned for arithmetical reasoning task
Based on [Llama 2 13B - GPTQ](https://huggingface.co/TheBloke/Llama-2-13B-GPTQ/tree/gptq-4bit-32g-actorder_True).
This version of the model is adapter-only.
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.
As a demonstration model, it often makes errors in arithmetic and logic, but generally produces results in the correct format.
## How to use this model from Python code
Before running this code, ensure that all necessary software is installed.
```python
from transformers import AutoModelForCausalLM, AutoTokenizer, GenerationConfig
from peft.peft_model import PeftModel
MODEL_ID = 'TheBloke/Llama-2-13B-GPTQ' # Идентификатор предобученной модели в репозитории huggingface.co
MODEL_REVISION ='gptq-4bit-32g-actorder_True' # Версия модели: ветка репозитория. Указываем, т. к. это не main
LORA_ID = 'obnimorda/llama-2-13b-gptq-ru-sum-odd-lora' # Идентификатор адаптера LoRA в репозитории huggingface.co
# Загрузка предобученной модели
model = AutoModelForCausalLM.from_pretrained(
MODEL_ID,
revision=MODEL_REVISION,
device_map="auto", # Автоматический выбор устройства для загрузки и запуска модели на основе доступности и совместимости
)
# Загрузка адаптера LoRA и его применение к модели, загруженной на предыдущем шаге
model = PeftModel.from_pretrained(
model,
LORA_ID
)
# Входные данные
#prompt = "Если сложить нечетные числа этого множества, получится нечетное число: 15, 32, 5, 13, 82, 7, 1.\nОтвет:"
prompt = "Если сложить нечетные числа этого множества, получится нечетное число: 15, 32, 5, 13, 82, 7, 1.\nДля проверки выполните действия по порядку. Сначала найдите все нечетные числа, затем сложите их и определите, четным или нечетным является результат.\n\n"
print('prompt:', prompt)
# Токенизатор для преобразования входных данных и результата генерации: создается из файлов токенизатора, полученных с моделью
tokenizer = AutoTokenizer.from_pretrained(
MODEL_ID,
revision=MODEL_REVISION,
use_fast=False,
legacy=True,
)
# Токенизация входных данных
input_ids = tokenizer(prompt, return_tensors='pt').input_ids.cuda()
# Конфигурация для генерации последовательности: создается из конфигурационного файла, полученного с моделью
config = GenerationConfig.from_pretrained(
MODEL_ID,
revision=MODEL_REVISION,
)
# Установка пользовательских параметров генерации
config.do_sample = True
config.max_new_tokens = 100
config.repetition_penalty = 1.15
config.temperature = 0.7
config.top_k = 20
config.top_p = 1
# Генерация последовательности
output_ids = model.generate(
inputs=input_ids,
generation_config=config
)
# Декодирование результата генерации
output = tokenizer.decode(output_ids[0])
print('output:', output)
``` |