lora-fine-tuning / bert /inference.py
yusiwen's picture
docs: add LICENSE, README, and author/license headers to all source files
022cf0f
Raw
History Blame Contribute Delete
1.39 kB
# Author: Siwen Yu (yusiwen@gmail.com)
# License: MIT
import torch
from transformers import AutoTokenizer, AutoModelForSequenceClassification
from peft import PeftModel, PeftConfig
# 1. Define paths
base_model_path = "bert-base-uncased"
lora_weights_path = "./my_saved_lora"
# 2. Load tokenizer and the clean, base model
tokenizer = AutoTokenizer.from_pretrained(lora_weights_path)
base_model = AutoModelForSequenceClassification.from_pretrained(base_model_path, num_labels=2)
# 3. Mathematically merge the LoRA weights on top of the base model
model = PeftModel.from_pretrained(base_model, lora_weights_path)
model = model.to("cuda")
model.eval() # Set to evaluation mode
# 4. Run custom evaluation samples
test_sentences = [
"This movie was an absolute masterpiece with breathtaking visuals!", # Expect Positive (1)
"A total waste of time. The acting was horrible and the plot made no sense." # Expect Negative (0)
]
print("\n--- Running Validation Inference ---")
for text in test_sentences:
inputs = tokenizer(text, return_tensors="pt", padding=True, truncation=True, max_length=128).to("cuda")
with torch.no_grad():
outputs = model(**inputs)
prediction = torch.argmax(outputs.logits, dim=-1).item()
sentiment = "Positive" if prediction == 1 else "Negative"
print(f"Review: '{text}' -> Predicted Sentiment: {sentiment}")