Views
No views yet
desc_sin_p)1from transformers import AutoProcessor, Gemma3ForConditionalGeneration, BitsAndBytesConfig
2from peft import PeftModel
3import torch
4
5bnb_config = BitsAndBytesConfig(
6 load_in_4bit=True,
7 bnb_4bit_quant_type="nf4",
8 bnb_4bit_use_double_quant=True,
9 bnb_4bit_compute_dtype=torch.bfloat16,
10)
11
12base_model = Gemma3ForConditionalGeneration.from_pretrained(
13 "google/gemma-3-4b-it",
14 device_map="auto",
15 quantization_config=bnb_config,
16 torch_dtype=torch.bfloat16,
17).eval()
18
19processor = AutoProcessor.from_pretrained("Siluni/gemma3-4b-mixed-33k-desc")
20model = PeftModel.from_pretrained(base_model, "Siluni/gemma3-4b-mixed-33k-desc").eval()1from PIL import Image
2import requests
3
4# Load any image
5image = Image.open("your_image.jpg").convert("RGB")
6question = "රූපයේ ඇත්තේ කුමක්ද?" # "What is in the image?"
7
8messages = [
9 {
10 "role": "user",
11 "content": [
12 {"type": "image", "image": image},
13 {"type": "text", "text": question},
14 ],
15 }
16]
17
18inputs = processor.apply_chat_template(
19 messages,
20 add_generation_prompt=True,
21 tokenize=True,
22 return_dict=True,
23 return_tensors="pt",
24 padding=True,
25).to(model.device)
26
27# Gemma-3 requires token_type_ids
28if "token_type_ids" not in inputs:
29 import torch
30 inputs["token_type_ids"] = torch.zeros_like(inputs["input_ids"])
31
32input_len = inputs["input_ids"].shape[-1]
33
34with torch.inference_mode():
35 output = model.generate(**inputs, max_new_tokens=128, do_sample=False)
36
37answer = processor.decode(output[0][input_len:], skip_special_tokens=True).strip()
38print(answer)1@misc{keerthiratne2025sinhalavqa,
2 title = {Benchmarking and Adapting Compact Multimodal Models for Sinhala Visual Question Answering},
3 author = {Keerthiratne, Siluni and Weerasinghe, Ruvan and Sumanathilaka, Deshan},
4 year = {2025},
5 institution = {Informatics Institute of Technology / Robert Gordon University},
6}