Views
No views yet
Qwen/Qwen2.5-7B-Instruct1RAG prompt
2+ question
3+ fixed retrieved context
4 ↓
5FinQA program| 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 |
epoch_2_adapter1Training time: approximately 2.23 hours
2Training cost: approximately $4.211long_train_interleaved_plus_SORTED_retrieved.json
2long_dev_interleaved_plus_SORTED_retrieved.json
3long_test_interleaved_plus_SORTED_retrieved.jsonMarkPaulRosenthal/Accuracy-Is-Not-Enough-Practical-Financial-QAlong_test_interleaved_plus_SORTED_retrieved.json1import json
2
3with open(
4 "long_test_interleaved_plus_SORTED_retrieved.json",
5 "r",
6 encoding="utf-8",
7) as f:
8 retrieved_test = json.load(f)
9
10record = retrieved_test[0]
11
12context = "\n".join(
13 chunk["text"]
14 for chunk in record["retrieved_chunks"]
15)RAG_BASELINE_L1_top3_adapted.json1load_in_4bit: true
2quantization: NF4
3compute dtype: bfloat16
4double quantization: true1rank: 64
2alpha: 32
3dropout: 0.05
4bias: none
5task type: CAUSAL_LM1q_proj
2k_proj
3v_proj
4o_proj
5gate_proj
6up_proj
7down_projpip install torch transformers peft accelerate safetensors1import torch
2from transformers import AutoModelForCausalLM, AutoTokenizer
3from peft import PeftModel
4
5BASE_MODEL = "Qwen/Qwen2.5-7B-Instruct"
6ADAPTER = "Mr-Rosen/Accuracy-Is-Not-Enough-FinQA-RAG-QLoRA"
7
8tokenizer = AutoTokenizer.from_pretrained(BASE_MODEL)
9
10base_model = AutoModelForCausalLM.from_pretrained(
11 BASE_MODEL,
12 torch_dtype=torch.bfloat16,
13 device_map="auto",
14)
15
16model = PeftModel.from_pretrained(
17 base_model,
18 ADAPTER,
19)
20
21model.eval()pip install bitsandbytes1import torch
2from transformers import (
3 AutoModelForCausalLM,
4 AutoTokenizer,
5 BitsAndBytesConfig,
6)
7from peft import PeftModel
8
9BASE_MODEL = "Qwen/Qwen2.5-7B-Instruct"
10ADAPTER = "Mr-Rosen/Accuracy-Is-Not-Enough-FinQA-RAG-QLoRA"
11
12quantization_config = BitsAndBytesConfig(
13 load_in_4bit=True,
14 bnb_4bit_quant_type="nf4",
15 bnb_4bit_compute_dtype=torch.bfloat16,
16 bnb_4bit_use_double_quant=True,
17)
18
19tokenizer = AutoTokenizer.from_pretrained(BASE_MODEL)
20
21base_model = AutoModelForCausalLM.from_pretrained(
22 BASE_MODEL,
23 quantization_config=quantization_config,
24 device_map="auto",
25)
26
27model = PeftModel.from_pretrained(
28 base_model,
29 ADAPTER,
30)
31
32model.eval()1inputs = tokenizer(
2 rendered_prompt,
3 return_tensors="pt",
4).to(model.device)
5
6with torch.no_grad():
7 output = model.generate(
8 **inputs,
9 max_new_tokens=256,
10 do_sample=False,
11 )
12
13generated = output[0, inputs["input_ids"].shape[-1]:]
14
15print(
16 tokenizer.decode(
17 generated,
18 skip_special_tokens=True,
19 )
20)1[
2 "divide(",
3 "60",
4 "243",
5 ")",
6 "multiply(",
7 "#0",
8 "const_100",
9 ")",
10 "EOF"
11]1Qwen/Qwen2.5-7B-Instruct
2Mr-Rosen/Accuracy-Is-Not-Enough-FinQA-RAG-QLoRA
3practical sorted retrieval JSON
4RAG_BASELINE_L1_top3_adapted
5deterministic generation
6FinQA program parsing
7original FinQA evaluatorMr-Rosen/Accuracy-Is-Not-Enough-FinQA-DatasetMarkPaulRosenthal/Accuracy-Is-Not-Enough-Practical-Financial-QA