|
|
--- |
|
|
license: apache-2.0 |
|
|
language: |
|
|
- ko |
|
|
- en |
|
|
library_name: transformers |
|
|
tags: |
|
|
- finance |
|
|
- korean |
|
|
- stock-analysis |
|
|
- reasoning |
|
|
- dpo |
|
|
- gguf |
|
|
- llama-cpp |
|
|
base_model: Qwen/Qwen2.5-7B-Instruct |
|
|
pipeline_tag: text-generation |
|
|
--- |
|
|
|
|
|
# VELA (Vector-Encoded Learning Agent) |
|
|
|
|
|
**ํ๊ตญ ์ฃผ์์์ฅ ์ ๋ฌธ AI ์ ๋๋ฆฌ์คํธ** |
|
|
|
|
|
VELA๋ ํ๊ตญ ์ฃผ์์์ฅ ๋ด์ค ๋ถ์ ๋ฐ ํฌ์ ๋ฆฌ์์น๋ฅผ ์ํด ํนํ๋ 7B ํ๋ผ๋ฏธํฐ ์ธ์ด ๋ชจ๋ธ์
๋๋ค. |
|
|
2,135๊ฐ ์ข
๋ชฉ์ ๋ํ ๋ด์ค ์ํฅ ๋ถ์, ์ฆ๊ถ์ฌ ๋ฆฌํฌํธ ํด์, Reasoning Trace ๊ธฐ๋ฐ ๊ตฌ์กฐํ๋ ํฌ์ ๋ถ์์ ์ํํฉ๋๋ค. |
|
|
|
|
|
## Model Details |
|
|
|
|
|
| ํญ๋ชฉ | ๋ด์ฉ | |
|
|
|------|------| |
|
|
| **Base Model** | Qwen/Qwen2.5-7B-Instruct | |
|
|
| **Training** | SFT (36,713) + DPO (24,779 pairs) | |
|
|
| **Parameters** | 7.6B | |
|
|
| **Context Length** | 8,192 tokens | |
|
|
| **Stock Coverage** | 2,135 ์ข
๋ชฉ (KOSPI + KOSDAQ) | |
|
|
| **License** | Apache 2.0 | |
|
|
|
|
|
### Available Formats |
|
|
|
|
|
| Format | File | Size | Use Case | |
|
|
|--------|------|------|----------| |
|
|
| **BF16** (safetensors) | `model.safetensors` | 15 GB | Full precision, GPU inference | |
|
|
| **GGUF Q8_0** | `vela-q8_0.gguf` | 7.6 GB | High quality quantized, GPU/CPU | |
|
|
| **GGUF Q4_K_M** | `vela-q4_k_m.gguf` | 4.4 GB | Fast & lightweight, GPU/CPU | |
|
|
|
|
|
## Training Pipeline |
|
|
|
|
|
``` |
|
|
Qwen2.5-7B-Instruct |
|
|
โ |
|
|
SFT (36,713 samples) |
|
|
- ๋ด์ค ๋ถ๋ฅ ๋ถ์ 10,830 |
|
|
- ๊ทน๋จ ์๊ทธ๋ ๋ถ์ 9,603 |
|
|
- ์ฆ๊ถ์ฌ ๋ฆฌํฌํธ 5,117 |
|
|
- ๋ด์ค ์ํฅ ๋ถ์ 4,839 |
|
|
- Tool Calling 1,965 |
|
|
- ๊ธฐํ (๋น๊ต๋ถ์, ์ค์ , ๋ฆฌ์คํฌ, ์๊ธ, ์นํฐ, ๋งคํฌ๋ก) 4,359 |
|
|
โ |
|
|
DPO (24,779 pairs) |
|
|
- ์ค๋ณต ์ ๊ฑฐ ๊ธฐ๋ณธ ํ์ด 12,000 |
|
|
- ๋ค๊ตญ์ด leak ๋ณด๊ฐ 5,997 |
|
|
- VELA ChatML ์ ๋ ฌ 5,000 |
|
|
- ์ค๊ตญ์ด leak ๊ต์ v2 1,216 |
|
|
- Reasoning Trace ์ ๋ ฌ 566 |
|
|
โ |
|
|
VELA |
|
|
``` |
|
|
|
|
|
## Training Data Distribution |
|
|
|
|
|
### SFT (36,713 samples, 2,135 ์ข
๋ชฉ) |
|
|
|
|
|
| Source | Samples | Ratio | Description | |
|
|
|--------|---------|-------|-------------| |
|
|
| **classified_news** | 10,830 | 29.5% | GPT-4o ๋ถ๋ฅ๋ ๋ด์ค โ Reasoning Trace ์์ฑ | |
|
|
| **extreme_signals** | 9,603 | 26.2% | ๊ธ๋ฑ/๊ธ๋ฝ ์๊ทธ๋ ๋ด์ค ๋ถ์ | |
|
|
| **securities_report_gpt4o** | 5,117 | 13.9% | ์ฆ๊ถ์ฌ ๋ฆฌํฌํธ GPT-4o ์ฌ๊ตฌ์ฑ (๋ค์ด๋ฒ ์ข
๋ชฉ๋ถ์ + ๋ฏธ๋์์
) | |
|
|
| **analysis_news** | 4,839 | 13.2% | ์ผ๋ฐ ๋ด์ค ์ํฅ ๋ถ์ | |
|
|
| **tool_calling** | 1,965 | 5.4% | Search/Price/Investor ๋๊ตฌ ํธ์ถ ํ์ต | |
|
|
| **multi_stock_comparison** | 981 | 2.7% | ๋ค์ค ์ข
๋ชฉ ๋น๊ต ๋ถ์ | |
|
|
| **earnings_impact** | 971 | 2.6% | ์ค์ ๋ฐํ ์ํฅ ๋ถ์ | |
|
|
| **risk_alert** | 948 | 2.6% | ๋ฆฌ์คํฌ ๊ฒฝ๋ณด ๋ถ์ | |
|
|
| **supply_demand** | 492 | 1.3% | ์๊ธ ๋ํฅ ๋ถ์ | |
|
|
| **sector_theme** | 486 | 1.3% | ์นํฐ/ํ
๋ง ๋ถ์ | |
|
|
| **macro_impact** | 481 | 1.3% | ๋งคํฌ๋ก ์งํ ์ํฅ ๋ถ์ | |
|
|
|
|
|
> ํ๊ท ์๋ต ๊ธธ์ด: 2,337์ (Reasoning Trace JSON + ๋ถ์ ๋ฆฌํฌํธ ํฌํจ) |
|
|
|
|
|
### DPO (24,779 pairs) |
|
|
|
|
|
| Source | Pairs | Ratio | Description | |
|
|
|--------|-------|-------|-------------| |
|
|
| **dpo_dedup** | 12,000 | 48.4% | ์ค๋ณต ์ ๊ฑฐ๋ ๊ธฐ๋ณธ DPO ํ์ด | |
|
|
| **multilingual_aug** | 5,997 | 24.2% | ์ค๊ตญ์ด/์์ด leak ๋ณด๊ฐ (rejected์ leak ์ฝ์
) | |
|
|
| **vela_chatml** | 5,000 | 20.2% | VELA ์์คํ
ํ๋กฌํํธ ์ ๋ ฌ | |
|
|
| **chinese_leak_v2** | 1,216 | 4.9% | ์ค๊ตญ์ด leak ์ง์ค ๊ต์ | |
|
|
| **reasoning_trace_2k** | 566 | 2.3% | Reasoning Trace ํ์ ์ ๋ ฌ | |
|
|
|
|
|
## Capabilities |
|
|
|
|
|
- **๋ด์ค ์ํฅ ๋ถ์**: ์ฃผ์ ๊ด๋ จ ๋ด์ค์ ์์ฅ ์ํฅ๋ ์์ธก |
|
|
- **์ฆ๊ถ์ฌ ๋ฆฌํฌํธ ํด์**: ์ ๋๋ฆฌ์คํธ ๋ฆฌํฌํธ ๊ธฐ๋ฐ ํฌ์ ๋ถ์ |
|
|
- **๋ฆฌ์์น ๋ฆฌํฌํธ ์์ฑ**: ๊ตฌ์กฐํ๋ ํฌ์ ๋ถ์ ๋ณด๊ณ ์ (7๊ฐ ์น์
) |
|
|
- **Reasoning Trace**: ๋จ๊ณ๋ณ ๋ถ์ ์ฌ๊ณ ๊ณผ์ (JSON ํ์) |
|
|
- **๋ค์ค ์์ค ์ข
ํฉ**: ๋ด์ค, ์์ธ, ์๊ธ ๋ฐ์ดํฐ ํตํฉ ๋ถ์ |
|
|
|
|
|
## Quantization Benchmark |
|
|
|
|
|
RTX 3060 12GB, llama-cpp-python, n_gpu_layers=-1, n_ctx=4096 |
|
|
|
|
|
| Format | Speed (tok/s) | Chinese Leak | Quality | |
|
|
|--------|--------------|--------------|---------| |
|
|
| **Q4_K_M** | **36 tok/s** | 0/5 CLEAN | Reasoning Trace + Report OK | |
|
|
| **Q8_0** | 25 tok/s | 0/5 CLEAN | Reasoning Trace + Report OK | |
|
|
|
|
|
> Stress test: 5ํ ์ฐ์ (Synthesis + 3K Reasoning Trace ๊ต๋) - ์์ชฝ ๋ชจ๋ Chinese leak ์ ๋ก |
|
|
|
|
|
## Usage |
|
|
|
|
|
### llama-cpp-python (Recommended for GGUF) |
|
|
|
|
|
```python |
|
|
from llama_cpp import Llama |
|
|
|
|
|
model = Llama( |
|
|
model_path="vela-q4_k_m.gguf", # or vela-q8_0.gguf |
|
|
n_ctx=4096, |
|
|
n_gpu_layers=-1, # Full GPU offload |
|
|
chat_format="chatml", |
|
|
) |
|
|
|
|
|
response = model.create_chat_completion( |
|
|
messages=[ |
|
|
{"role": "system", "content": "๋น์ ์ ํ๊ตญ ์ฃผ์ ์ ๋ฌธ ์ ๋๋ฆฌ์คํธ์
๋๋ค."}, |
|
|
{"role": "user", "content": "์ผ์ฑ์ ์ HBM ์ฌ์
์ ๋ง์ ๋ถ์ํด์ฃผ์ธ์."}, |
|
|
], |
|
|
max_tokens=1024, |
|
|
temperature=0.7, |
|
|
) |
|
|
print(response["choices"][0]["message"]["content"]) |
|
|
``` |
|
|
|
|
|
### Transformers (BF16) |
|
|
|
|
|
```python |
|
|
from transformers import AutoModelForCausalLM, AutoTokenizer |
|
|
import torch |
|
|
|
|
|
model = AutoModelForCausalLM.from_pretrained( |
|
|
"intrect/VELA", |
|
|
torch_dtype=torch.bfloat16, |
|
|
device_map="auto" |
|
|
) |
|
|
tokenizer = AutoTokenizer.from_pretrained("intrect/VELA") |
|
|
|
|
|
messages = [ |
|
|
{"role": "system", "content": "๋น์ ์ ํ๊ตญ ์ฃผ์ ์ ๋ฌธ ์ ๋๋ฆฌ์คํธ์
๋๋ค."}, |
|
|
{"role": "user", "content": "์ผ์ฑ์ ์ HBM ์ฌ์
์ ๋ง์ ๋ถ์ํด์ฃผ์ธ์."} |
|
|
] |
|
|
|
|
|
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, |
|
|
temperature=0.7, |
|
|
do_sample=True |
|
|
) |
|
|
print(tokenizer.decode(outputs[0], skip_special_tokens=True)) |
|
|
``` |
|
|
|
|
|
### vLLM |
|
|
|
|
|
```python |
|
|
from vllm import LLM, SamplingParams |
|
|
|
|
|
llm = LLM(model="intrect/VELA", dtype="bfloat16") |
|
|
params = SamplingParams(temperature=0.7, max_tokens=1024) |
|
|
|
|
|
prompts = ["์ผ์ฑ์ ์ HBM ์์ฅ ์ ๋ง์ ๋ถ์ํด์ฃผ์ธ์."] |
|
|
outputs = llm.generate(prompts, params) |
|
|
``` |
|
|
|
|
|
### Ollama |
|
|
|
|
|
```bash |
|
|
# Modelfile |
|
|
FROM ./vela-q4_k_m.gguf |
|
|
TEMPLATE """<|im_start|>system |
|
|
{{ .System }}<|im_end|> |
|
|
<|im_start|>user |
|
|
{{ .Prompt }}<|im_end|> |
|
|
<|im_start|>assistant |
|
|
""" |
|
|
PARAMETER temperature 0.7 |
|
|
PARAMETER num_ctx 4096 |
|
|
``` |
|
|
|
|
|
## Output Format |
|
|
|
|
|
VELA๋ ๋ ๊ฐ์ง ์ถ๋ ฅ ๋ชจ๋๋ฅผ ์ง์ํฉ๋๋ค: |
|
|
|
|
|
### 1. Reasoning Trace (๋ถ์ ๊ณผ์ ) |
|
|
|
|
|
```json |
|
|
{ |
|
|
"step": 1, |
|
|
"thought": "์ผ์ฑ์ ์ HBM3E 12๋จ ์์ฐ ๊ด๋ จ ๋ด์ค ํ์ธ. ์ถ๊ฐ ์์ฃผ ํํฉ๊ณผ ์์ฅ ์ ์ ์จ ํ์
ํ์.", |
|
|
"action": "search", |
|
|
"query": "์ผ์ฑ์ ์ HBM3E 12๋จ ์์ฃผ ์์ฅ์ ์ ์จ", |
|
|
"confidence": 0.45 |
|
|
} |
|
|
``` |
|
|
|
|
|
### 2. Synthesis Report (์ต์ข
๋ฆฌํฌํธ) |
|
|
|
|
|
```markdown |
|
|
# EOD ๋ฆฌํฌํธ: ์ผ์ฑ์ ์ (005930.KS) |
|
|
|
|
|
## Executive Summary |
|
|
[2-3๋ฌธ์ฅ ํต์ฌ ์์ฝ] |
|
|
|
|
|
## Key Metrics |
|
|
| ์งํ | ์์น | |
|
|
|------|------| |
|
|
|
|
|
## ์์ฅ ๋ํฅ ๋ถ์ |
|
|
## ์๊ธ ๋ถ์ |
|
|
## ๋ด์ค ์ํฅ ๋ถ์ |
|
|
## ๋ฆฌ์คํฌ ์์ธ |
|
|
## ํฌ์ ์๊ฒฌ |
|
|
``` |
|
|
|
|
|
## DPO Improvements |
|
|
|
|
|
- โ
**์ค๊ตญ์ด leak ์ ๊ฑฐ**: Stress test 10/10 CLEAN |
|
|
- โ
**์์ด leak ๊ฐ์**: ๋ถํ์ํ ์์ด ์ฌ์ฉ ์ต์ํ |
|
|
- โ
**ํ์ ์ค์**: Reasoning Trace JSON + 7-section Report |
|
|
- โ
**ํ๊ตญ์ด ํ์ง**: ์์ฐ์ค๋ฌ์ด ํ๊ตญ์ด ํํ |
|
|
|
|
|
## Limitations |
|
|
|
|
|
- ์ค์๊ฐ ์์ธ ๋ฐ์ดํฐ ์ ๊ทผ ๋ถ๊ฐ (์ธ๋ถ API ํ์) |
|
|
- ํฌ์ ์กฐ์ธ์ด ์๋ ์ ๋ณด ์ ๊ณต ๋ชฉ์ |
|
|
- 8K ์ปจํ
์คํธ ์ ํ์ผ๋ก ๊ธด ๋ฌธ์ ์ฒ๋ฆฌ ํ๊ณ |
|
|
- ํ ๋ฃจ์๋ค์ด์
์์น ๊ฐ๋ฅ (์์น ๋ฐ์ดํฐ๋ ์ธ๋ถ ๊ฒ์ฆ ํ์) |
|
|
|
|
|
## Citation |
|
|
|
|
|
```bibtex |
|
|
@misc{vela2026, |
|
|
title={VELA: Vector-Encoded Learning Agent for Korean Stock Analysis}, |
|
|
author={intrect}, |
|
|
year={2026}, |
|
|
publisher={Hugging Face}, |
|
|
url={https://huggingface.co/intrect/VELA} |
|
|
} |
|
|
``` |
|
|
|
|
|
## Version History |
|
|
|
|
|
| ๋ฒ์ | ๋ ์ง | ๋ณ๊ฒฝ์ฌํญ | |
|
|
|------|------|----------| |
|
|
| v1.1 | 2026-02-12 | GGUF ์์ํ ๋ชจ๋ธ ์ถ๊ฐ (Q4_K_M, Q8_0), ๋ฒค์น๋งํฌ, ํ์ต ๋ฐ์ดํฐ ๋ถํฌ ๊ณต๊ฐ | |
|
|
| v1.0 | 2026-01-28 | DPO ๋ณํฉ, ์ค๊ตญ์ด/์์ด leak ํด๊ฒฐ | |
|
|
| v0.9 | 2026-01-15 | SFT ๋ฒ ์ด์ค ๋ชจ๋ธ ๊ณต๊ฐ | |
|
|
|
|
|
--- |
|
|
|
|
|
**Disclaimer**: ์ด ๋ชจ๋ธ์ ์ถ๋ ฅ์ ํฌ์ ์กฐ์ธ์ด ์๋๋๋ค. ๋ชจ๋ ํฌ์ ๊ฒฐ์ ์ ๋ณธ์ธ์ ํ๋จ๊ณผ ์ฑ
์ ํ์ ์ด๋ฃจ์ด์ ธ์ผ ํฉ๋๋ค. |
|
|
|