File size: 7,362 Bytes
7e09e1b
 
b141edf
 
 
 
 
 
 
 
 
 
7e09e1b
 
b141edf
7e09e1b
b141edf
7e09e1b
b141edf
7e09e1b
b141edf
7e09e1b
b141edf
7e09e1b
 
b141edf
7e09e1b
14cd64e
 
 
7e09e1b
b141edf
7e09e1b
b141edf
7e09e1b
b141edf
 
 
 
 
7e09e1b
b141edf
 
 
 
 
 
 
 
7e09e1b
b141edf
 
7e09e1b
b141edf
7e09e1b
b141edf
7e09e1b
b141edf
 
 
 
 
7e09e1b
b141edf
 
 
 
 
 
7e09e1b
b141edf
7e09e1b
b141edf
7e09e1b
b141edf
 
 
7e09e1b
b141edf
 
 
 
7e09e1b
b141edf
 
 
 
7e09e1b
b141edf
 
7e09e1b
b141edf
 
7e09e1b
b141edf
 
 
 
 
 
 
 
 
7e09e1b
b141edf
 
 
 
7e09e1b
b141edf
7e09e1b
b141edf
 
 
7e09e1b
b141edf
 
 
 
 
7e09e1b
b141edf
 
 
 
 
 
 
7e09e1b
b141edf
 
7e09e1b
b141edf
7e09e1b
b141edf
 
 
7e09e1b
b141edf
 
 
7e09e1b
b141edf
 
7e09e1b
b141edf
 
7e09e1b
b141edf
7e09e1b
b141edf
7e09e1b
b141edf
7e09e1b
b141edf
7e09e1b
b141edf
7e09e1b
b141edf
7e09e1b
b141edf
7e09e1b
b141edf
7e09e1b
b141edf
7e09e1b
b141edf
7e09e1b
b141edf
7e09e1b
b141edf
 
 
 
 
 
 
 
 
7e09e1b
b141edf
7e09e1b
b141edf
 
 
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
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
---
library_name: transformers
tags:
- finance
- chat
license: apache-2.0
datasets:
- sujet-ai/Sujet-Finance-Instruct-177k
language:
- en
base_model:
- HuggingFaceTB/SmolLM2-360M-Instruct
---

# FinChat-XS

FinChat-XS is a lightweight financial domain language model designed to answer questions about finance, markets, investments, and economics in a conversational style.

## Model Overview

FinChat-XS is a fine-tuned version of [HuggingFaceTB/SmolLM2-360M-Instruct](https://huggingface.co/HuggingFaceTB/SmolLM2-360M-Instruct), optimized for financial domain conversations using LoRA (Low-Rank Adaptation). With only 360M parameters, it offers a balance between performance and efficiency, making it accessible for deployment on consumer hardware.

The model combines professional financial knowledge with a conversational communication style, making it suitable for applications where users need expert financial information delivered in an approachable manner.


## Repository & Resources

For full code, training process, and additional details, visit the GitHub repository:

🔗 [FinLLMOpt Repository](https://github.com/peremartra/FinLLMOpt)

## How the Model was Created

FinChat-XS was developed through a focused fine-tuning process designed to enhance financial domain expertise while maintaining conversational abilities:

1. **Base model selection**: Started with SmolLM2-360M-Instruct, a lightweight instruction-tuned language model
2. **Dataset preparation**:
   - Filtered the sujet-ai/Sujet-Finance-Instruct-177k dataset to focus on QA and conversational QA examples
   - Applied length filtering to keep responses below 500 characters
   - Augmented short conversational QA examples to improve conciseness

3. **Fine-tuning approach**:
   - Applied LoRA (Low-Rank Adaptation) to efficiently fine-tune the model
   - Targeted key attention modules (q_proj, v_proj)
   - Used rank r=4 and alpha=16
   - Training configuration:
     - Batch size: 2 (effective batch size 16 with gradient accumulation)
     - Learning rate: 1.5e-4
     - BF16 precision

## Challenges
The primary challenge encountered during the development of FinChat-XS was the lack of high-quality conversational datasets specifically focused on personal finance. While the Sujet-Finance-Instruct-177k dataset provided valuable financial QA examples, there remains a notable gap in naturalistic, multi-turn conversations about personal financial scenarios.

## Why Use This Model?

FinChat-XS offers several advantages for specific use cases:

- **Efficient deployment**: At only 362MB, it can run on devices with limited resources. 
- **Financial domain knowledge**: Fine-tuned specifically on financial QA data
- **Balanced communication style**: Combines professional financial knowledge with conversational delivery
- **Low deployment cost**: Requires significantly less computational resources than larger models
- **Customizable**: The LoRA adapter can be mixed with other adapters or further fine-tuned

Ideal for:
- Embedded financial assistants in mobile apps
- Personal financial planning tools
- Educational applications about finance and investing
- Customer service automation for financial institutions
- Quick deployment scenarios where larger models aren't practical

## How to Use the Model

### Basic Usage with Transformers

```python
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch

# Load model and tokenizer
model_name = "oopere/FinChat-XS"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name, torch_dtype=torch.float16)

# Create a conversation
messages = [
    {"role": "user", "content": "What's the difference between stocks and bonds?"}
]

# Format the prompt using the chat template
prompt = tokenizer.apply_chat_template(messages, tokenize=False)

# Tokenize the prompt
inputs = tokenizer(prompt, return_tensors="pt").to(model.device)

# Generate a response
outputs = model.generate(
    **inputs,
    max_new_tokens=256,
    temperature=0.7,
    top_p=0.9,
    do_sample=True,
    repetition_penalty=1.2
)

# Decode and print the response
response = tokenizer.decode(outputs[0][inputs.input_ids.shape[1]:], skip_special_tokens=True)
print(response)
```

### Optimized Inference with 8-bit Quantization

```python
from transformers import AutoModelForCausalLM, AutoTokenizer, BitsAndBytesConfig
import torch

# Configure 8-bit quantization
bnb_config = BitsAndBytesConfig(
    load_in_8bit=True,
    bnb_4bit_compute_dtype=torch.float16
)

# Load model with quantization
model = AutoModelForCausalLM.from_pretrained(
    "oopere/FinChat-XS", 
    quantization_config=bnb_config,
    device_map="auto"
)
tokenizer = AutoTokenizer.from_pretrained("oopere/FinChat-XS")

# Continue with the same usage pattern as above
```

### Using with LoRA Adapter Only

```python
from transformers import AutoModelForCausalLM, AutoTokenizer
from peft import PeftModel, PeftConfig

# Load base model
base_model = AutoModelForCausalLM.from_pretrained("HuggingFaceTB/SmolLM2-360M-Instruct")
tokenizer = AutoTokenizer.from_pretrained("HuggingFaceTB/SmolLM2-360M-Instruct")

# Load LoRA adapter
peft_model = PeftModel.from_pretrained(base_model, "oopere/qa-adapterFinChat-XS")

# Continue with the same usage pattern as above
```

## Limitations & Considerations

While FinChat-XS performs well in many financial conversation scenarios, users should be aware of these limitations:

1. **Knowledge limitations**: The model's knowledge is limited to its training data and has a knowledge cutoff date from the base model (SmolLM2).

2. **Size trade-offs**: As a 360M parameter model, it has less capacity than larger models (7B+) and may provide less nuanced or detailed responses on complex topics.

3. **Financial advice disclaimer**: The model is not a certified financial advisor and should not be used for making investment decisions. Its responses should be considered educational, not professional financial advice.

4. **Domain boundaries**: While focused on finance, the model may struggle with highly specialized financial topics or recent developments not covered in its training data.

5. **Hallucination potential**: Like all language models, FinChat-XS may occasionally generate plausible-sounding but incorrect information, especially when asked about specific numerical data or complex financial details.

6. **Style variations**: The model balances formal financial knowledge with a conversational style, which may not be appropriate for all professional contexts.

7. **Regulatory compliance**: This model has not been specifically audited for compliance with financial regulations in various jurisdictions.

## Citation

If you use FinChat-XS in your research or applications, please consider citing it as:

```
@misc{oopere2025finchatxs,
  author = {Martra, P.},
  title = {FinChat-XS: A Lightweight Financial Domain Chat Language Model},
  year = {2025},
  publisher = {Hugging Face},
  howpublished = {\url{https://huggingface.co/oopere/FinChat-XS}}
}
```

## Acknowledgements

- [HuggingFaceTB](https://huggingface.co/HuggingFaceTB) for creating the SmolLM2 model series
- [Sujet AI](https://huggingface.co/sujet-ai) for their financial instruction dataset
- [Hugging Face](https://huggingface.co/) for providing the infrastructure and tools for model development