JEJUMA-001-README
Browse files
README.md
CHANGED
@@ -1,3 +1,101 @@
|
|
1 |
-
|
2 |
-
|
3 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# JEJUMA-001
|
2 |
+
LLM์ผ๋ก ์ฌ๋ผ์ ธ๊ฐ๋ ์ฐ๋ฆฌ ๋ฐฉ์ธ ์งํค๊ธฐ ํ๋ก์ ํธ1: ์ ์ฃผ๋ ๋ฐฉ์ธ
|
3 |
+
|
4 |
+
## ์ ์์ํ๊ฒ ๋์๋์?
|
5 |
+
### ๋น ๋ฅด๊ฒ ์ฌ๋ผ์ ธ๊ฐ๋ ์ง์ญ๋ฐฉ์ธ: ์ ์ฃผ๋
|
6 |
+
* ์ฌ๋ฌ ์ง์ญ ๋ฐฉ์ธ, ํนํ ์ ์ฃผ๋์ ๋ฐฉ์ธ์ด ๋น ๋ฅด๊ฒ ์ฌ๋ผ์ง๊ณ ์์ต๋๋ค.
|
7 |
+
* ์ ๋ค์ค์ฝ๋ ์ ์ฃผ์ด(์ ์ฃผ๋ฐฉ์ธ)์ **์์ฃผ ์ฌ๊ฐํ๊ฒ ์๊ธฐ์ ์ฒํ ์ธ์ด** ๋ก ๋ถ๋ฅํ์ต๋๋ค.
|
8 |
+
* ์ ์ฃผ๋๋ฏผ ์ค **์ ์ฃผ์ด๋ฅผ ์๋ ์ฌ๋์ ๋น์จ์ 36.1%** ์ ๊ทธ์น๊ณ ์์ต๋๋ค.
|
9 |
+
* ํนํ, ํ์ง์ญ๊ณผ์ ๊ต๋ฅ๊ฐ ํ๋ฐํด์ง๋ฉด์ ์ ์ ์ธต์์ ์ ์ฃผ์ด๋ณด๋จ ํ์ค์ด๋ฅผ ์ ํธํ๋ ํ์์ด ๋ํ๋ฉ๋๋ค.
|
10 |
+
|
11 |
+
### ์ง์ญ๋ฐฉ์ธ์ ์ฝํ ์ธ์ด๋ชจ๋ธ
|
12 |
+
* ์จ๋ผ์ธ ์์ค๋ ํ์ค์ด๋ก ๊ตฌ์ฑ๋์ด ์๊ธฐ์, ์๋ฃ๊ฐ ์ ์ ์ง์ญ๋ฐฉ์ธ์ ์ ๋ชจ๋ฆ
๋๋ค.
|
13 |
+
* ํนํ ์ ์ฃผ์ด๋ ํ์ค์ด์ ์ฐจ์ด๊ฐ ํฌ๊ธฐ ๋๋ฌธ์, ์ ๋ช
ํ ๋จ์ด๋ ๋ฌธ์ฅ ์ธ์๋ ๋ชจ๋ธ์ด ์ดํดํ ์ ์์ต๋๋ค.
|
14 |
+
|
15 |
+
## ์ด๋ป๊ฒ ์ด๋ฅผ ํด๊ฒฐํ๋์?
|
16 |
+
* ์ธ์ด๋ชจ๋ธ์ ํตํด ์ด๋ ค์ด ์ ์ฃผ์ด๋ฅผ ํ์ค์ด๋ก ๋ณ๊ฒฝํ์ฌ ์ ์ฃผ์ด๊ฐ ์ํ์ง์ง ์๋๋ก ํฉ๋๋ค.
|
17 |
+
* ์ธ์ด๋ชจ๋ธ์ ํตํด ํ์ค์ด์ ์ ์ฃผ์ด ๋ฒ์ ์ ์์ฑํ์ฌ ํ์ธํ ์ ์๋๋ก ํฉ๋๋ค.
|
18 |
+
* ์ธ์ด๋ชจ๋ธ์ ์ฌ์ฉํ ์ด์ ๋ ๊ธฐ์กด์ ํ์ต๋ ๋ค์ํ ๋ด์ฉ์ ๊ทธ๋๋ก ์ด์ด๊ฐ ์ ์๋๋ก ํ๊ธฐ ์ํจ์
๋๋ค.
|
19 |
+
|
20 |
+
## ๊ฐ๋ฐํ ์ธ์ด๋ชจ๋ธ์ ๋ํ ์ค๋ช
|
21 |
+
* ์ ์ฃผ๋ ๋ฐฉ์ธ ๋ฐ์ดํฐ๋ฅผ ๋ฐํ์ผ๋ก Llama3.1์ ๋ค์ํ ํ
์คํฌ๊ฐ ๊ฐ๋ฅํ๋๋ก ํ์ธํ๋ํ์ฌ, ์ ์ฃผ๋ ๋ฐฉ์ธ๊ณผ ๊ด๋ จ๋ ์ฌ๋ฌ ํ
์คํฌ๋ฅผ ์ํํ๋๋ก ํฉ๋๋ค.
|
22 |
+
* `JEJUMA-001`์ ํ์ฌ ๋ฐฉ์ธ๊ณผ ํ์ค์ด๊ฐ ๋ณ๊ฒฝ, ๋ฐฉ์ธ ํ์ง ๋ฑ์ ์ญํ ์ ์ํํ ์ ์์ต๋๋ค.
|
23 |
+
* `JEJUMA-001`์ ๋ชจ๋ธ์ ํ๋ จํ๊ธฐ ์ํด ์ฝ 105๋ง๊ฐ์ ์ ์ฃผ๋ฐฉ์ธ-์์ธ๋ง ํ์ด ๋ฐ์ดํฐ๋ฅผ ์์งํ๊ณ , ๊ทธ ์ค ์ ์ฃผ์ด๊ฐ ์ ๋ค์ด๋ ๋ฐ์ดํฐ 17๋ง๊ฐ๋ฅผ ์ ๋ณํ์์ต๋๋ค.
|
24 |
+
* ์ด๋ฅผ ๋ฐํ์ผ๋ก ์ด 4๊ฐ์ง์ ํ
์คํฌ๋ฅผ ์ํํ๋๋ก ํ๋ จ ๋ฐ์ดํฐ๋ฅผ ์์ฑํ์์ผ๋ฉฐ, ์ด๋ ์ด ์ฝ 34๋ง๊ฐ์ ๋ฐ์ดํฐ์
๋๋ค.
|
25 |
+
* LlamaFactory๋ฅผ ํตํด LoRA ๋ฐฉ์์ผ๋ก ํ๋ จํ์์ผ๋ฉฐ, ๋ชจ๋ ๋ฐ์ดํฐ์ ๋ํด 1์ํญ ํ์ตํ์์ต๋๋ค.
|
26 |
+
* ์ด๋ ค์ด ์ ์ฃผ๋ ๋ง์ ๋ํด์, gpt4o์ ๊ตญ์ฐ ๋ชจ๋ธ์ธ ์
์คํ
์ด์ง Solar, ๋ค์ด๋ฒ HCX ๋์ ๋ฒ์ญ ์ ํ๋๋ฅผ ๋ณด์
๋๋ค.
|
27 |
+
|
28 |
+
### ์ ์ฃผ์ด -> ํ์ค์ด
|
29 |
+
|
30 |
+
| **์
๋ ฅ ๋ฌธ์ฅ** | ์์ด ํด์ ๋
์ ๋ง ๋ ๊ฑฐ ๋ณด๋ ์ธ ์์ด์ฐ๋ค |
|
31 |
+
|-------------------------------|------------------------------------------------------------------------------------|
|
32 |
+
| **์ ๋ต** | **์ฌ ํ์ ๋ญ์ด์ด ๋ง ๋ ๊ฑฐ ๋ณด๋, ์ถ์ด ๋ชจ์์ด๋ค.** |
|
33 |
+
| Upstage Solar ์ถ๋ ฅ | ๊ทธ ๋ฐ์์ ๋ฑ์ด ๋ํ๋๋ ๊ฑธ ๋ณด๋๊น ์ ๋ง ๋๋๋ค. |
|
34 |
+
| Naver HCX ์ถ๋ ฅ | ์ฌ์ ํ์ ๋
์ด๊ฐ ๋ง๊ตฌ ๋ ๊ฒ์ ๋ณด๋ ์ด๋ฆฐ ์๋๋ฌด์
๋๋ค. |
|
35 |
+
| GPT-4o ์ถ๋ ฅ | ์ ๊ธฐ ๋ฐ์์ ๋
์ฌ๊ฐ ๋ง ๋ํ๋ ๊ฑธ ๋ณด๋๊น ์ ๋ง ๋๋๋ค. |
|
36 |
+
| **JEJUMA-001 ์ถ๋ ฅ** | |
|
37 |
+
|
38 |
+
### ํ์ค์ด -> ์ ์ฃผ์ด
|
39 |
+
|
40 |
+
| **์
๋ ฅ ๋ฌธ์ฅ** | ๊ทค๋๋ฌด์ ๊ทธ๋ฅ ๊ฐ์ ๋๋ค ์๋ฒ์ง์ข ์ฐพ์์๋ผ. |
|
41 |
+
|-------------------------------|------------------------------------------------------------------------------------|
|
42 |
+
| **์ ๋ต** | ๋ฏธ๊นก๋ญ ๊ฒฝ ๊ฐ์ฌ ๋๋ค ์๋ฐฉ ์ข ๋ฐ๋ น |
|
43 |
+
| Upstage Solar ์ถ๋ ฅ | ๊ทค ๋๋ฌด์ ๊ฐ์ ๋ค ์๋ฒ์ง๋ฅผ ์ข ์ฐพ์์. |
|
44 |
+
| Naver HCX ์ถ๋ ฅ | ๊ทค๋ญ์ ๊ฐ ๋๋ค ์๋ฐฉ ์ข ๋ฐ๋ น์ค๋ผ. |
|
45 |
+
| GPT-4o ์ถ๋ ฅ | ๊ทค๋๋ฌด์ ๊ฑ ๊ฐ์ ํ์ ์๋ฐฉ ์ข ์ฐพ์์๋ผ. |
|
46 |
+
| **JEJUMA-001 ์ถ๋ ฅ** | |
|
47 |
+
|
48 |
+
## ์ด๋ป๊ฒ ์ฌ์ฉํ๋์?
|
49 |
+
* ์ ์๋ ํฌํ๋ฆฟ์์ `dialect_to_standard`, `standard_to_dialect`, `detect_dialect`, `detect_dialect_and_convert` ์ค ํ๋๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
|
50 |
+
* `dialect_to_standard`: ์ ์ฃผ์ด๋ฅผ ํ์ค์ด๋ก ๋ณ๊ฒฝ
|
51 |
+
* `standard_to_dialect`: ํ์ค์ด๋ฅผ ์ ์ฃผ์ด๋ก ๋ณ๊ฒฝ
|
52 |
+
* `detect_dialect`: ์ ์ฃผ์ด/ํ์ค์ด ๊ฐ์ง
|
53 |
+
* `detect_dialect_and_convert`: ์๋์ผ๋ก ์ ์ฃผ์ด/ํ์ค์ด๋ฅผ ๊ฐ์งํ์ฌ ํ์ค์ด/์ ์ฃผ์ด๋ก ๋ณ๊ฒฝ
|
54 |
+
|
55 |
+
```python
|
56 |
+
import transformers
|
57 |
+
import torch
|
58 |
+
|
59 |
+
model_id = "JEJUMA/JEJUMA-001"
|
60 |
+
|
61 |
+
pipeline = transformers.pipeline(
|
62 |
+
"text-generation",
|
63 |
+
model=model_id,
|
64 |
+
model_kwargs={"torch_dtype": torch.bfloat16},
|
65 |
+
device_map="auto",
|
66 |
+
)
|
67 |
+
|
68 |
+
terminators = [
|
69 |
+
pipeline.tokenizer.eos_token_id,
|
70 |
+
pipeline.tokenizer.convert_tokens_to_ids("<|eot_id|>")
|
71 |
+
]
|
72 |
+
|
73 |
+
class JejuPromptTemplate:
|
74 |
+
@staticmethod
|
75 |
+
def dialect_to_standard(text):
|
76 |
+
return [{"role":"user", "content":"Convert the following sentence or word which is Jeju island dialect to standard Korean: " + text},]
|
77 |
+
|
78 |
+
@staticmethod
|
79 |
+
def standard_to_dialect(text):
|
80 |
+
return [{"role":"user", "content":"Convert the following sentence or word which is standard Korean to Jeju island dialect: " + text},]
|
81 |
+
|
82 |
+
@staticmethod
|
83 |
+
def detect_dialect(text):
|
84 |
+
return [{"role":"user", "content":"Detect the following sentence or word is Jeju island dialect or standard Korean: " + text},]
|
85 |
+
|
86 |
+
@staticmethod
|
87 |
+
def detect_dialect_and_convert(text):
|
88 |
+
return [{"role":"user", "content":"Detect the following sentence or word is Jeju island dialect or standard Korean and convert the following sentence or word to Jeju island dialect or standard Korean: " + text},]
|
89 |
+
|
90 |
+
|
91 |
+
outputs = pipeline(
|
92 |
+
JejuPromptTemplate.standard_to_dialect("์์ด ํด์ ๋
์ ๋ง ๋ ๊ฑฐ ๋ณด๋ ์ธ ์์ด์ฐ๋ค"),
|
93 |
+
max_new_tokens=512,
|
94 |
+
eos_token_id=terminators,
|
95 |
+
do_sample=True,
|
96 |
+
temperature=0.1,
|
97 |
+
top_p=0.9,
|
98 |
+
)
|
99 |
+
|
100 |
+
print(outputs[0]["generated_text"][-1])
|
101 |
+
```
|