import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
from peft import PeftModel
ADAPTER = "Hookem22/qwen3-4b-subtitle-es-v3-lora"
tok = AutoTokenizer.from_pretrained(ADAPTER)
base = AutoModelForCausalLM.from_pretrained("Qwen/Qwen3-4B", dtype=torch.float16)
model = PeftModel.from_pretrained(base, ADAPTER).eval()
device = ("cuda" if torch.cuda.is_available()
else "mps" if torch.backends.mps.is_available() else "cpu")
model.to(device)
SYSTEM = ("Translate these subtitles from English to Spanish. Output exactly one "
"Spanish line per source line, and keep every line to 42 characters or fewer.")
english_scene = """\
I need the report by Friday.
That's not enough time.
Then ask Marcus for help."""
messages = [{"role": "system", "content": SYSTEM},
{"role": "user", "content": english_scene}]
prompt = tok.apply_chat_template(messages, tokenize=False,
add_generation_prompt=True,
enable_thinking=False)
inputs = tok(prompt, return_tensors="pt").to(device)
with torch.no_grad():
out = model.generate(**inputs, max_new_tokens=1024, do_sample=False,
pad_token_id=tok.eos_token_id)
print(tok.decode(out[0][inputs["input_ids"].shape[1]:],
skip_special_tokens=True).strip())