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)
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)
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
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
# 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 (๋ถ์ ๊ณผ์ )
{
"step": 1,
"thought": "์ผ์ฑ์ ์ HBM3E 12๋จ ์์ฐ ๊ด๋ จ ๋ด์ค ํ์ธ. ์ถ๊ฐ ์์ฃผ ํํฉ๊ณผ ์์ฅ ์ ์ ์จ ํ์
ํ์.",
"action": "search",
"query": "์ผ์ฑ์ ์ HBM3E 12๋จ ์์ฃผ ์์ฅ์ ์ ์จ",
"confidence": 0.45
}
2. Synthesis Report (์ต์ข ๋ฆฌํฌํธ)
# 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
@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: ์ด ๋ชจ๋ธ์ ์ถ๋ ฅ์ ํฌ์ ์กฐ์ธ์ด ์๋๋๋ค. ๋ชจ๋ ํฌ์ ๊ฒฐ์ ์ ๋ณธ์ธ์ ํ๋จ๊ณผ ์ฑ ์ ํ์ ์ด๋ฃจ์ด์ ธ์ผ ํฉ๋๋ค.