import torchfrom transformers import AutoProcessor, AutoModelForImageTextToText, BitsAndBytesConfigfrom peft import PeftModel base = "Qwen/Qwen3-VL-4B-Instruct"proc = AutoProcessor.from_pretrained(base, revision="ebb281ec70b05090aa6165b016eac8ec08e71b17", min_pixels=12544, max_pixels=451584)model = AutoModelForImageTextToText.from_pretrained( base, revision="ebb281ec70b05090aa6165b016eac8ec08e71b17", device_map="auto", dtype=torch.float16, quantization_config=BitsAndBytesConfig(load_in_4bit=True, bnb_4bit_quant_type="nf4", bnb_4bit_compute_dtype=torch.float16, bnb_4bit_use_double_quant=True))model = PeftModel.from_pretrained(model, "Fragoa/qwen3-vl-4b-persian-book-title-qlora") # or subfolder="seed_1234" prompt = "عنوان اصلی فارسی کتاب را از روی جلد استخراج کن. فقط خود عنوان را بنویس؛ نام نویسنده، مترجم، ناشر و هیچ توضیح دیگری را ننویس."msgs = [{"role": "user", "content": [{"type": "image"}, {"type": "text", "text": prompt}]}]text = proc.apply_chat_template(msgs, tokenize=False, add_generation_prompt=True)inputs = proc(text=[text], images=[image], return_tensors="pt").to(model.device)out = model.generate(**inputs, max_new_tokens=40, do_sample=False)print(proc.batch_decode(out[:, inputs["input_ids"].shape[1]:], skip_special_tokens=True)[0])