Llama 2 13B - GPTQ fine-tuned for arithmetical reasoning task
Based on Llama 2 13B - GPTQ.
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 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.
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)
- Downloads last month
- 1