File size: 6,376 Bytes
ab2bbca 126c7fc ab2bbca 126c7fc ab2bbca 126c7fc ab2bbca 126c7fc ab2bbca 126c7fc ab2bbca 126c7fc ab2bbca 126c7fc ab2bbca 126c7fc ab2bbca 126c7fc ab2bbca 126c7fc ab2bbca 126c7fc ab2bbca 126c7fc ab2bbca 126c7fc ab2bbca 126c7fc ab2bbca 126c7fc ab2bbca 126c7fc ab2bbca 126c7fc ab2bbca 126c7fc ab2bbca 126c7fc ab2bbca 126c7fc ab2bbca 126c7fc ab2bbca 126c7fc ab2bbca 126c7fc ab2bbca 126c7fc ab2bbca 126c7fc d61995c 126c7fc ab2bbca 126c7fc | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 | ---
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)
|