Mr-Rosen's picture
Initial adapter release
daabaf9 verified
|
Raw
History Blame Contribute Delete
4.85 kB
---
base_model: Qwen/Qwen2.5-7B-Instruct
library_name: peft
pipeline_tag: text-generation
license: mit
datasets:
- Mr-Rosen/Accuracy-Is-Not-Enough-FinQA-Dataset
tags:
- peft
- qlora
- lora
- finqa
- finance
- numerical-reasoning
---
# FinQA Qwen2.5-7B QLoRA
A QLoRA-trained PEFT adapter for structured financial question answering over Natively Extended FinQA.
Base model:
`Qwen/Qwen2.5-7B-Instruct`
QLoRA achieved the highest final-test accuracy of all six methods in the accompanying study.
## Official Result
| Metric | Final Test |
|---|---:|
| Execution Accuracy | **73.32%** |
| Program Accuracy | **68.53%** |
| Parse Success | **100.00%** |
| Parse Failures | 0 |
| Average Latency | 0.5657 s/example |
Selected checkpoint:
`epoch_2_adapter`
Epoch 2 was selected using development execution accuracy before final test evaluation.
## Intended Input
This adapter was trained on full expanded FinQA context:
```text
question
+ pre_text
+ table
+ post_text
FinQA program
````
Training target:
`qa.program`
The selected prompt is included in this repository as:
`S2_financial_analyst_operation_reader.json`
## QLoRA Training Configuration
Base-model quantization during training:
```text
load_in_4bit: true
quantization type: NF4
compute dtype: bfloat16
double quantization: true
```
PEFT adapter:
```text
rank: 64
alpha: 32
dropout: 0.05
bias: none
task type: CAUSAL_LM
```
Target modules:
```text
q_proj
k_proj
v_proj
o_proj
gate_proj
up_proj
down_proj
```
## Official Training Burden
```text
Training time: approximately 19.28 hours
Training cost: approximately $36.43
Epochs completed: 3
```
## QLoRA vs. Quantized Inference
QLoRA describes how the adapter was trained.
The released artifact is a PEFT adapter, not a standalone quantized copy of Qwen2.5-7B-Instruct.
The base model can be loaded in standard precision for inference or optionally loaded in a supported 4-bit configuration.
## Standard Loading
```bash
pip install torch transformers peft accelerate safetensors
```
```python
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
from peft import PeftModel
BASE_MODEL = "Qwen/Qwen2.5-7B-Instruct"
ADAPTER = "Mr-Rosen/Accuracy-Is-Not-Enough-FinQA-QLoRA"
tokenizer = AutoTokenizer.from_pretrained(BASE_MODEL)
base_model = AutoModelForCausalLM.from_pretrained(
BASE_MODEL,
torch_dtype=torch.bfloat16,
device_map="auto",
)
model = PeftModel.from_pretrained(
base_model,
ADAPTER,
)
model.eval()
```
## Optional 4-Bit Base-Model Loading
```bash
pip install bitsandbytes
```
```python
import torch
from transformers import (
AutoModelForCausalLM,
AutoTokenizer,
BitsAndBytesConfig,
)
from peft import PeftModel
BASE_MODEL = "Qwen/Qwen2.5-7B-Instruct"
ADAPTER = "Mr-Rosen/Accuracy-Is-Not-Enough-FinQA-QLoRA"
quantization_config = BitsAndBytesConfig(
load_in_4bit=True,
bnb_4bit_quant_type="nf4",
bnb_4bit_compute_dtype=torch.bfloat16,
bnb_4bit_use_double_quant=True,
)
tokenizer = AutoTokenizer.from_pretrained(BASE_MODEL)
base_model = AutoModelForCausalLM.from_pretrained(
BASE_MODEL,
quantization_config=quantization_config,
device_map="auto",
)
model = PeftModel.from_pretrained(
base_model,
ADAPTER,
)
model.eval()
```
## Prepare Input
Use:
```text
qa.question
pre_text
table
post_text
```
through the official `S2_financial_analyst_operation_reader` template.
Do not expose:
```text
qa.program
qa.exe_ans
qa.gold_inds
```
during normal validation or test inference.
## Generate
After constructing the exact `rendered_prompt`:
```python
inputs = tokenizer(
rendered_prompt,
return_tensors="pt",
).to(model.device)
with torch.no_grad():
output = model.generate(
**inputs,
max_new_tokens=256,
do_sample=False,
)
generated = output[0, inputs["input_ids"].shape[-1]:]
print(
tokenizer.decode(
generated,
skip_special_tokens=True,
)
)
```
## Expected Output
```json
["divide(", "637", "const_5", ")", "EOF"]
```
## Evaluation
Convert parsed output to the standard FinQA prediction structure and score it with the original FinQA evaluator.
## Related Repositories
Dataset:
`Mr-Rosen/Accuracy-Is-Not-Enough-FinQA-Dataset`
Research code, prompt, evaluator, results, and paper materials:
`MarkPaulRosenthal/Accuracy-Is-Not-Enough-Practical-Financial-QA`
## Limitations
The 73.32% result is specific to the Natively Extended FinQA test set and the experimental configuration used in the accompanying study.
Broader financial-document performance requires separate evaluation.
## License
The adapter is MIT licensed.
The base Qwen model remains under its upstream license.
The FinQA-derived training dataset is separately released under CC BY 4.0.