Downloads · 30 days
5
17% of all-time downloads
arumpuri/gemma-2b-alpaca-qlora-lora-adapter
gemma-2b-alpaca-qlora-lora-adapter is a text generation model from arumpuri. Use it when you need the model to write or continue text. It is set up for peft. The card lists the license as apache-2.0.
This repository contains a LoRA (Low-Rank Adaptation) adapter for google/gemma-2b-it fine-tuned on the Alpaca dataset using QLoRA (Quantized Low-Rank Adaptation).
Downloads · 30 days
5
17% of all-time downloads
All-time downloads
30
Public
Repo size
4.3 GB
Likes
0
Public
Click a slice to open those files.
.safetensors4.3 GB · 99%
From the Hugging Face model README
This repository contains a LoRA (Low-Rank Adaptation) adapter for google/gemma-2b-it fine-tuned on the Alpaca dataset using QLoRA (Quantized Low-Rank Adaptation).
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer, BitsAndBytesConfig
from peft import PeftModel
# Base model name
base_model_name = "google/gemma-2b-it"
adapter_model_name = "arumpuri/gemma-2b-alpaca-qlora-lora-adapter"
# Load tokenizer
tokenizer = AutoTokenizer.from_pretrained(base_model_name, trust_remote_code=True)
tokenizer.pad_token = tokenizer.eos_token
tokenizer.padding_side = "right"
# Configure quantization (optional, for memory efficiency)
bnb_config = BitsAndBytesConfig(
load_in_4bit=True,
bnb_4bit_quant_type="nf4",
bnb_4bit_compute_dtype=torch.float16,
bnb_4bit_use_double_quant=False,
)
# Load base model
base_model = AutoModelForCausalLM.from_pretrained(
base_model_name,
quantization_config=bnb_config, # Remove this line if you don't want quantization
device_map="auto",
torch_dtype=torch.float16,
trust_remote_code=True
)
# Load LoRA adapter
model = PeftModel.from_pretrained(base_model, adapter_model_name)
def generate_response(prompt, max_new_tokens=256):
formatted_prompt = f"<|startofturn|>user\n{prompt}<|endofturn|>\n<|startofturn|>model\n"
inputs = tokenizer(formatted_prompt, return_tensors="pt").to(model.device)
with torch.no_grad():
outputs = model.generate(
**inputs,
max_new_tokens=max_new_tokens,
do_sample=True,
temperature=0.7,
top_p=0.9,
pad_token_id=tokenizer.pad_token_id,
eos_token_id=tokenizer.eos_token_id
)
response = tokenizer.decode(outputs[0], skip_special_tokens=True)
return response.split("<|startofturn|>model\n")[-1].split("<|endofturn|>")[0].strip()
# Example usage
prompt = "Explain machine learning in simple terms"
response = generate_response(prompt)
print(response)
import torch
from transformers import AutoTokenizer
from peft import AutoPeftModelForCausalLM
# Load model and tokenizer
model = AutoPeftModelForCausalLM.from_pretrained(
"arumpuri/gemma-2b-alpaca-qlora-lora-adapter",
torch_dtype=torch.float16,
device_map="auto"
)
tokenizer = AutoTokenizer.from_pretrained("arumpuri/gemma-2b-alpaca-qlora-lora-adapter")
# Use the same generate_response function as above
This LoRA adapter is significantly smaller than a full model:
This adapter was trained on Google Colab Free Tier with the following optimizations:
If you need the full merged model and have sufficient memory:
from peft import PeftModel
from transformers import AutoModelForCausalLM, AutoTokenizer
# Load base model (without quantization for merging)
base_model = AutoModelForCausalLM.from_pretrained(
"google/gemma-2b-it",
torch_dtype=torch.float16,
device_map="auto"
)
# Load adapter
model = PeftModel.from_pretrained(base_model, "arumpuri/gemma-2b-alpaca-qlora-lora-adapter")
# Merge and save
merged_model = model.merge_and_unload()
merged_model.save_pretrained("./merged_model")
# Save tokenizer
tokenizer = AutoTokenizer.from_pretrained("google/gemma-2b-it")
tokenizer.save_pretrained("./merged_model")