--- 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) ```