Saravanankannan commited on
Commit
64d8f7d
·
verified ·
1 Parent(s): acd7b65

Update README.md

Browse files
Files changed (1) hide show
  1. README.md +61 -171
README.md CHANGED
@@ -8,202 +8,92 @@ tags:
8
  - sft
9
  - transformers
10
  - trl
 
 
 
 
 
 
11
  ---
12
 
13
- # Model Card for Model ID
14
-
15
- <!-- Provide a quick summary of what the model is/does. -->
16
-
17
-
18
 
19
  ## Model Details
20
 
21
  ### Model Description
22
 
23
- <!-- Provide a longer summary of what this model is. -->
24
-
25
-
26
 
27
- - **Developed by:** [More Information Needed]
28
- - **Funded by [optional]:** [More Information Needed]
29
- - **Shared by [optional]:** [More Information Needed]
30
- - **Model type:** [More Information Needed]
31
- - **Language(s) (NLP):** [More Information Needed]
32
- - **License:** [More Information Needed]
33
- - **Finetuned from model [optional]:** [More Information Needed]
34
 
35
- ### Model Sources [optional]
 
 
 
 
36
 
37
- <!-- Provide the basic links for the model. -->
38
 
39
- - **Repository:** [More Information Needed]
40
- - **Paper [optional]:** [More Information Needed]
41
- - **Demo [optional]:** [More Information Needed]
42
 
43
  ## Uses
44
 
45
- <!-- Address questions around how the model is intended to be used, including the foreseeable users of the model and those affected by the model. -->
46
-
47
  ### Direct Use
48
 
49
- <!-- This section is for the model use without fine-tuning or plugging into a larger ecosystem/app. -->
50
-
51
- [More Information Needed]
52
-
53
- ### Downstream Use [optional]
54
-
55
- <!-- This section is for the model use when fine-tuned for a task, or when plugged into a larger ecosystem/app -->
56
-
57
- [More Information Needed]
58
 
59
  ### Out-of-Scope Use
60
 
61
- <!-- This section addresses misuse, malicious use, and uses that the model will not work well for. -->
62
-
63
- [More Information Needed]
64
 
65
  ## Bias, Risks, and Limitations
66
 
67
- <!-- This section is meant to convey both technical and sociotechnical limitations. -->
68
-
69
- [More Information Needed]
70
 
71
  ### Recommendations
72
 
73
- <!-- This section is meant to convey recommendations with respect to the bias, risk, and technical limitations. -->
74
-
75
- Users (both direct and downstream) should be made aware of the risks, biases and limitations of the model. More information needed for further recommendations.
76
 
77
  ## How to Get Started with the Model
78
 
79
- Use the code below to get started with the model.
80
-
81
- [More Information Needed]
82
-
83
- ## Training Details
84
-
85
- ### Training Data
86
-
87
- <!-- This should link to a Dataset Card, perhaps with a short stub of information on what the training data is all about as well as documentation related to data pre-processing or additional filtering. -->
88
-
89
- [More Information Needed]
90
-
91
- ### Training Procedure
92
-
93
- <!-- This relates heavily to the Technical Specifications. Content here should link to that section when it is relevant to the training procedure. -->
94
-
95
- #### Preprocessing [optional]
96
-
97
- [More Information Needed]
98
-
99
-
100
- #### Training Hyperparameters
101
-
102
- - **Training regime:** [More Information Needed] <!--fp32, fp16 mixed precision, bf16 mixed precision, bf16 non-mixed precision, fp16 non-mixed precision, fp8 mixed precision -->
103
-
104
- #### Speeds, Sizes, Times [optional]
105
-
106
- <!-- This section provides information about throughput, start/end time, checkpoint size if relevant, etc. -->
107
-
108
- [More Information Needed]
109
-
110
- ## Evaluation
111
-
112
- <!-- This section describes the evaluation protocols and provides the results. -->
113
-
114
- ### Testing Data, Factors & Metrics
115
-
116
- #### Testing Data
117
-
118
- <!-- This should link to a Dataset Card if possible. -->
119
-
120
- [More Information Needed]
121
-
122
- #### Factors
123
-
124
- <!-- These are the things the evaluation is disaggregating by, e.g., subpopulations or domains. -->
125
-
126
- [More Information Needed]
127
-
128
- #### Metrics
129
-
130
- <!-- These are the evaluation metrics being used, ideally with a description of why. -->
131
-
132
- [More Information Needed]
133
-
134
- ### Results
135
-
136
- [More Information Needed]
137
-
138
- #### Summary
139
-
140
-
141
-
142
- ## Model Examination [optional]
143
-
144
- <!-- Relevant interpretability work for the model goes here -->
145
-
146
- [More Information Needed]
147
-
148
- ## Environmental Impact
149
-
150
- <!-- Total emissions (in grams of CO2eq) and additional considerations, such as electricity usage, go here. Edit the suggested text below accordingly -->
151
-
152
- Carbon emissions can be estimated using the [Machine Learning Impact calculator](https://mlco2.github.io/impact#compute) presented in [Lacoste et al. (2019)](https://arxiv.org/abs/1910.09700).
153
-
154
- - **Hardware Type:** [More Information Needed]
155
- - **Hours used:** [More Information Needed]
156
- - **Cloud Provider:** [More Information Needed]
157
- - **Compute Region:** [More Information Needed]
158
- - **Carbon Emitted:** [More Information Needed]
159
-
160
- ## Technical Specifications [optional]
161
-
162
- ### Model Architecture and Objective
163
-
164
- [More Information Needed]
165
-
166
- ### Compute Infrastructure
167
-
168
- [More Information Needed]
169
-
170
- #### Hardware
171
-
172
- [More Information Needed]
173
-
174
- #### Software
175
-
176
- [More Information Needed]
177
-
178
- ## Citation [optional]
179
-
180
- <!-- If there is a paper or blog post introducing the model, the APA and Bibtex information for that should go in this section. -->
181
-
182
- **BibTeX:**
183
-
184
- [More Information Needed]
185
-
186
- **APA:**
187
-
188
- [More Information Needed]
189
-
190
- ## Glossary [optional]
191
-
192
- <!-- If relevant, include terms and calculations in this section that can help readers understand the model or model card. -->
193
-
194
- [More Information Needed]
195
-
196
- ## More Information [optional]
197
-
198
- [More Information Needed]
199
-
200
- ## Model Card Authors [optional]
201
-
202
- [More Information Needed]
203
-
204
- ## Model Card Contact
205
-
206
- [More Information Needed]
207
- ### Framework versions
208
-
209
- - PEFT 0.18.0
 
8
  - sft
9
  - transformers
10
  - trl
11
+ - finance
12
+ - rag
13
+ - raft
14
+ license: mit
15
+ language:
16
+ - en
17
  ---
18
 
19
+ # Model Card for UnifiedQ-Finance-RAFT
 
 
 
 
20
 
21
  ## Model Details
22
 
23
  ### Model Description
24
 
25
+ **UnifiedQ-Finance-RAFT** is a specialized LoRA adapter for **Qwen 2.5 32B Instruct**, fine-tuned using the **RAFT (Retrieval-Augmented Fine-Tuning)** technique.
 
 
26
 
27
+ This model was trained to act as the reasoning engine for a quantitative finance RAG pipeline. It addresses the "distractor problem" in RAG systems by being explicitly trained to distinguish between relevant "oracle" documents and irrelevant "distractor" documents when answering complex options trading and risk management queries.
 
 
 
 
 
 
28
 
29
+ - **Developed by:** Rednote (UnifiedQ Project)
30
+ - **Model type:** LoRA Adapter (QLoRA 4-bit) for Causal LM
31
+ - **Language(s) (NLP):** English
32
+ - **License:** MIT
33
+ - **Finetuned from model:** [Qwen/Qwen2.5-32B-Instruct](https://huggingface.co/Qwen/Qwen2.5-32B-Instruct)
34
 
35
+ ### Model Sources
36
 
37
+ - **Repository:** [Link to your Hugging Face Repo]
38
+ - **Paper (Technique):** [RAFT: Adapting Language Model to Domain Specific RAG](https://arxiv.org/abs/2403.10131)
 
39
 
40
  ## Uses
41
 
 
 
42
  ### Direct Use
43
 
44
+ This model is intended to be used **with a RAG system** (Retrieval-Augmented Generation). It expects a prompt format that includes retrieved context documents (some relevant, some irrelevant) and a user question. It excels at:
45
+ - Evaluation of options trading strategies.
46
+ - Quantitative risk management analysis.
47
+ - Filtering noise from retrieved financial documents.
 
 
 
 
 
48
 
49
  ### Out-of-Scope Use
50
 
51
+ - General chat without context (it is specialized for document-based reasoning).
52
+ - Financial advice (this is a research/development tool, not a financial advisor).
53
+ - Usage without 4-bit quantization on consumer hardware (due to the 32B parameter size).
54
 
55
  ## Bias, Risks, and Limitations
56
 
57
+ The model is fine-tuned on specific financial domain data. It may hallucinate if provided with context documents that contain factually incorrect information (garbage in, garbage out). As a 32B model, it requires significant VRAM to run even with adapters.
 
 
58
 
59
  ### Recommendations
60
 
61
+ Users should verify all financial outputs against standard models or verifiable sources. This model should be used as an assistant to a human trader, not an autonomous agent.
 
 
62
 
63
  ## How to Get Started with the Model
64
 
65
+ Use the code below to get started with the model. Note that you must load the base model in 4-bit to fit on standard GPUs.
66
+
67
+ ```python
68
+ import torch
69
+ from peft import PeftModel
70
+ from transformers import AutoModelForCausalLM, AutoTokenizer, BitsAndBytesConfig
71
+
72
+ # 1. Load Base Model (Qwen 2.5 32B)
73
+ base_model_id = "Qwen/Qwen2.5-32B-Instruct"
74
+ adapter_model_id = "Rednote/Qwen-2.5-32B-RAFT-UnifiedQ" # Replace with your actual HF path
75
+
76
+ bnb_config = BitsAndBytesConfig(
77
+ load_in_4bit=True,
78
+ bnb_4bit_quant_type="nf4",
79
+ bnb_4bit_compute_dtype=torch.bfloat16,
80
+ bnb_4bit_use_double_quant=True
81
+ )
82
+
83
+ # Load base model
84
+ base_model = AutoModelForCausalLM.from_pretrained(
85
+ base_model_id,
86
+ quantization_config=bnb_config,
87
+ device_map="auto",
88
+ trust_remote_code=True
89
+ )
90
+
91
+ # 2. Load the RAFT Adapter
92
+ model = PeftModel.from_pretrained(base_model, adapter_model_id)
93
+ tokenizer = AutoTokenizer.from_pretrained(base_model_id, trust_remote_code=True)
94
+
95
+ # 3. Inference Example
96
+ prompt = "Context: [Doc 1]... [Doc 2]... \n\n Question: How do I hedge delta risk?"
97
+ inputs = tokenizer(prompt, return_tensors="pt").to("cuda")
98
+ outputs = model.generate(**inputs, max_new_tokens=200)
99
+ print(tokenizer.decode(outputs[0]))