122 lines
4.0 KiB
Markdown
122 lines
4.0 KiB
Markdown
|
|
---
|
||
|
|
license: mit
|
||
|
|
language:
|
||
|
|
- zh
|
||
|
|
base_model:
|
||
|
|
- Qwen/Qwen2.5-3B-Instruct
|
||
|
|
pipeline_tag: text-generation
|
||
|
|
library_name: transformers
|
||
|
|
tags:
|
||
|
|
- finance
|
||
|
|
- chinese
|
||
|
|
- qlora
|
||
|
|
- private-equity
|
||
|
|
- fund-analysis
|
||
|
|
- distillation
|
||
|
|
metrics:
|
||
|
|
- loss
|
||
|
|
---
|
||
|
|
|
||
|
|
# MachFund-1
|
||
|
|
|
||
|
|
A specialized Chinese private equity fund analysis model, fine-tuned from [Qwen2.5-3B-Instruct](https://huggingface.co/Qwen/Qwen2.5-3B-Instruct) using QLoRA knowledge distillation.
|
||
|
|
|
||
|
|
## Overview
|
||
|
|
|
||
|
|
MachFund-1 is trained to analyze Chinese private equity funds across multiple dimensions: performance analysis, risk assessment, strategy evaluation, manager background, fund comparisons, and investment advice. The model demonstrates a **68.75% improvement** over the base model on domain-specific tasks.
|
||
|
|
|
||
|
|
## Training Details
|
||
|
|
|
||
|
|
| Parameter | Value |
|
||
|
|
|---|---|
|
||
|
|
| Base Model | Qwen2.5-3B-Instruct |
|
||
|
|
| Method | QLoRA (4-bit NF4 quantization) |
|
||
|
|
| LoRA Rank / Alpha | 32 / 64 |
|
||
|
|
| Training Samples | 6,976 (eval: 769) |
|
||
|
|
| Effective Batch Size | 16 (2 x 8 grad accumulation) |
|
||
|
|
| Learning Rate | 2e-4 (cosine schedule) |
|
||
|
|
| Epochs | 2 |
|
||
|
|
| Max Sequence Length | 6,144 tokens |
|
||
|
|
| Final Training Loss | 0.9269 |
|
||
|
|
| Training Time | 141 min on NVIDIA A100 80GB |
|
||
|
|
| Total Steps | 872 |
|
||
|
|
|
||
|
|
### Knowledge Distillation Pipeline
|
||
|
|
|
||
|
|
1. **Teacher Model**: Gemini 2.5 Pro generates ~50 Q&A pairs per fund across 8 categories for 178 Chinese private equity funds
|
||
|
|
2. **Quality Scoring**: Gemini 2.5 Flash scores each pair on 5 dimensions (accuracy, completeness, professionalism, data usage, coherence) with a threshold of 15/25
|
||
|
|
3. **Student Training**: QLoRA fine-tuning on 6,976 high-quality filtered samples
|
||
|
|
|
||
|
|
### Question Categories
|
||
|
|
|
||
|
|
- Fund overview and basic information
|
||
|
|
- Performance analysis and benchmarking
|
||
|
|
- Risk assessment and drawdown analysis
|
||
|
|
- Strategy analysis and market positioning
|
||
|
|
- Manager background and track record
|
||
|
|
- Fund comparisons (peer and category)
|
||
|
|
- Investment advice and suitability
|
||
|
|
- Structured data extraction
|
||
|
|
|
||
|
|
## Evaluation
|
||
|
|
|
||
|
|
| Gate | Metric | Result |
|
||
|
|
|---|---|---|
|
||
|
|
| Training Lift | Base vs Fine-tuned Score | **PASS** (4.8 to 8.1, +68.75%, threshold: 30%) |
|
||
|
|
| Speed (FP16) | Tokens/sec on RTX 5080 | 30.1 tok/s (threshold: 50) |
|
||
|
|
|
||
|
|
## Available Formats
|
||
|
|
|
||
|
|
| Format | File | Size | Use Case |
|
||
|
|
|---|---|---|---|
|
||
|
|
| SafeTensors (FP16) | `model.safetensors` | 6.17 GB | Full precision inference |
|
||
|
|
| GGUF Q8_0 | `gguf/mach-fund-1-Q8_0.gguf` | 3.29 GB | High-quality quantized inference |
|
||
|
|
| GGUF Q4_K_M | `gguf/mach-fund-1-Q4_K_M.gguf` | 1.93 GB | Efficient inference, recommended |
|
||
|
|
| GGUF F16 | `gguf/mach-fund-1-f16.gguf` | 6.18 GB | Full precision GGUF |
|
||
|
|
|
||
|
|
## Usage
|
||
|
|
|
||
|
|
### Transformers
|
||
|
|
|
||
|
|
```python
|
||
|
|
from transformers import AutoModelForCausalLM, AutoTokenizer
|
||
|
|
|
||
|
|
model = AutoModelForCausalLM.from_pretrained("openalchemy/MachFund", torch_dtype="auto", device_map="auto")
|
||
|
|
tokenizer = AutoTokenizer.from_pretrained("openalchemy/MachFund")
|
||
|
|
|
||
|
|
messages = [
|
||
|
|
{"role": "system", "content": "You are a professional private equity fund analyst."},
|
||
|
|
{"role": "user", "content": "Analyze the performance of this fund"}
|
||
|
|
]
|
||
|
|
|
||
|
|
text = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
|
||
|
|
inputs = tokenizer(text, return_tensors="pt").to(model.device)
|
||
|
|
outputs = model.generate(**inputs, max_new_tokens=1024)
|
||
|
|
print(tokenizer.decode(outputs[0], skip_special_tokens=True))
|
||
|
|
```
|
||
|
|
|
||
|
|
### llama.cpp (GGUF)
|
||
|
|
|
||
|
|
```bash
|
||
|
|
./llama-cli -m mach-fund-1-Q4_K_M.gguf -p "Analyze the risk profile of this fund" -n 512
|
||
|
|
```
|
||
|
|
|
||
|
|
### Ollama
|
||
|
|
|
||
|
|
```bash
|
||
|
|
echo 'FROM ./mach-fund-1-Q4_K_M.gguf' > Modelfile
|
||
|
|
ollama create machfund -f Modelfile
|
||
|
|
ollama run machfund "What is the Sharpe ratio of this fund?"
|
||
|
|
```
|
||
|
|
|
||
|
|
## Limitations
|
||
|
|
|
||
|
|
- Trained specifically on Chinese private equity fund data; may not generalize to other financial domains
|
||
|
|
- Training data reflects fund information available up to early 2026
|
||
|
|
- Should not be used as the sole basis for investment decisions
|
||
|
|
- Speed on consumer GPUs (RTX 5080) is below the 50 tok/s target at FP16; use GGUF Q4_K_M for faster inference
|
||
|
|
|
||
|
|
## License
|
||
|
|
|
||
|
|
MIT
|