Views
No views yet
1import torch
2from transformers import AutoModelForCausalLM, AutoTokenizer, BitsAndBytesConfig
3from peft import PeftModel
4
5# Base model name
6base_model_name = "google/gemma-2b-it"
7adapter_model_name = "arumpuri/gemma-2b-alpaca-qlora-lora-adapter"
8
9# Load tokenizer
10tokenizer = AutoTokenizer.from_pretrained(base_model_name, trust_remote_code=True)
11tokenizer.pad_token = tokenizer.eos_token
12tokenizer.padding_side = "right"
13
14# Configure quantization (optional, for memory efficiency)
15bnb_config = BitsAndBytesConfig(
16 load_in_4bit=True,
17 bnb_4bit_quant_type="nf4",
18 bnb_4bit_compute_dtype=torch.float16,
19 bnb_4bit_use_double_quant=False,
20)
21
22# Load base model
23base_model = AutoModelForCausalLM.from_pretrained(
24 base_model_name,
25 quantization_config=bnb_config, # Remove this line if you don't want quantization
26 device_map="auto",
27 torch_dtype=torch.float16,
28 trust_remote_code=True
29)
30
31# Load LoRA adapter
32model = PeftModel.from_pretrained(base_model, adapter_model_name)
33
34def generate_response(prompt, max_new_tokens=256):
35 formatted_prompt = f"<|startofturn|>user\n{prompt}<|endofturn|>\n<|startofturn|>model\n"
36
37 inputs = tokenizer(formatted_prompt, return_tensors="pt").to(model.device)
38
39 with torch.no_grad():
40 outputs = model.generate(
41 **inputs,
42 max_new_tokens=max_new_tokens,
43 do_sample=True,
44 temperature=0.7,
45 top_p=0.9,
46 pad_token_id=tokenizer.pad_token_id,
47 eos_token_id=tokenizer.eos_token_id
48 )
49
50 response = tokenizer.decode(outputs[0], skip_special_tokens=True)
51 return response.split("<|startofturn|>model\n")[-1].split("<|endofturn|>")[0].strip()
52
53# Example usage
54prompt = "Explain machine learning in simple terms"
55response = generate_response(prompt)
56print(response)1import torch
2from transformers import AutoTokenizer
3from peft import AutoPeftModelForCausalLM
4
5# Load model and tokenizer
6model = AutoPeftModelForCausalLM.from_pretrained(
7 "arumpuri/gemma-2b-alpaca-qlora-lora-adapter",
8 torch_dtype=torch.float16,
9 device_map="auto"
10)
11tokenizer = AutoTokenizer.from_pretrained("arumpuri/gemma-2b-alpaca-qlora-lora-adapter")
12
13# Use the same generate_response function as above1from peft import PeftModel
2from transformers import AutoModelForCausalLM, AutoTokenizer
3
4# Load base model (without quantization for merging)
5base_model = AutoModelForCausalLM.from_pretrained(
6 "google/gemma-2b-it",
7 torch_dtype=torch.float16,
8 device_map="auto"
9)
10
11# Load adapter
12model = PeftModel.from_pretrained(base_model, "arumpuri/gemma-2b-alpaca-qlora-lora-adapter")
13
14# Merge and save
15merged_model = model.merge_and_unload()
16merged_model.save_pretrained("./merged_model")
17
18# Save tokenizer
19tokenizer = AutoTokenizer.from_pretrained("google/gemma-2b-it")
20tokenizer.save_pretrained("./merged_model")