Views
No views yet
meta-llama/Llama-3.1-8B-Instruct on Ukrainian language and literature tasks of ZNO (EIE) & NMT dataset to generate step-by-step solution:<|begin_of_text|><|start_header_id|>system<|end_header_id|>
Cutting Knowledge Date: December 2023
Today Date: 26 Jul 2024
<|eot_id|><|start_header_id|>user<|end_header_id|>
Дайте розгорнуту відповідь на завдання, починаючи з ключового слова "Відповідь:" та використовуючи лише наведені нижче варіанти.
Завдання: З’ясуйте, якими частинами мови є виділені слова в реченні (цифра позначає наступне слово).
Сучасна людина, щоб бути (1)успішною, має вчитися (2)впродовж (3)усього життя, (4)опановуючи нові галузі знань.
Варіанти відповіді:
А – займенник
Б – прикметник
В – форма дієслова (дієприкметник)
Г – форма дієслова (дієприслівник)
Д – прийменник<|eot_id|><|start_header_id|>assistant<|end_header_id|>
Відповідь:
Завдання перевіряє ваше вміння правильно визначати частини мови.
Необхідно бути дуже уважним, тому що частиномовна приналежність конкретного слова часто залежить від контексту. Проаналізуймо кожне із запропонованих слів.
Слово у успішної є прислівником, виражає спосіб дії, не змінюється.
Слово впродовж – це прийменник, службова частина мови, яка разом з відмінковими закінченнями іменників, займенників і числівників виражає відношення між словами в реченні.
Слово усесь – займенник, службова частина мови, який вказує на предмет, але не називає його.
Слово опановуючи – дієприслівник (особлива форма дієслова), відповідає на питання що роблячи?.
Відповідь: 1–Б, 2–Д, 3–А, 4–Г.<|eot_id|>import torch
from peft import PeftModel
from transformers import AutoModelForCausalLM, AutoTokenizer, BitsAndBytesConfig
quantization_config = BitsAndBytesConfig(
load_in_4bit=True,
bnb_4bit_compute_dtype=torch.float16, # computation in fp16
bnb_4bit_use_double_quant=True, # enables double quantization for better accuracy
bnb_4bit_quant_type="nf4" # choose "nf4" (normal float4) or other types as supported
)
base_model = "unsloth/Llama-3.1-8B-Instruct"
tokenizer = AutoTokenizer.from_pretrained(base_model, max_sequence_length=3072, model_max_length=3072)
model_base = AutoModelForCausalLM.from_pretrained(base_model, quantization_config=quantization_config, device_map="auto", torch_dtype=torch.float16, use_flash_attention_2=False)
model = PeftModel.from_pretrained(model_base, "NLPForUA/Llama-3.1-8B-Instruct-zno-cot", quantization_config=quantization_config, device_map="auto", torch_dtype=torch.float16, use_flash_attention_2=False)
input_text = """
Дайте розгорнуту відповідь на завдання, починаючи з ключового слова "Відповідь:".
Завдання: x / 2 + 4 = 6.5, знайдіть x.
"""
messages = [{"role": "user", "content": input_text}]
inputs = tokenizer.apply_chat_template(
messages,
tokenize=True,
add_generation_prompt=True,
return_tensors="pt",
add_special_tokens=False,
).to("cuda")
print(tokenizer.decode(
model.generate(
input_ids=inputs,
max_new_tokens=1024,
use_cache=True,
temperature=0.0,
do_sample=False,
repetition_penalty=1.0,
pad_token_id=tokenizer.eos_token_id
)[0]))<|start_header_id|>assistant<|end_header_id|>
Відповідь:
Завдання перевіряє ваше вміння виконувати операції з дробовими числами.
Підкреслимо дробові частини чисел: 6,5 = 6 1/2 = (6/2) + (1/2).
Знову ж таки поділимо числову частину на знаменник: 6/2 = 3.
Тепер застосуємо цю інформацію до нашого рівняння: х/2 + 4 = (3 + 1/2).
Знову ж таки застосуємо цю інформацію до нашого рівняння: х/2 + 4 = 3 + 1/2.
З правої частини віднімемо 4: х/2 = -1 + 1/2.
З правої частини знову віднімемо 1/2: х/2 = -3/2.
З правої частини ділим на -1/2: х = -3/2 * 2.
З правої частини ділим на -1/2: х = -3.
Відповідь: -3.<|eot_id|>1@article{EmpoweringSmallerModels,
2 author = {Mykyta Syromiatnikov, Victoria Ruvinskaya, and Nataliia Komleva},
3 title = {Empowering Smaller Models: Tuning LLaMA and Gemma with Chain-of-Thought for Ukrainian Exam Tasks},
4 journal = {arXiv preprint arXiv:2503.13988},
5 year = {2025}
6}