| | --- |
| | library_name: transformers |
| | tags: [] |
| | --- |
| | ## Model Details |
| |
|
| | ### Model Description |
| | <!-- Provide a longer summary of what this model is. --> |
| | - **Developed by:** κ°μΉκ³€, μ νμ§, μ΄λ건 |
| | - **Model type:** Casual Language Model |
| | - **Language(s) (NLP):** Korean |
| | - **License:** - |
| | - **Finetuned from model [optional]:** rtzr/ko-gemma-2-9b-it |
| |
|
| | ### Model Sources [optional] |
| |
|
| | <!-- Provide the basic links for the model. --> |
| |
|
| | - **Repository:** https://github.com/5KLetsGo/saju_naming |
| | - **Demo [optional]:** - |
| | |
| | ## Training Details |
| | ### **LoRA μ€μ ** |
| | ```python |
| | lora_config = LoraConfig( |
| | lora_alpha = 8, |
| | lora_dropout = 0.1, |
| | r=16, |
| | target_modules=["k_proj", "o_proj", "v_proj", "q_proj", "gate_proj", "up_proj", "down_proj"], |
| | bias="none", |
| | task_type="CAUSAL_LM", |
| | ) |
| | ``` |
| | lora_alpha = 8: lora_alphaλ LoRAμ νμ΅ μλλ₯Ό μ‘°μ νλ νμ΄νΌνλΌλ―Έν°μ
λλ€. ν° κ°μΌμλ‘ νμ΅ μλκ° λλ €μ§λ©°, μμ κ°μ λ λΉ λ₯΄κ² νμ΅λ©λλ€. λ³΄ν΅ μ΄ κ°μ LoRAμ μ
λ°μ΄νΈ κ°λλ₯Ό μ‘°μ νλ μ€μΌμΌλ§ ν©ν°λ‘ μ¬μ©λ©λλ€. |
| | |
| | lora_dropout = 0.1: λλ‘μμ νλ₯ μ μλ―Έν©λλ€. λλ‘μμμ νμ΅ μ€ μΌλΆ λ΄λ°μ μμλ‘ μ κ±°ν¨μΌλ‘μ¨ λͺ¨λΈμ μΌλ°ν λ₯λ ₯μ ν₯μμν€λ λ°©λ²μ
λλ€. 0.1μ 10%μ λ΄λ°μ λλ‘μμ νκ² λ€λ μλ―Έμ
λλ€. |
| | |
| | r = 16: rμ LoRAμμ μ¬μ©λλ μ μ°¨μ νλ ¬μ λν¬(rank)λ₯Ό λνλ
λλ€. μ΄ κ°μ λͺ¨λΈμ μΆκ°λλ μ μ°¨μ νλ ¬μ ν¬κΈ°λ₯Ό κ²°μ νλ©°, μ±λ₯κ³Ό λ©λͺ¨λ¦¬ μ¬μ©λμ μν₯μ λ―ΈμΉ©λλ€. μΌλ°μ μΌλ‘ μμ κ°μΌμλ‘ λ©λͺ¨λ¦¬ ν¨μ¨μ μ
λλ€. |
| | |
| | target_modules=["k_proj", "o_proj", "v_proj", "q_proj", "gate_proj", "up_proj", "down_proj"]: LoRAκ° μ μ©λ λͺ¨λ 리μ€νΈμ
λλ€. μ¬κΈ°μ "k_proj", "o_proj", "v_proj", "q_proj" λ±μ νΈλμ€ν¬λ¨Έ λͺ¨λΈμ λ€μν ν¬μ(projection) λ μ΄μ΄λ₯Ό μλ―Έν©λλ€. κ°κ° ν€(key), κ°(value), 쿼리(query) λ± μ£Όλ‘ μ΄ν
μ
λ©μ»€λμ¦μ μ¬μ©λλ λ μ΄μ΄λ€μ
λλ€. |
| | |
| | bias = "none": νΈν₯(bias)μ μΆκ°ν μ§ μ¬λΆλ₯Ό κ²°μ ν©λλ€. μ¬κΈ°μλ "none"μΌλ‘ μ€μ λμ΄ μμ΄ νΈν₯μ΄ μ μ©λμ§ μμμ λνλ
λλ€. |
| | |
| | task_type = "CAUSAL_LM": LoRAκ° μ μ©λλ μμ
μ νμ μ μν©λλ€. "CAUSAL_LM"μ μΈκ³Όμ μΈμ΄ λͺ¨λΈ(Causal Language Modeling)μ μλ―Έν©λλ€. μ΄λ GPTμ²λΌ λ€μ λ¨μ΄λ₯Ό μμΈ‘νλ λ°©μμ μΈμ΄ λͺ¨λΈμ ν΄λΉν©λλ€. |
| | rtzr/ko-gemma-2-9b-it Β· Hugging Face |
| |
|
| | ### **λͺ¨λΈ μ€μ ** |
| | ```python |
| | trainer = SFTTrainer( |
| | model=model, |
| | train_dataset=dataset, |
| | formatting_func=generate_prompt, |
| | max_seq_length=512, |
| | args=TrainingArguments( |
| | output_dir="./output", |
| | num_train_epochs = 1, |
| | max_steps=3000, |
| | per_device_train_batch_size=1, |
| | gradient_accumulation_steps=4, |
| | optim="paged_adamw_8bit", |
| | warmup_steps=1, |
| | learning_rate=2e-4, |
| | fp16=True, |
| | logging_steps=100, |
| | push_to_hub=False, |
| | report_to='none', |
| | ), |
| | peft_config=lora_config |
| | ) |
| | ``` |
| | model=model: νμ΅ν μ¬μ νλ ¨λ λͺ¨λΈμ μ§μ ν©λλ€. μ¬κΈ°μ modelμ μ΄μ μ μ μλ λͺ¨λΈ κ°μ²΄λ₯Ό μ°Έμ‘°νκ³ μμ΅λλ€. |
| |
|
| | train_dataset=dataset: νμ΅μ μ¬μ©ν λ°μ΄ν°μ
μ μ§μ ν©λλ€. μ΄ λ°μ΄ν°μ
(dataset)μλ 미리 μ€λΉλ νμ΅μ© λ°μ΄ν°κ° ν¬ν¨λμ΄ μμ΄μΌ ν©λλ€. |
| | |
| | formatting_func=generate_prompt: νμ΅ λ°μ΄ν°μ
μμ κ° μνμ μ΄λ»κ² ν¬λ§·ν
ν μ§λ₯Ό μ μνλ ν¨μμ
λλ€. μ¬κΈ°μ generate_promptλΌλ ν¨μκ° κ° λ°μ΄ν° μνμ μ μ ν νμμΌλ‘ λ³ννμ¬ λͺ¨λΈ μ
λ ₯μΌλ‘ μ¬μ©ν μ μλλ‘ ν©λλ€. |
| |
|
| | max_seq_length=512: κ° μ
λ ₯ μνμ μ΅λ μνμ€ κΈΈμ΄λ₯Ό μ§μ ν©λλ€. μ¬κΈ°μλ μ΅λ 512κ°μ ν ν°μΌλ‘ μνμ€ κΈΈμ΄λ₯Ό μ ννκ³ μμ΅λλ€. μ¦, νλμ μ
λ ₯μ΄ 512κ° μ΄μμ ν ν°μΌλ‘ μ΄λ£¨μ΄μ§ κ²½μ° μλ¦¬κ² λ©λλ€. |
| |
|
| | num_train_epochs=1: μ 체 λ°μ΄ν°μ
μ λͺ λ² λ°λ³΅νμ¬ νμ΅ν μ§λ₯Ό μ§μ ν©λλ€. |
| |
|
| | max_steps=3000: μ΄ νμ΅ μ€ν
μλ₯Ό μ€μ ν©λλ€. |
| | |
| | per_device_train_batch_size=1: ν λ²μ κ° λλ°μ΄μ€(GPU λλ CPU)μμ νμ΅ν λ°°μΉ ν¬κΈ°λ₯Ό μ§μ ν©λλ€. |
| | |
| | gradient_accumulation_steps=4: κ·ΈλΌλμΈνΈλ₯Ό μΆμ νλ μ€ν
μλ₯Ό μ§μ ν©λλ€. λ°°μΉ ν¬κΈ°κ° μμ λ μ μ©νλ©°, 4λ²μ λ°°μΉμ λν΄ κ·ΈλΌλμΈνΈλ₯Ό μΆμ ν ν, μ
λ°μ΄νΈκ° μ΄λ£¨μ΄μ§λλ‘ μ€μ λ©λλ€. μ΄λ₯Ό ν΅ν΄ λ©λͺ¨λ¦¬ μ¬μ©λμ μ€μ΄λ©΄μλ ν¨κ³Όμ μΈ νμ΅μ ν μ μμ΅λλ€. |
| | |
| | optim="paged_adamw_8bit": μ΅μ ν μκ³ λ¦¬μ¦μΌλ‘ paged_adamw_8bitλ₯Ό μ¬μ©ν©λλ€. μ΄λ 8λΉνΈ AdamW μ΅μ ν μκ³ λ¦¬μ¦μΌλ‘, λ©λͺ¨λ¦¬ μ¬μ©λμ μ€μ¬μ£Όλ©΄μλ ν¨μ¨μ μΈ νμ΅μ κ°λ₯νκ² ν©λλ€. |
| | |
| | warmup_steps=1: νμ΅ μ΄κΈ°μ μλ°μ
μ€ν
μ 1λ‘ μ€μ νμ¬ νμ΅ μ΄κΈ° λ¨κ³μμ νμ΅ μλλ₯Ό μ²μ²ν μ¦κ°μν€λ κΈ°λ²μ
λλ€. |
| |
|
| | learning_rate=2e-4: νμ΅λ₯ μ μ€μ ν©λλ€. μ¬κΈ°μλ 2e-4λ‘ λ§€μ° μμ κ°μ μ¬μ©νμ¬ μμ μ μΈ νμ΅μ΄ μ§νλλλ‘ ν©λλ€. |
| | |
| | fp16=True: νΌν© μ λ°λ νμ΅μ μ¬μ©νκ² λ€λ μ€μ μ
λλ€. FP16 (16-bit λΆλ μμμ )μ μ¬μ©νμ¬ νμ΅ μλλ₯Ό λμ΄κ³ , GPU λ©λͺ¨λ¦¬ μ¬μ©λμ μ€μΌ μ μμ΅λλ€. |
| | |
| | logging_steps=100: 100 μ€ν
λ§λ€ νμ΅ λ‘κ·Έλ₯Ό μΆλ ₯ν©λλ€. |
| |
|
| | push_to_hub=False: λͺ¨λΈμ Hugging Face νλΈλ‘ μ
λ‘λνμ§ μκ² λ€λ μ€μ μ
λλ€. |
| |
|
| | report_to='none': νμ΅ μ€μ λ³΄κ³ ν ν΄μ μ€μ ν©λλ€. μ¬κΈ°μλ μ무 λ³΄κ³ ν΄λ μ¬μ©νμ§ μκ² λ€λ μλ―Έλ‘ 'none'μΌλ‘ μ€μ λμ΄ μμ΅λλ€. |
| | |
| | peft_config=lora_config: LoRA(μ μ°¨μ νμ΅) μ€μ μ μ μ©ν©λλ€. lora_configλ μ΄μ μ μ μλ LoraConfig κ°μ²΄λ‘, LoRAλ₯Ό μ΄μ©νμ¬ λ©λͺ¨λ¦¬ ν¨μ¨μ μΈ νμ΅μ μννλλ‘ μ€μ ν©λλ€. |
| |
|
| | ## λ°μ΄ν° |
| | - 2008 ~ 2024λ
λ λνλ―Όκ΅ μ μμ μ΄λ¦ ν΅κ³ [λνλ―Όκ΅ λ²μ > μ μκ°μ‘±κ΄κ³μμ€ν
](https://efamily.scourt.go.kr) |
| | - λνλ―Όκ΅ μΈλͺ
μ© νμ μ¬μ [λνλ―Όκ΅ λ²μ](http://help.scourt.go.kr) |
| | - 1950-01 ~ 2024-08 μμλ ₯ [곡곡λ°μ΄ν°ν¬νΈ νκ΅μ²λ¬Έμ°κ΅¬μ](https://www.data.go.kr/data/15012679/openapi.do) |
| |
|
| | ## Reference |
| | [μ¬μ£Όνμ](https://ko.wikipedia.org/wiki/%EC%82%AC%EC%A3%BC%ED%8C%94%EC%9E%90) |
| |
|