import torch
from peft import PeftModel
from transformers import (
AutoModelForCausalLM,
AutoTokenizer,
)
BASE_MODEL_ID = "Qwen/Qwen3.5-2B-Base"
ADAPTER_ID = "artyomboyko/qwen3.5-2b-sst2-prompt-tuning"
tokenizer = (
AutoTokenizer.from_pretrained(
BASE_MODEL_ID
)
)
if tokenizer.pad_token_id is None:
tokenizer.pad_token = (
tokenizer.eos_token
)
base_model = (
AutoModelForCausalLM
.from_pretrained(
BASE_MODEL_ID,
dtype="auto",
)
)
model = PeftModel.from_pretrained(
base_model,
ADAPTER_ID,
)
device = torch.device(
"cuda"
if torch.cuda.is_available()
else "cpu"
)
model = model.to(device)
model.eval()
review = (
"a wonderfully acted "
"and moving story"
)
prompt = (
"Classify the sentiment of this movie review as positive or negative.\n"
f"Review: {review}\n"
"Sentiment:"
)
inputs = tokenizer(
prompt,
return_tensors="pt",
).to(device)
with torch.inference_mode():
outputs = model.generate(
**inputs,
max_new_tokens=4,
do_sample=False,
pad_token_id=(
tokenizer.eos_token_id
),
)
generated = outputs[
:,
inputs["input_ids"].shape[1]:,
]
prediction = tokenizer.decode(
generated[0],
skip_special_tokens=True,
).strip()
print(prediction)