--- library_name: transformers license: cc-by-nc-4.0 datasets: - kyujinpy/KOR-OpenOrca-Platypus-v3 language: - ko - en tags: - Economic - Finance base_model: EleutherAI/polyglot-ko-5.8b --- # 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:** EleutherAI/polyglot-ko-5.8b() ## Loading the Model peft_model_id = "SGEcon/polyglot-ko-5.8b_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 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선() 2. 금융감독원: 금융소비자 정보 포털 파인 금융용어사전() 3. KDI 경제정보센터: 시사 용어사전() 4. 한국경제신문/한경닷컴: 한경경제용어사전(), 오늘의 TESAT(), 오늘의 주니어 TESAT(), 생글생글한경() 5. 중소벤처기업부/대한민국정부: 중소벤처기업부 전문용어() 6. 고성삼/법문출판사: 회계·세무 용어사전() 7. 맨큐의 경제학 8판 Word Index 8. 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/polyglot-ko-5.8b_fin_v4| |------|---| |Lora Method|Lora| |load in 4 bit|True| |learning rate|3e-4| |lora alpa|8| |lora rank|16| |lora dropout|0.05| |optim|paged_adamw_8bit| |target_modules|query_key_value| ### Example > 중앙은행의 역할에 대해서 설명해줄래? >> 중앙은행은 국가의 신용을 관리하는 중요한 역할을 담당하고 있다. 특히 금융시장의 안정성을 유지하는 것이 가장 중요하다. 중앙은행은 금융시장이 불안정해질 경우 유동성을 공급하는 등 경제가 안정적으로 운영되도록 지원하는 역할을 한다. 이 과정에서 통화량이 조절되기도 한다. 한국은행의 경우 외환보유액이 일정 수준 이하로 떨어지면 외환시장에 개입해 외환보유액을 늘리는 방법으로 외환시장의 안정성을 유지한다. 또 통화량이 너무 많을 경우에는 돈의 가치를 낮춰서 통화량을 조절한다. 이런 방법으로 경기를 조절하기도 한다. 한국은행의 정책금리가 오르면 시중금리가 오르고 이는 기업의 금융비용을 증가시켜 경기를 위축시키기 때문에 한국은행은 정책금리를 인하하는 방법으로 경기를 부양하기도 한다. 또 중앙은행은 경제가 어려워지면 돈을 풀어서 경제를 살리는 역할을 하기도 한다. 즉, 중앙은행은 경기가 침체돼 돈이 잘 돌지 않는 상황이 되면 시중에 돈을 풀어서 경기를 부양하는 방법으로 경제를 살리는 역할을 한다.