UBC-NLP/palmx_2025_subtask2_islamic
Viewer • Updated • 1.9k • 30
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.
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")