UBC-NLP/palmx_2025_subtask2_islamic
Viewer • Updated • 1.9k • 27
How to use rafiulbiswas/qwen-islamic-expert with PEFT:
from peft import PeftModel
from transformers import AutoModelForCausalLM
base_model = AutoModelForCausalLM.from_pretrained("Qwen/Qwen2.5-7B-Instruct")
model = PeftModel.from_pretrained(base_model, "rafiulbiswas/qwen-islamic-expert")Qwen Islamic Expert is a specialized LoRA (Low-Rank Adaptation) fine-tuned model based on Qwen/Qwen2.5-7B-Instruct, designed to provide accurate and comprehensive knowledge about Islamic culture, history, traditions, and civilization.
This model has been specifically trained to understand and respond to questions about:
| Metric | Score | Comparison |
|---|---|---|
| Validation Accuracy | 72.3% | 🏆 Beats NileChat-3B baseline (69.5%) |
| Improvement over baseline | +2.8% | ✅ Significant improvement |
| Cultural Understanding | High | ✅ Specialized Islamic knowledge |
| Multilingual Support | Arabic/English | ✅ Bilingual capabilities |
pip install torch transformers peft accelerate bitsandbytes
from transformers import AutoModelForCausalLM, AutoTokenizer
from peft import PeftModel
import torch
# Load base model with quantization for memory efficiency
base_model = AutoModelForCausalLM.from_pretrained(
"Qwen/Qwen2.5-7B-Instruct",
torch_dtype=torch.bfloat16,
device_map="auto",
load_in_4bit=True
)
# Load tokenizer
tokenizer = AutoTokenizer.from_pretrained("Qwen/Qwen2.5-7B-Instruct")
# Load the Islamic Expert LoRA adapter
model = PeftModel.from_pretrained(
base_model,
"rafiulbiswas/qwen-islamic-expert",
torch_dtype=torch.bfloat16
)
# Set to evaluation mode
model.eval()
def ask_islamic_question(question, options=None):
if options:
# Multiple choice format
prompt = f'''<|im_start|>system
أنت عالم متخصص في الثقافة الإسلامية والحضارة الإسلامية.<|im_end|>
<|im_start|>user
{question}
A. {options[0]}
B. {options[1]}
C. {options[2]}
D. {options[3]}
بناءً على معرفتك العميقة بالثقافة الإسلامية، ما هي الإجابة الصحيحة؟<|im_end|>
<|im_start|>assistant
'''
else:
# Open-ended question
prompt = f'''<|im_start|>system
أنت عالم متخصص في الثقافة الإسلامية والحضارة الإسلامية.<|im_end|>
<|im_start|>user
{question}<|im_end|>
<|im_start|>assistant
'''
inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
with torch.no_grad():
outputs = model.generate(
**inputs,
max_new_tokens=150,
temperature=0.7,
do_sample=True,
pad_token_id=tokenizer.eos_token_id
)
response = tokenizer.decode(outputs[0][inputs.input_ids.shape[1]:], skip_special_tokens=True)
return response.strip()
# Example 1: Multiple Choice Question
question = "ما هي أركان الإسلام الخمسة؟"
options = [
"الصلاة والزكاة والصوم والحج والشهادة",
"القرآن والسنة والإجماع والقياس والمصلحة",
"الإيمان والإسلام والإحسان والقدر والبعث",
"العدل والحرية والمساواة والشورى والكرامة"
]
answer = ask_islamic_question(question, options)
print(f"الجواب: {answer}")
# Example 2: Open-ended Question
question = "اشرح مفهوم العدالة في الإسلام"
answer = ask_islamic_question(question)
print(f"الجواب: {answer}")
If you use this model in your research or applications, please cite:
@misc{qwen-islamic-expert-2024,
title={Qwen Islamic Expert: A Specialized Cultural Knowledge Model},
author={Md.Rafiul Biswas, Kais Attia, Shimaa Ibrahim, Mabrouka Bessghaier, Firoj Alam, and Wajdi Zaghouani},
year={2024},
howpublished={Hugging Face Model Hub},
url={https://huggingface.co/rafiulbiswas/qwen-islamic-expert}
}
This model is designed to promote understanding and education about Islamic culture and civilization. Please use responsibly and consult qualified scholars for religious guidance.