File size: 3,193 Bytes
e6fcea3 e74983c 1d0d476 e74983c 1d0d476 4a76cc8 1d0d476 4a76cc8 1d0d476 e74983c 713f465 e74983c b614623 e74983c b614623 040a0c7 93ba5e9 e6fcea3 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 |
---
library_name: transformers
tags: []
---
### Model Description
``` python
import os
import torch
import pandas as pd
from datasets import Dataset
from trl import SFTTrainer
from huggingface_hub import login
import re
from peft import LoraConfig, get_peft_model
import numpy as np
from transformers import (
AutoTokenizer,
Llama4ForConditionalGeneration,
BitsAndBytesConfig,
TrainingArguments,
DataCollatorForLanguageModeling,
AutoModelForCausalLM
)
#should install transformers 4.51.3
hf_token = "xxxxxxxxxxxxxxxxxxxxxxxxxxxe"
login(hf_token)
model_id = "NYUAD-ComNets/NYUAD_Llama4_Inheritance_Solver"
# Load tokenizer and model
tokenizer = AutoTokenizer.from_pretrained(model_id, trust_remote_code=True)
model = Llama4ForConditionalGeneration.from_pretrained(
model_id,
device_map="auto",
torch_dtype=torch.bfloat16,
trust_remote_code=True
)
# Template for inference prompt
inference_prompt_template = """Answer the following question using a single word only from this list A, B, C, D, E, F. Do not add details.
### Context:
{}
### Response:
{}"""
def generate_answer(context):
prompt = inference_prompt_template.format(context, "")
inputs = tokenizer(prompt + tokenizer.eos_token, return_tensors="pt").to("cuda")
with torch.no_grad():
outputs = model.generate(
input_ids=inputs["input_ids"],
attention_mask=inputs["attention_mask"],
max_new_tokens=10,
eos_token_id=tokenizer.eos_token_id,
use_cache=True,
temperature =0.1,
top_p=1
)
response = tokenizer.batch_decode(outputs, skip_special_tokens=True)
print(response)
response = response[0].split("### Response:")[1][-1]
df=pd.read_csv('/path_to/islamic_inheritance_problem.csv.csv')
for k,o1,o2,o3,o4,o5,o6 in zip(df.question.values
,df.option1.values,df.option2.values
,df.option3.values,df.option4.values
,df.option5.values,df.option6.values):
example = k+' '+o1+' '+o2+' '+o3+' '+o4+' '+o5+' '+o6
predicted_label = generate_answer(example)
print("Predicted:", predicted_label)
```
### Training hyperparameters
- Low-Rank Adaptation (LoRA)
- training = 7 epochs
- learning rate = 0.0002
- batch sizes = 1 per device
- gradient accumulation steps = 1.
- The optimizer "paged_adamw_32bit"
- 10 warmup steps
- 4-bit quantization with the NormalFloat 4 format
## Model Card Contact
nouar.aldahoul@nyu.edu
# BibTeX entry and citation info
```
@inproceedings{aldahoul2025nyuad,
title={Nyuad at qias shared task: Benchmarking the legal reasoning of llms in arabic islamic inheritance cases},
author={AlDahoul, Nouar and Zaki, Yasir},
booktitle={Proceedings of The Third Arabic Natural Language Processing Conference: Shared Tasks},
pages={861--866},
year={2025}
}
@article{aldahoul2025benchmarking,
title={Benchmarking the Legal Reasoning of LLMs in Arabic Islamic Inheritance Cases},
author={AlDahoul, Nouar and Zaki, Yasir},
journal={arXiv preprint arXiv:2508.15796},
year={2025}
}
|