Views
No views yet
1from transformers import AutoTokenizer, AutoModelForCausalLM, BitsAndBytesConfig
2from peft import PeftModel
3import torch
4
5# Load base model
6base_model_name = "google/gemma-2b"
7tokenizer = AutoTokenizer.from_pretrained(base_model_name)
8
9bnb_config = BitsAndBytesConfig(
10load_in_4bit=True,
11bnb_4bit_compute_dtype=torch.float16,
12bnb_4bit_quant_type="nf4",
13)
14
15base_model = AutoModelForCausalLM.from_pretrained(
16base_model_name,
17quantization_config=bnb_config,
18device_map="auto"
19)
20
21# Load adapter
22model = PeftModel.from_pretrained(base_model, "Jayeshbankoti/potterhead_gpt")
23
24# Format prompt
25def format_prompt(question, persona="general"):
26if persona.lower() == "general":
27 system_prompt = "You are an expert on the Harry Potter universe."
28else:
29 system_prompt = f"You are {persona}. Respond in their unique tone and worldview."
30
31return f"<bos><start_of_turn>system\n{system_prompt}<end_of_turn>\n<start_of_turn>user\n{question}<end_of_turn>\n<start_of_turn>model\n"
32
33# Generate answer
34question = "What is the significance of the Patronus charm?"
35persona = "Hermione Granger"
36prompt = format_prompt(question, persona)
37
38inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
39outputs = model.generate(**inputs, max_new_tokens=512, temperature=0.7)
40answer = tokenizer.decode(outputs[0][inputs['input_ids'].shape[1]:], skip_special_tokens=True)
41print(answer)