|
--- |
|
library_name: transformers |
|
license: cc-by-nc-4.0 |
|
datasets: |
|
- kyujinpy/KOR-OpenOrca-Platypus-v3 |
|
language: |
|
- ko |
|
- en |
|
tags: |
|
- Economic |
|
- Finance |
|
base_model: davidkim205/komt-mistral-7b-v1 |
|
--- |
|
|
|
|
|
# Model Details |
|
Model Developers: Sogang University SGEconFinlab(<<https://sc.sogang.ac.kr/aifinlab/>) |
|
|
|
|
|
## 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(<https://sc.sogang.ac.kr/aifinlab/>) |
|
- **License:** cc-by-nc-4.0 |
|
- **Base Model:** davidkim205/komt-mistral-7b-v1(<https://huggingface.co./davidkim205/komt-mistral-7b-v1>) |
|
|
|
|
|
## Loading the Model |
|
|
|
peft_model_id = "SGEcon/komt-mistral-7b-v1_fin_v5" |
|
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() |
|
streamer = TextStreamer(tokenizer) |
|
|
|
## Conducting Conversation |
|
|
|
def gen(x): |
|
generation_config = GenerationConfig( |
|
temperature=0.9, |
|
top_p=0.8, |
|
top_k=50, |
|
max_new_tokens=256, |
|
early_stopping=True, |
|
do_sample=True, |
|
) |
|
q = f"[INST]{x} [/INST]" |
|
gened = model.generate( |
|
**tokenizer( |
|
q, |
|
return_tensors='pt', |
|
return_token_type_ids=False |
|
).to('cuda'), |
|
generation_config=generation_config, |
|
pad_token_id=tokenizer.eos_token_id, |
|
eos_token_id=tokenizer.eos_token_id, |
|
streamer=streamer, |
|
) |
|
result_str = tokenizer.decode(gened[0]) |
|
|
|
# μ
λ ₯ μ§λ¬Έκ³Ό "[INST]" λ° "[/INST]" νκ·Έ μ κ±° |
|
input_question_with_tags = f"[INST]{x} [/INST]" |
|
result_str = result_str.replace(input_question_with_tags, "").strip() |
|
|
|
# "<s>" λ° "</s>" νκ·Έ μ κ±° |
|
result_str = result_str.replace("<s>", "").replace("</s>", "").strip() |
|
|
|
return result_str |
|
|
|
|
|
|
|
|
|
## Training Details |
|
|
|
- We train our model with PEFT. |
|
PEFT is a technique that does not tune all parameters of a model during fine-tuning, but only a small subset of parameters. |
|
By tuning only a few parameters while leaving others fixed, the model is less likely to suffer from catastrophic forgetting, where the model forgets previously learned tasks when it learns new ones. |
|
This significantly reduces computation and storage costs. |
|
|
|
- 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. |
|
In other words, instruction tuning involves fine-tuning a pre-trained model for a specific task or set of tasks, where the model is taught to follow specific instructions or guidelines. |
|
Instruction tuning is a type of Supervised Fine-tuning (SFT) that aims to improve the generality and adaptability of a model by introducing an additional dimension that enables the model to understand and follow specific instructions. |
|
|
|
|
|
## Training Data |
|
|
|
1. νκ΅μν: κ²½μ κΈμ΅μ©μ΄ 700μ (<https://www.bok.or.kr/portal/bbs/B0000249/view.do?nttId=235017&menuNo=200765>) |
|
2. κΈμ΅κ°λ
μ: κΈμ΅μλΉμ μ 보 ν¬νΈ νμΈ κΈμ΅μ©μ΄μ¬μ (<https://fine.fss.or.kr/fine/fnctip/fncDicary/list.do?menuNo=900021>) |
|
3. KDI κ²½μ μ 보μΌν°: μμ¬ μ©μ΄μ¬μ (<https://eiec.kdi.re.kr/material/wordDic.do>) |
|
4. νκ΅κ²½μ μ λ¬Έ/νκ²½λ·μ»΄: νκ²½κ²½μ μ©μ΄μ¬μ (<https://terms.naver.com/list.naver?cid=42107&categoryId=42107>), μ€λμ TESAT(<https://www.tesat.or.kr/bbs.frm.list/tesat_study?s_cateno=1>), μ€λμ μ£Όλμ΄ TESAT(<https://www.tesat.or.kr/bbs.frm.list/tesat_study?s_cateno=5>), μκΈμκΈνκ²½(<https://sgsg.hankyung.com/tesat/study>) |
|
5. μ€μλ²€μ²κΈ°μ
λΆ/λνλ―Όκ΅μ λΆ: μ€μλ²€μ²κΈ°μ
λΆ μ λ¬Έμ©μ΄(<https://terms.naver.com/list.naver?cid=42103&categoryId=42103>) |
|
6. κ³ μ±μΌ/λ²λ¬ΈμΆνμ¬: νκ³Β·μΈλ¬΄ μ©μ΄μ¬μ (<https://terms.naver.com/list.naver?cid=51737&categoryId=51737>) |
|
7. 맨νμ κ²½μ ν 8ν Word Index |
|
8. kyujinpy/KOR-OpenOrca-Platypus-v3(<https://huggingface.co./datasets/kyujinpy/KOR-OpenOrca-Platypus-v3>) |
|
|
|
|
|
At the request of the original author, it is not to be used for commercial purposes. Therefore, it is licensed under the license CC-BY-NC-4.0. |
|
The copyright of the data used belongs to the original author, so please contact the original author when using it. |
|
|
|
|
|
|
|
|
|
## Training Hyperparameters |
|
|
|
|Hyperparameter|SGEcon/komt-mistral-7b-v1_fin_v5| |
|
|------|---| |
|
|Lora Method|Lora| |
|
|load in 4 bit|True| |
|
|learning rate|1e-6| |
|
|lora alpa|8| |
|
|lora rank|32| |
|
|lora dropout|0.05| |
|
|optim|adamw_torch| |
|
|target_modules|o_proj, q_proj, up_proj, down_proj, gate_proj, k_proj, v_proj, lm_head| |
|
|
|
|
|
|
|
## License |
|
The language identification model is distributed under the Creative Commons Attribution-NonCommercial 4.0 International Public License. |
|
|
|
|
|
|
|
## Example |
|
|
|
> μ€μμνμ μν μ λν΄μ μ€λͺ
ν΄μ€λ? |
|
|
|
>> μ€μμνμ κ΅κ° κ²½μ μ μμ μ μ μ§νκΈ° μν΄ κ΅κ°μ ν΅ν λ°ν, μν μ
무 κ°λ
, λμΆ μ‘°μ λ±μ μ€μν μν μ μννλ κΈμ΅ κΈ°κ΄μ΄λ€. μ€μμνμ κ΅κ°μ ν΅ν λ°ν μ‘°μ μ ν΅ν΄ λ¬Όκ° μμΉμ μ΅μ νκ³ , μ΄λ₯Ό ν΅ν΄ κ°κ²© μμ μ±μ μ μ§νκ³ μ νλ€. λν, μ€μμνμ λμΆ μ‘°μ μ ν΅ν΄ κΈλ¦¬λ₯Ό μ‘°μ νμ¬ μκΈ μ‘°λ¬ μμ₯μ μ μ ν κΈλ¦¬ μμ€μ μ μ§νκ³ , μ΄λ₯Ό ν΅ν΄ κ²½μ νλμ μ μ ν μ‘°μ ν μ μλ€. |
|
|
|
|
|
|