import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
from peft import PeftModel
base, adapter = "Qwen/Qwen3-4B", "Neobe/en-dhivehi-qwen3-4b-lora-sentence"
tok = AutoTokenizer.from_pretrained(adapter)
model = PeftModel.from_pretrained(
AutoModelForCausalLM.from_pretrained(base, torch_dtype=torch.bfloat16, device_map="cuda"),
adapter).eval()
src = "The President of the Maldives met with the cabinet today."
msgs = [{"role":"user","content":
"Translate the following English text to Dhivehi. Output only the translation, "
f"no explanations.\n\nEnglish: {src}\nDhivehi:"}]
prompt = tok.apply_chat_template(msgs, tokenize=False, add_generation_prompt=True)
inp = tok(prompt, return_tensors="pt", truncation=True, max_length=3072).to("cuda")
out = model.generate(**inp, max_new_tokens=1024, num_beams=1, repetition_penalty=1.15, no_repeat_ngram_size=0, length_penalty=1.0, do_sample=False)
print(tok.decode(out[0][inp["input_ids"].shape[1]:], skip_special_tokens=True))