Views
No views yet
SFTTrainerq_proj, k_proj, v_proj, o_proj, gate_proj, up_proj, down_proj1from transformers import AutoTokenizer, AutoModelForCausalLM, BitsAndBytesConfig
2from peft import PeftModel
3import torch
4
5base_model = "Qwen/Qwen2.5-7B-Instruct"
6adapter = "Kurapika993/qwen2.5-7b-qlora-dolly15k"
7
8bnb_config = BitsAndBytesConfig(
9 load_in_4bit=True,
10 bnb_4bit_quant_type="nf4",
11 bnb_4bit_compute_dtype=torch.bfloat16,
12 bnb_4bit_use_double_quant=True,
13)
14
15tokenizer = AutoTokenizer.from_pretrained(adapter)
16
17model = AutoModelForCausalLM.from_pretrained(
18 base_model,
19 quantization_config=bnb_config,
20 device_map="auto",
21 trust_remote_code=True,
22)
23
24model = PeftModel.from_pretrained(model, adapter)
25model.eval()
26
27def generate_response(model, tokenizer, user_prompt, max_new_tokens=250):
28 messages = [
29 {
30 "role": "system",
31 "content": "You are a helpful assistant."
32 },
33 {
34 "role": "user",
35 "content": user_prompt
36 }
37 ]
38
39 text = tokenizer.apply_chat_template(
40 messages,
41 tokenize=False,
42 add_generation_prompt=True
43 )
44
45 inputs = tokenizer(
46 text,
47 return_tensors="pt"
48 ).to(model.device)
49
50 with torch.no_grad():
51 outputs = model.generate(
52 **inputs,
53 max_new_tokens=max_new_tokens,
54 do_sample=True,
55 temperature=0.7,
56 top_p=0.9,
57 repetition_penalty=1.05,
58 pad_token_id=tokenizer.eos_token_id,
59 )
60
61
62 generated_tokens = outputs[0][inputs["input_ids"].shape[-1]:]
63 response = tokenizer.decode(generated_tokens, skip_special_tokens=True)
64
65 return response.strip()
66
67prompt = "Explain instruction tuning to a beginner using a simple analogy."
68
69response = generate_response(model, tokenizer, prompt)
70print(response)