---
library_name: transformers
license: cc-by-nc-4.0
datasets:
- kyujinpy/KOR-OpenOrca-Platypus-v3
language:
- ko
- en
tags:
- Economic
- Finance
---
# Model Details
Model Developers: Sogang University SGEconFinlab(<)
### Model Description
This model is a language model specialized in economics and finance. This was learned with various economic/finance-related data.
The data sources are listed below, and we are not releasing the data that we trained on because it was used for research/policy purposes.
If you wish to use the original data, please contact the original author directly for permission to use it.
- **Developed by:** Sogang University SGEconFinlab()
- **License:** cc-by-nc-4.0
- **Base Model:** yanolja/KoSOLAR-10.7B-v0.2()
## Loading the Model
peft_model_id = "SGEcon/KoSOLAR-10.7B-v0.2_fin_v4"
config = PeftConfig.from_pretrained(peft_model_id)
bnb_config = BitsAndBytesConfig(
load_in_4bit=True,
bnb_4bit_use_double_quant=True,
bnb_4bit_quant_type="nf4",
bnb_4bit_compute_dtype=torch.bfloat16
)
model = AutoModelForCausalLM.from_pretrained(config.base_model_name_or_path, quantization_config=bnb_config, device_map={"":0})
model = PeftModel.from_pretrained(model, peft_model_id)
tokenizer = AutoTokenizer.from_pretrained(config.base_model_name_or_path)
model.eval()
## Conducting Conversation
import re
def gen(x):
inputs = tokenizer(f"### 질문: {x}\n\n### 답변:", return_tensors='pt', return_token_type_ids=False)
# 데이터를 GPU로 이동(사용 가능한 경우)
inputs = {k: v.to(device="cuda" if torch.cuda.is_available() else "cpu") for k, v in inputs.items()}
gened = model.generate(
**inputs,
max_new_tokens=256, # 새로 생성할 토큰의 최대 개수
early_stopping=True,
num_return_sequences=1, # 하나의 답변만 생성
do_sample=True, # 다양한 답변 생성을 위해 샘플링 활성화
eos_token_id=tokenizer.eos_token_id, # EOS 토큰 ID 사용
temperature=0.9, # 생성 다양성 조절을 위한 온도 설정
top_p=0.8, # nucleus sampling에서 사용할 p 값
top_k=50 # top-k sampling에서 사용할 k 값
)
# 생성된 시퀀스를 디코드하여 출력 텍스트로 변환
decoded = tokenizer.decode(gened[0], skip_special_tokens=True).strip()
# "### 답변:" 문자열 이후의 텍스트만 추출
answer_start_idx = decoded.find("### 답변:") + len("### 답변:")
complete_answer = decoded[answer_start_idx:].strip()
# 첫 번째 구두점(. ? !)을 찾아서 그 부분까지만 추출
match = re.search(r"[\.\?\!][^\.\?\!]*$", complete_answer)
if match:
complete_answer = complete_answer[:match.end()].strip()
return complete_answer
## Training Details
We use QLora to train the base model.
Quantized Low Rank Adapters (QLoRA) is an efficient technique that uses 4-bit quantized pre-trained language models to fine-tune 65 billion parameter models on a 48 GB GPU while significantly reducing memory usage.
The method uses NormalFloat 4-bit (NF4), a new data type that is theoretically optimal for normally distributed weights; Double Quantization, which further quantizes quantization constants to reduce average memory usage; and Paged Optimizers, which manage memory spikes during mini-batch processing, to increase memory efficiency without sacrificing performance.
Also, we performed instruction tuning using the data that we collected and the kyujinpy/KOR-OpenOrca-Platypus-v3 dataset on the hugging face.
Instruction tuning is learning in a supervised learning format that uses instructions and input data together as input and output data as a pair.
### Training Data
1. 한국은행: 경제금융용어 700선()
2. 금융감독원: 금융소비자 정보 포털 파인 금융용어사전()
3. KDI 경제정보센터: 시사 용어사전()
4. 한국경제신문/한경닷컴: 한경경제용어사전(), 오늘의 TESAT(), 오늘의 주니어 TESAT(), 생글생글한경()
5. 중소벤처기업부/대한민국정부: 중소벤처기업부 전문용어()
6. 고성삼/법문출판사: 회계·세무 용어사전()
7. 맨큐의 경제학 8판 Word Index
8. kyujinpy/KOR-OpenOrca-Platypus-v3()
The copyright of the data used belongs to the original author, so please contact the original author when using it.
### Training Hyperparameters
|Hyperparameter|SGEcon/KoSOLAR-10.7B-v0.2_fin_v4|
|------|---|
|Lora Method|Lora|
|load in 4 bit|True|
|learning rate|1e-5|
|lr scheduler|linear|
|lora alpa|16|
|lora rank|16|
|lora dropout|0.05|
|optim|paged_adamw_32bit|
|target_modules|q_proj, k_proj, v_proj, o_proj, gate_proj, up_proj, down_proj, lm_head|
### Example
> 중앙은행의 역할에 대해서 설명해줄래?
>> 중앙은행은 통화발행권과 금융통제권을 가진 기관이다. 중앙은행은 국가의 통화정책, 외환정책, 금융정책을 수립하는 동시에 상업은행과 같은 금융기관을 감독·감독하는 업무를 수행한다. 중앙은행은 정부와 상업은행에 대한 자금대부기관이다. 상업은행은 중앙은행에 자금을 빌리거나 예금한다. 중앙은행은 통화신용정책을 수행하기 위해 금융기관을 통해 자금을 대출하거나 예금 받는다. 중앙은행은 상업은행에 대한 자금대부기관의 역할과 함께 시중은행에 대한 감독·감독의 역할을 수행한다. 상업은행이 자금을 대출할 때는 1차적으로 상업은행에 대출금을 지급하는 대신, 대출은행에 대출금의 일부 또는 전액을 예금으로 받아 중앙은행에 돈을 빌려주고 예금한다. 예금에 대한 이자율을 높여 예금자가 중앙은행에 예금을 하게끔 유도하는 것이다. 한편 상업은행은 대출을 할 때 대출은행이 대출금을 예금하는 대신, 대출을 받는 은행에 대출금을 지급한다.