Update README.md
Browse files
README.md
CHANGED
@@ -1,5 +1,106 @@
|
|
1 |
-
---
|
2 |
-
license: other
|
3 |
-
license_name: exaone
|
4 |
-
license_link: https://huggingface.co/LGAI-EXAONE/EXAONE-3.0-7.8B-Instruct/blob/main/LICENSE
|
5 |
-
---
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
---
|
2 |
+
license: other
|
3 |
+
license_name: exaone
|
4 |
+
license_link: https://huggingface.co/LGAI-EXAONE/EXAONE-3.0-7.8B-Instruct/blob/main/LICENSE
|
5 |
+
---
|
6 |
+
# 2024-NIKL-DCS
|
7 |
+
|
8 |
+
κ΅λ¦½κ΅μ΄μ AI λ§ν μΌμ λν μμ½ 'λͺ¨λΈλ€μμ¬λμμ΄μ' ν <br><br>
|
9 |
+
![image](https://github.com/user-attachments/assets/e8b65f98-bd8a-4bcf-81d9-549e19cee408)
|
10 |
+
|
11 |
+
μ μλ λͺ¨λΈμ μ¬μ νλ ¨λ μΈμ΄ λͺ¨λΈ [EXAONE](https://huggingface.co/LGAI-EXAONE/EXAONE-3.0-7.8B-Instruct)μ κΈ°λ°μΌλ‘ νμΈ νλλμμΌλ©°, νΉμ μ§μμ΄λ κΈ°μ μ μ΅λνλλ‘ μ€κ³λμμ΅λλ€.
|
12 |
+
ν₯ν μ°κ΅¬μμλ μ΄λ¬ν μ§μμ΄λ κΈ°μ μ΄ μ¬λμ μ νΈμ μ‘°νλ μ μλλ‘ [Direct Preference Optimization](https://arxiv.org/abs/2305.18290)κ³Ό κ°μ κΈ°λ²μ ν΅ν΄ νμ΅ν κ³νμ
λλ€.<br><br>
|
13 |
+
νμ¬ μ
λ‘λλ μμ€ μ½λμ κ²½μ° μΈκ° μ νΈ λ°μ΄ν°μ
λ§ κ΅¬μΆ λλ€λ©΄ μ κΈ°λ²μ μ μ©ν μ μλλ‘ μμ±λμμΌλ©°, μΆν μλμΌλ‘ μ μ©λμ΄ νμ΅λ μ μλλ‘ κ³ λν μμ μ
λλ€.
|
14 |
+
|
15 |
+
## Quick Start
|
16 |
+
```python
|
17 |
+
import torch
|
18 |
+
from transformers import AutoTokenizer, AutoModelForCausalLM
|
19 |
+
|
20 |
+
model_name = "BM-K/EXAONE-3.0-7.8B-Daily-Conversation-Summary"
|
21 |
+
device = "cuda"
|
22 |
+
|
23 |
+
model = AutoModelForCausalLM.from_pretrained(
|
24 |
+
model_name,
|
25 |
+
torch_dtype=torch.bfloat16,
|
26 |
+
device_map=device,
|
27 |
+
trust_remote_code=True
|
28 |
+
)
|
29 |
+
|
30 |
+
tokenizer = AutoTokenizer.from_pretrained(model_name)
|
31 |
+
|
32 |
+
PROMPT = '''You are EXAONE model from LG AI Research, a helpful assistant. Please answer the user's questions kindly.'''
|
33 |
+
chat = "[Conversation]\nνμSD2000001: μ λ μ¬ν λ€λλ κ²μ κ΅μ₯ν μ’μνλλ°μ. κ·Έλκ°μ§κ³ μ€νμΈμ΄λ λ μκ΅ μ λ½ μλλ©΄ κ΅λ΄μμλ λ κ°λ¦μ΄λ μ μ£Ό κ°μ λ°λ₯Ό λ§μ΄ λ€λ
λλ°\nνμSD2000001: νΉμ μ¬ν λ€λλ κ±° μ’μνμλμ?\nνμSD2000002: μ μ¬ν λ€λλ κ±° λκ² μ’μν΄μ λνκ΅ λ΄λ΄ μ¬νμ μμ² λ§μ΄ λ€λ
μλλ°μ.\nνμSD2000002: μ κ° κ³ λ±νκ΅ λλ μ¬νμ λν΄ ν₯λ―Έκ° μμλλ° κ·Έκ² μ’ μλ²μ§κ° μ§ λλ‘ ν¨ν€μ§μ²λΌ μ¬νμ λ€λ
μ κ·Έλ° κ² κ°μμ.\nνμSD2000002: κ·Έλμ λνκ΅ κ° μ΄νλ‘λ ν΄μΈμ¬νμ λκ² λ§μ΄ κ°μλλ° κ·Έμ€μμ μ μΌ κΈ° μ’μλ κ±°λ μ€νμΈμ΄λ ν¬λ₯΄ν¬κ°μ΄μκ±°λ μ.\nνμSD2000002: μ΄~ νΉμ ν¬λ₯΄ν¬κ°μ΄λ μ€νμΈ μ λ½ μͺ½ λ€λ
μ€μ μ μμΌμ κ°μ?\nνμSD2000001: μ΄~ λ€. μ λ μ°μ°ν μ€νμΈκ³Ό ν¬λ₯΄ν¬κ°μ λ€λ
μμμμ΅λλ€.\nνμSD2000001: μ΄~ μ λ μ€νμΈ μ€μμλ λ§λ리λμ κ·Όκ΅μ μμλ ν¨λ λλΌλ μ§μμ΄ κ΅μ₯ν μ’μλλ°μ. κ·Έ ν¨λ λμμ νΉν κΈ°μ΅μ λ¨μλ κ±°λ κ±°κΈ°μ λμ±λΉμ΄ μλλ° κ·Έ μ±λΉμ΄ μμ² νλ €νλλΌκ³ μ. κ·Έλμ κ±°κΈ°λ₯Ό κΎΈλ©°λ
Ό κ±°λ₯Ό 보면μ κΈμ μμ² λ§μ΄ μ¬μ©ν΄κ°μ§κ³ λκ² λΉ€μ§λΉ€μ§νκ³ μ’ μ±λΉμ λ³΄ν΅ μ’ μλ°νλ€λΌλ μΈμμ΄ μμλλ° μ~ μ΄λ κ² νλ €ν μ±λΉλ μꡬλλΌλ κ±°λ₯Ό μλ‘κ² μκ² λμμ΅λλ€.\nνμSD2000001: μ΄~ λ ν¨λ λμ μ§μ μμλ κ°μ΄ λ¨Ήμμλλ° μ~ μ΄λ¦μ μ§κΈ μ μκ°μ΄ λμ§λ μμ§λ§ κ΅μ₯ν λ¬λ¬νλ κ·Έλ° λμ νΈ μ’
λ₯μλλ° κ·Έ~ λμ νΈλ λ¨Ήκ³ κ·Έλ€μμ μ²μ²ν κ±Έμ΄ λ€λλ©΄μ μ£Όλ³ νκ²½λ λ³΄κ³ κ·Όκ΅ μ¬νλ§μ μ½κ° μλ°ν λ§μ΄ μμλ€κ³ μκ°μ ν©λλ€.\nνμSD2000001: μ΄~ λ λ¬Όλ‘ λ§λ리λλ κ΅μ₯ν μ’μλλ° μ λ½ μ¬νμ λ§μ΄ κ°μ
¨λ€κ³ ν΄μ νΉμ ν¨λ λλ κ°λ³Έ μ μ΄ μλμ?\nνμSD2000002: μ~ μ κ° ν¨λ λλ λ€λ
μλλ° μ λ μ΄μ μ¬ν μΌμ μ κΈΈκ² μ‘μμ ν¨λ λλ ν루λ₯Ό λ΄€λλ° λ κ·Έλ κ² λ무 λμ κΈ° λλ¬Έμ λ§μ΄ λ³΄μ§ λͺ»ν κ² κ°μμ.\nνμSD2000002: κ·Έλλ λ²μ€ κ΄κ΄λ²μ€λ₯Ό νκ³ κ³μ λμλ€λλ©΄μ μ΄μ λ΄λ¦¬λ λ°λ§λ€ κ΄κ΄μ ν μ μλ λ²μ€λ₯Ό νλλ°μ. κ·Έ λ²μ€λ₯Ό νκ³ μ 체λ₯Ό λ€ λ΄λ €μ λ³΄λ €κ³ νμ§λ§ λ μ¨κ° λ무 λμμ κΈλ°© κΈλ°© μ΄μ xx μ₯μλ‘ λμ΄κ°λ κ² κ° κ°μ΅λλ€.\nνμSD2000002: κ±°κΈ°λ μ΄μ κ³ λ λμλΌκ³ ν΄μ μ¬λλ€μ΄ λ§μ΄ μΆμ²ν κ±°μ λΉν΄μλ μ λ ν루λ₯Ό μ‘κΈ°μλ μ‘°κΈ λΆμ‘±ν μ¬νμ§λΌλ μκ°μ΄ λ€μκ³ \nνμSD2000002: μ€νλ € κ΄μ₯μμ μΌνμ νλ κ² λ κΈ°μ΅μ λ¨μ΅λλ€.\n\n[Question]\nμ ν΄μΈμ¬ν μ£Όμ μ λν λνλ₯Ό μμ½ν΄μ£ΌμΈμ."
|
34 |
+
|
35 |
+
message = [
|
36 |
+
{"role": "system", "content": PROMPT},
|
37 |
+
{"role": "user", "content": chat}
|
38 |
+
]
|
39 |
+
|
40 |
+
source = tokenizer.apply_chat_template(
|
41 |
+
message,
|
42 |
+
add_generation_prompt=True,
|
43 |
+
return_tensors="pt"
|
44 |
+
)
|
45 |
+
|
46 |
+
outputs = model.generate(
|
47 |
+
source.to(device),
|
48 |
+
max_new_tokens=1024,
|
49 |
+
eos_token_id=tokenizer.eos_token_id,
|
50 |
+
do_sample=False
|
51 |
+
)
|
52 |
+
|
53 |
+
summary = tokenizer.decode(outputs[0][source.shape[-1]:], skip_special_tokens=True).replace('\n',' ').replace(' ', ' ')
|
54 |
+
|
55 |
+
"""
|
56 |
+
>>> μ΄ λνμμ νμλ€μ μ¬ν κ²½νμ λν΄ μ΄μΌκΈ°νμ΅λλ€. SD2000001μ μ€νμΈκ³Ό ν¬λ₯΄ν¬κ°μ μ¬ννλ€κ³ λ§νμ΅λλ€. νΉν ν¨λ λμμ νλ €ν λμ±λΉκ³Ό μ§μ μμμ λ¨Ήμλ κ²½νμ 곡μ νμ΅λλ€. SD2000002λ λνκ΅ λλΆν° μ¬νμ μ’μνκ³ , κ³ λ±νκ΅ λλ μλ²μ§κ° μ§μ€ ν¨ν€μ§ μ¬νμ λ€λ
κΈ° λλ¬Έμ μ¬νμ ν₯λ―Έκ° μμλ€κ³ λ§νμ΅λλ€. λνκ΅ μ΄νλ‘λ μ€νμΈκ³Ό ν¬λ₯΄ν¬κ°μ μ¬ννλλ°, νΉν μ€νμΈμ΄ μ’μλ€κ³ λ§νμ΅λλ€. λ ν¨λ λλ λ€λ
μμ§λ§ λ μ¨κ° λ무 λμμ λ§μ΄ 보μ§λ λͺ»νλ€κ³ λ§νμ΅λλ€.
|
57 |
+
"""
|
58 |
+
```
|
59 |
+
|
60 |
+
## νμ΅ λ° νκ° λ°©λ²
|
61 |
+
|
62 |
+
### μ€λΉ
|
63 |
+
|
64 |
+
```
|
65 |
+
# νμ λΌμ΄λΈλ¬λ¦¬λ₯Ό μ€μΉν©λλ€.
|
66 |
+
pip install -r requirements.txt
|
67 |
+
```
|
68 |
+
|
69 |
+
```
|
70 |
+
# νμ΅ λ° νκ° λ°μ΄ν°μ
μ μμΉμν΅λλ€.
|
71 |
+
dcs_2024_data
|
72 |
+
βββ μΌμλνμμ½_train.json
|
73 |
+
βββ μΌμλνμμ½_dev.json
|
74 |
+
βββ μΌμλνμμ½_train.json
|
75 |
+
```
|
76 |
+
|
77 |
+
huggingfaceμμ [EXAONE](https://huggingface.co/LGAI-EXAONE/EXAONE-3.0-7.8B-Instruct) access tokenμ [λ°κΈ](https://huggingface.co/docs/hub/security-tokens)λ°μ΅λλ€.
|
78 |
+
|
79 |
+
### νμ΅
|
80 |
+
|
81 |
+
```
|
82 |
+
CUDA_VISIBLE_DEVICES=0,1,2 python -m train model=exaone datasets=[DCS] loss=sft exp_name=exaone_sft batch_size=4 max_prompt_length=2048 max_length=2560 token='{access_token}'
|
83 |
+
```
|
84 |
+
|
85 |
+
νμ΅μ΄ μλ£λλ©΄ `model_ckpt/root/` λλ ν 리μμ `exp_name + {νμ΅ μμ μκ°}`μ ν΄λΉνλ λͺ¨λΈ 체ν¬ν¬μΈνΈ νμΌμ΄ μ μ₯λ©λλ€.
|
86 |
+
|
87 |
+
### μΆλ‘
|
88 |
+
|
89 |
+
```
|
90 |
+
python inference/run_test.py --output result.json --model_id model_ckpt/root/exaone_sft_2024-08-26_16-28-10_430889/step-992/ --device cuda:0
|
91 |
+
```
|
92 |
+
|
93 |
+
`model_id` λ³μμ λͺ¨λΈ 체ν¬ν¬μΈνΈ κ²½λ‘λ₯Ό μ
λ ₯ν λ€ μ€ννλ©΄ μμ€μ½λ ν΄λμ `output` νμΌμ΄ μμ±λκ³ , ν΄λΉ νμΌ μ μΆ μ μμν(리λ보λ)μ μ±μ μ΄ λ°μλ©λλ€.
|
94 |
+
|
95 |
+
## Citing
|
96 |
+
```
|
97 |
+
@inproceedings{exaone_sft_dcs,
|
98 |
+
title={EXAONE Dialogue Coversation Summarization Model},
|
99 |
+
author={Bong-Min Kim and Gyu-Min Park},
|
100 |
+
year={2024},
|
101 |
+
url={https://huggingface.co/BM-K/EXAONE-3.0-7.8B-Daily-Conversation-Summary}
|
102 |
+
}
|
103 |
+
```
|
104 |
+
|
105 |
+
## License
|
106 |
+
[exaone](https://huggingface.co/LGAI-EXAONE/EXAONE-3.0-7.8B-Instruct/blob/main/LICENSE)
|