Views
No views yet
1import torch
2from transformers import AutoModelForCausalLM, AutoTokenizer
3from peft import PeftModel
4
5BASE_MODEL_NAME = 'Qwen/Qwen2.5-14B-Instruct'
6PEFT_MODEL_NAME = 'frnka/qwen14b-backwards-peft'
7tokenizer = AutoTokenizer.from_pretrained(BASE_MODEL_NAME)
8base_model = AutoModelForCausalLM.from_pretrained(
9 BASE_MODEL_NAME,
10 device_map="auto",
11 torch_dtype=torch.float16,
12 output_attentions=True,
13 return_dict_in_generate=True,
14)
15model = PeftModel.from_pretrained(base_model, PEFT_MODEL_NAME).cuda()1
2def message_generic():
3 return (f"You are Data management plan expert. "
4 f"Please generate a sentence preceding the following Data Management Plan snippet. ")
5
6
7def message_specific(topic):
8 return message_generic() + f"You may talk about '{topic}'"
9
10
11topic_to_talk_about = "How will the data be stored?"
12context = "Some part of a DMP that we want to generate the previous sentence for."
13messages = [
14 {"role": "system",
15 "content": message_specific(topic_to_talk_about)}, # or message_generic()
16 {"role": "user", "content": context},
17]
18
19with torch.no_grad():
20 tokenized = tokenizer.apply_chat_template(
21 messages,
22 tokenize=True,
23 add_generation_prompt=True,
24 return_dict=True,
25 return_tensors="pt"
26 )
27 input_ids = tokenized['input_ids'].cuda()
28 output = model.generate(
29 input_ids,
30 attention_mask=tokenized['attention_mask'].cuda(),
31 max_new_tokens=200,
32 num_return_sequences=1,
33 do_sample=True,
34 temperature=1,
35 eos_token_id=tokenizer.eos_token_id,
36 pad_token_id=tokenizer.pad_token_id,
37 use_cache=True,
38 )
39 answer_ids = output[0][len(input_ids[0]):]
40 generated_text = tokenizer.decode(answer_ids, skip_special_tokens=True)
41 print(generated_text + context)