Instructions to use Mr-Rosen/Accuracy-Is-Not-Enough-FinQA-RAG-QLoRA with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- PEFT
How to use Mr-Rosen/Accuracy-Is-Not-Enough-FinQA-RAG-QLoRA 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, "Mr-Rosen/Accuracy-Is-Not-Enough-FinQA-RAG-QLoRA") - Notebooks
- Google Colab
- Kaggle
| 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 | |
| - rag | |
| - finqa | |
| - finance | |
| - numerical-reasoning | |
| # FinQA Qwen2.5-7B RAG + QLoRA | |
| A QLoRA-trained adapter for structured FinQA program generation using retrieved financial context. | |
| Base model: | |
| `Qwen/Qwen2.5-7B-Instruct` | |
| ## Important Usage Requirement | |
| This adapter expects the project's RAG-style input. | |
| Training input: | |
| ```text | |
| RAG prompt | |
| + question | |
| + fixed retrieved context | |
| ↓ | |
| FinQA program | |
| ```` | |
| It was not trained as a full-document QLoRA model. | |
| Use the practical sorted retrieval artifacts and the selected RAG prompt when reproducing the reported result. | |
| ## Official Result | |
| | Metric | Final Test | | |
| | ------------------ | ---------------: | | |
| | Execution Accuracy | **59.90%** | | |
| | Program Accuracy | **55.97%** | | |
| | Parse Success | **100.00%** | | |
| | Parse Failures | 0 | | |
| | Average Latency | 0.5090 s/example | | |
| | Practical Score | 0.3809 | | |
| Selected checkpoint: | |
| `epoch_2_adapter` | |
| Official training burden: | |
| ```text | |
| Training time: approximately 2.23 hours | |
| Training cost: approximately $4.21 | |
| ``` | |
| ## Official Retrieval | |
| Use: | |
| ```text | |
| long_train_interleaved_plus_SORTED_retrieved.json | |
| long_dev_interleaved_plus_SORTED_retrieved.json | |
| long_test_interleaved_plus_SORTED_retrieved.json | |
| ``` | |
| from: | |
| `MarkPaulRosenthal/Accuracy-Is-Not-Enough-Practical-Financial-QA` | |
| The reported final-test result uses: | |
| `long_test_interleaved_plus_SORTED_retrieved.json` | |
| Do not substitute gold-injected retrieval when reporting official performance. | |
| ## Load Retrieval Data | |
| ```python | |
| import json | |
| with open( | |
| "long_test_interleaved_plus_SORTED_retrieved.json", | |
| "r", | |
| encoding="utf-8", | |
| ) as f: | |
| retrieved_test = json.load(f) | |
| record = retrieved_test[0] | |
| context = "\n".join( | |
| chunk["text"] | |
| for chunk in record["retrieved_chunks"] | |
| ) | |
| ``` | |
| Preserve the published chunk order. | |
| ## Prompt | |
| The selected prompt is included in this repository as: | |
| `RAG_BASELINE_L1_top3_adapted.json` | |
| ## QLoRA Training Configuration | |
| ```text | |
| load_in_4bit: true | |
| quantization: NF4 | |
| compute dtype: bfloat16 | |
| double quantization: true | |
| ``` | |
| 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 | |
| ``` | |
| ## 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-RAG-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-RAG-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() | |
| ``` | |
| ## Generate | |
| After rendering the retrieved question and context with the official RAG 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(", | |
| "60", | |
| "243", | |
| ")", | |
| "multiply(", | |
| "#0", | |
| "const_100", | |
| ")", | |
| "EOF" | |
| ] | |
| ``` | |
| ## Official Reproduction Checklist | |
| ```text | |
| Qwen/Qwen2.5-7B-Instruct | |
| Mr-Rosen/Accuracy-Is-Not-Enough-FinQA-RAG-QLoRA | |
| practical sorted retrieval JSON | |
| RAG_BASELINE_L1_top3_adapted | |
| deterministic generation | |
| FinQA program parsing | |
| original FinQA evaluator | |
| ``` | |
| ## QLoRA Note | |
| QLoRA is the training method. | |
| The released artifact is a PEFT adapter rather than a standalone 4-bit model. | |
| ## Oracle Retrieval | |
| Gold-injected retrieval files are supplemental diagnostic artifacts. | |
| They intentionally alter evidence availability and are not part of the official 59.90% execution-accuracy result. | |
| ## Related Repositories | |
| Dataset: | |
| `Mr-Rosen/Accuracy-Is-Not-Enough-FinQA-Dataset` | |
| Retrieval artifacts, prompt configuration, evaluator, and research results: | |
| `MarkPaulRosenthal/Accuracy-Is-Not-Enough-Practical-Financial-QA` | |
| ## Limitations | |
| This adapter depends on retrieval quality and on reproducing the retrieved-context prompt structure. | |
| Its measured performance represents the complete RAG + QLoRA system rather than adapter performance independent of retrieval. | |
| ## License | |
| The adapter is MIT licensed. | |
| The Qwen base model remains under its upstream license. | |
| The FinQA-derived dataset is separately released under CC BY 4.0. | |