Qwen3.8-27B โ Korean CJK-Output Suppression (M2)
ํ๊ตญ์ด๋ก ๋ตํ ๋ ๋ฌธ์ฅ ์ค๊ฐ์ ํ์ยท๊ฐ๋๊ฐ ๋ผ์ด๋๋ ํ์์ ๊ฐ์ค์น ์์ค์์ ์ค์
๋๋ค.
lm_head ์ CJK ํ ํฐ 54,902ํ๋ง ๊ต์ฒดํฉ๋๋ค.
์ธ๊ธฐ๊ฐๆ้ซ็ ํด์ ์๋ฌผ ํ
๋งํํฌ โ base
์คํ 6์ๅๅ็(๊ฒฝ๊ณ) ์๊ฐ๋๋ โ base
ํ์ผ ๋ฒ์ ๅทๅ ๋ง์ง๋ง ์์ ์๊ฐ์ โ base
โ ๏ธ ์ด ์ ์ฅ์์๋ ๊ฐ์ค์น๊ฐ ์์ต๋๋ค โ ๋ ์ํผ์ ๋๋ค
๋ฐ๋๋ ํ
์๊ฐ lm_head.weight ํ๋๋ฟ์ด๊ณ , 32๊ฐ ํ์ผ 55.6GB ์ค 31๊ฐ๊ฐ ์๋ณธ๊ณผ ๋ฐ์ดํธ
๋์ผํฉ๋๋ค. 55GB ์ฌ๋ณธ์ ํ๋ ๋ ๋ง๋๋๋ ์๋ณธ์ ๋ฐ์ ์ฌ๊ธฐ ์คํฌ๋ฆฝํธ๋ฅผ ๋๋ฆฌ๋ ํธ์ด ๋ซ์ต๋๋ค โ
๋ฒ ์ด์ค๊ฐ ๊ฐฑ์ ๋๋ฉด ๊ทธ๋๋ก ๋ฐ๋ผ๊ฐ๊ณ , ๋ฌด์์ด ๋ฌ๋ผ์ก๋์ง๋ diff ๋ก ํ์ธ๋ฉ๋๋ค.
hf download Qwen/Qwen3.8-27B --local-dir ./Qwen3.8-27B
python apply_mask.py --model-dir ./Qwen3.8-27B --mask mask_m2-medium.json
CPU ๋ก ์ ๋ถ์ด๋ฉด ๋๋ฉ๋๋ค(GPU ๋ถํ์). ์คํฌ๋ฆฝํธ๋ ์ฐ๊ธฐ ์ ์ ๋ง์ง์ ๊ฒ์ฆํ๊ณ , ์ฐ๊ณ ๋์
์ฌ๋ก๋ํด ์๋ ์ธ ํ
์๊ฐ ์ ๋ฐ๋์๋์ง assert ํฉ๋๋ค. --dry-run ์ผ๋ก ์ธก์ ๋ง ํ ์๋ ์์ต๋๋ค.
| ํ์ผ | ๋ฌด์ |
|---|---|
apply_mask.py |
์๋ณธ์ ์ ์ฉํ๋ ์คํฌ๋ฆฝํธ (์ธก์ โ ๊ฒ์ฆ โ ์ค๋ 1๊ฐ ํจ์น โ ์ฌ๋ก๋ ๊ฒ์ฆ) |
mask_m2-medium.json |
์ฑํ๋ ๋ง์คํฌ โ 54,902 ํ ํฐ |
mask_m1-conservative.json |
๋ณด์์ ๋ง์คํฌ โ 34,187 ํ ํฐ (๊ฐ๋ + ๊ฐ์ฒด์ ์ฉ) |
mask_m3-full.json |
์ ๋ฉด ๋ง์คํฌ โ 58,888 ํ ํฐ (โ ํ์ ๋ณ๊ธฐ๊ฐ ๋ฌด๋์ง๋๋ค, ์๋ ์ฐธ์กฐ) |
build_masks.py |
๋ง์คํฌ 3์ข ์ ํ ํฌ๋์ด์ ์์ ๋ค์ ๋ง๋๋ ์คํฌ๋ฆฝํธ |
๋ฌด์์ด ๋ฌ๋ผ์ง๋
ํ๋กฌํํธ 3,369๊ฑด, ๊ฐ์ ์์ง์์ ์ง์ง์ด ์ธก์ (temperature=0.0, max_tokens=400).
| ์ค์ผ๋ฅ | ์ค์ค๋ฅ* | |
|---|---|---|
Qwen/Qwen3.8-27B |
2.55% | 1.81% |
| M1 ์ ์ฉ | 1.51% | 0.83% |
| M2 ์ ์ฉ (๊ถ์ฅ) | 0.68% | 0.18% |
| M3 ์ ์ฉ | 0.06% | โ |
* ์ ์์ ์ธ ํ๊ตญ์ด ํ์ ๋ณ๊ธฐ(๊ฐํญ(้ๆธฏ))๋ฅผ ์ ์ธํ ์ค์ ์ค๋ฅ. McNemar p < 0.0001,
๋ฐ๊ฐ ๋
ธ์ด์ฆ ๋ฐ๋ฅ 0.33pp ๋๋น 5.7๋ฐฐ.
ํ๊ตญ์ด ํ์ ๋ณ๊ธฐ๋ ๋ณด์กด๋ฉ๋๋ค. ํ์๋ฅผ ๋ช
์์ ์ผ๋ก ์๊ตฌํ 12๊ฐ ํ๋กฌํํธ์์ M1ยทM2 ๋
base ์ ๋์ผํ๊ฒ 12/12 ์์ฑํฉ๋๋ค. CJK ์
๋ ฅ๋ ๊ทธ๋๋ก ์ฝ์ต๋๋ค โ embed_tokens ์
ํ ํฌ๋์ด์ ๋ ๊ฑด๋๋ฆฌ์ง ์์ต๋๋ค.
coding(HumanEval) base 92.19% = M2 92.19%, delta 0.0pp (n=64).
โ ๏ธ n=64 ์ ์ต์๊ฒ์ถ์ฐจ๊ฐ 13.29pp ๋ผ ํ์์ ์ผ๋ก๋ INSUFFICIENT_N ์
๋๋ค โ
"ํ๊ท ์์"์ด ์๋๋ผ "๊ฒ์ถํ์ง ๋ชปํ๋ค"๋ก ์ฝ์ด ์ฃผ์ธ์.
๋ฐฉ๋ฒ
lm_head.weight ์ ๋์ ํ์ ์๋์ํ ํ๊ท ๋ฐฉํฅ์ ํฐ ์์ ๋ฐฐ์๋ก ๋์ฒดํฉ๋๋ค.
W_i := -alpha * mu_h / ||mu_h||^2 (alpha = 200)
lm_head ์ bias ๊ฐ ์์ด ํ์ 0 ์ผ๋ก ๋ง๋ค๋ฉด ๋ก์ง์ด 0 ์ด ๋ ๋ฟ โinf ๊ฐ ์๋๋๋ค. ๋ค๋ฅธ
ํ๋ณด๊ฐ ์ ๋ถ ์์์ธ ์๊ฐ 0 ์ด argmax ๊ฐ ๋ฉ๋๋ค. mu_h ๋ ํ๊ตญ์ด 6๋ฌธ์ฅ์ ์ต์ข
์๋์ํ
ํ๊ท ์ผ๋ก ์ธก์ ํฉ๋๋ค(apply_mask.py ์ PROBE_TEXTS, ๋ ๋ฒ์ ๋
๋ฆฝ ์ธก์ ์์
||mu_h||ยฒ ๊ฐ 9845.958 / 9887.059 ๋ก 0.4% ์์์ ์ฌํ). ๊ฒฐ๊ณผ ๋ก์ง์ โ217.0 ๋ ์ต๋
16.5 ์
๋๋ค.
โ "ํ๊ธ ํ ํฐ์ W ํ ํ๊ท "์ mu_h ํ๋ก์๋ก ์ฐ๋ ค๋ ์๋๋ ๊ธฐ๊ฐ๋์ต๋๋ค
(cos(mu_h, mu_W) = 0.048, ์ฌ์ค์ ์ง๊ต). forward pass ๊ฐ ํ์ํฉ๋๋ค.
๋ฌด์์ ์๋ฅด๊ณ ๋ฌด์์ ๋จ๊ฒผ๋
์ค์ผ์ ๋ฌธ์๋ก ๋ณด๋ฉด 72.3%๊ฐ ํ๊ตญ์ด๋ ์ฐ๋ ๋ฒ์ฒด/๊ณต์ฉ ํ์๋ผ "๊ฐ์ฒด๋ง ์๋ฅด๊ธฐ"๋ก๋ ๋ถ์กฑํฉ๋๋ค.
๊ทธ๋ฐ๋ฐ ํ ํฐ์ผ๋ก ๋ณด๋ฉด ์ค์ผ 498ํ ์ค 355ํ๊ฐ ๆจ็ยท่ดตๅ
ฌๅธยทๅ
ทไฝๆถ้ด ๊ฐ์ ์ค๊ตญ์ด ๋จ์ด
ํต์ง์
๋๋ค. ํ๊ตญ์ด ํ์ ๋ณ๊ธฐ๋ ๋ฑ๊ธ์๋ก ์ชผ๊ฐ์ง๋๋ค(๊ฐํญ(้ๆธฏ) โ ้,ๆธฏ).
๊ทธ๋์ M2 ๋ ๊ฐ๋ + ๊ฐ์ฒด์ ์ฉ + 2์ ์ด์ ์์ํ์ ํ ํฐ(54,902๊ฐ)์ ์๋ฅด๊ณ ๋จ์ผ ํ์
ํ ํฐ์ ๋จ๊น๋๋ค. ๋๊ฐ๋ ๋ชฉ์ ยท์ฌ๊ณ ์ฒ๋ผ ํต์ง ํ ํฐ์ธ ํ๊ตญ ํ์์ด์
๋๋ค.
M3(์ ๋ฉด, 58,888๊ฐ)์ ์ค์ผ์ 0.06%๊น์ง ๋ฎ์ถ์ง๋ง ํ์ ๋ณ๊ธฐ๊ฐ 12/12 โ 3/12 ๋ก ๋ฌด๋์ง๊ณ ,
๋จ์ 3๊ฑด๋ ํ๋ฆฐ ํ์๋ฅผ ๋
๋๋ค(ๅตๆฌโๅ, ์์น์ง๋งโๅฃบ้ฝ). ๋น๊ต์ฉ์ผ๋ก ์ฌ๋ ค ๋์์
๋ฟ ๊ถ์ฅํ์ง ์์ต๋๋ค.
๋ค๋ฅธ ๋ชจ๋ธ์ ์ฐ๋ ค๋ฉด
ํ ํฐ id ๋ ํ ํฌ๋์ด์ ์ ์ข ์๋ฉ๋๋ค. ๋ค๋ฅธ ์ฒดํฌํฌ์ธํธ๋ผ๋ฉด ๋ง์คํฌ๋ฅผ ๋ค์ ๋ง๋์ธ์.
python build_masks.py --model <your/model> # transformers, opencc ํ์
ํ๊ณ
- โ ๏ธ
temperature๋ฅผ ๋ฎ๊ฒ ์ฐ์ธ์. ์จ๋๊ฐ ์ค์ผ๋ฅ ์ 5๋ฐฐ ์ข์ฐํฉ๋๋ค โ ๊ฐ์ ๋ชจ๋ธยท๊ฐ์ ํ๋กฌํํธ์์T=1.09.33% vsT=0.01.92%. ์ด ์นด๋์ ๋ชจ๋ ์์น๋T=0.0๊ธฐ์ค์ ๋๋ค. - ๊ฐ์ง์น๊ธฐ์ ํํ์ 0 ์ด ์๋๋๋ค. ์ ๋ฉด ๋ง์คํน์์๋ 2/3,369 ๊ฐ ๋จ์๊ณ ์ ์ฒด๋
้ยท่ฉ์ด์์ต๋๋ค. ํฌ๊ท ํ์๋ ์ดํ์ ๋จ๋ ํ ํฐ์ด ์์ด ๋ฐ์ดํธ ์กฐ๊ฐ์ผ๋ก ์กฐ๋ฆฝ๋๊ณ (้โ[98248, 243]), ๊ทธ ๋ฐ์ดํธ ํ ํฐ์ ์๋ฅผ ์ ์์ต๋๋ค โ ์๋ฅด๋ฉด ์์ UTF-8 ์ฒ๋ฆฌ๊ฐ ๊นจ์ง๋๋ค. - ๋ฅ๋ ฅ ๊ฒ์ฆ์ coding ์ถ๋ง ํ์ต๋๋ค.
longctxยทkmmluยทenglish๋ ์ฌ์ง ์์์ต๋๋ค. - ํ์ ๋๊ฐ ํ๋ก๋ธ๋ n=12 ๋ก ์ ๋ขฐ๊ตฌ๊ฐ์ด ๋์ต๋๋ค([75.75, 100]).
- ๊ฐ์ ๋ ์ํผ๋ฅผ 0.8B ์ ์ ์ฉํ ๊ฒฐ๊ณผ๋ ์ฌํ์ ์คํจํ์ต๋๋ค(ํ๋ก์ 0.20% vs ์ค๊ฐ์ค์น
1.33%, ๋ฐ๊ฐ ๋ฐ๋ฅ์ 3.4๋ฐฐ). ๋์ถ์ ํ๊ตญ์ด ๋ฌธ๋งฅ์ด ์๋๋ผ ์ฝ๋ ๋ฌธ๋งฅ์
ใป์์ต๋๋ค. 27B ์ ๊ฐ์ ์ฝ๋ ๋ฌธ๋งฅ ํ๋ก๋ธ์์ ์ค์ผ 0๊ฑด์ด์ง๋ง, ์์ ๋ชจ๋ธ์์ ๊ทธ๋๋ก ์ฑ๋ฆฝํ๋ค๊ณ ๊ฐ์ ํ์ง ๋ง์ธ์. ์ 0.8B ๋ง ๋ซ๋ฆฌ๋์ง๋ ์์ง ๋ชจ๋ฆ ๋๋ค. - ์ด๊ฒ์ ์์ ์ฒ๋ฆฌ์ด์ง ๋ฌธ์ฒด ๊ฐ์ ์ด ์๋๋๋ค. ์ฌ๋๋ค์ยทํ๊ตญ์ด ๋ฌธ์ฒด ์ถ์ ๋์์ด ์๋๋๋ค.
์ ํ ์ฐ๊ตฌ
โ ์ ๊ทผ ์์ฒด๋ ์๋กญ์ง ์์ต๋๋ค.
dnotitia/smoothie-qwen ์ด ๊ฐ์ ๋ฐฉํฅ(Qwen
lm_head ์กฐ์ ์ผ๋ก ์ค๊ตญ์ด ์ต์ )์ผ๋ก Qwen3 0.6B~235B ์ฌ์ ์กฐ์ ๋ณธ์ ์ด๋ฏธ ๋ฐฐํฌํ๊ณ ์์ต๋๋ค.
์ด ์ ์ฅ์๊ฐ ๋ํ ๊ฒ์ ํ๊ตญ์ด ํ์ ๋ณด์กด์ ์ค๊ณ์ถ์ผ๋ก ์ผ์ M1/M2/M3 ๋ง์คํฌ ๊ณก์ ๊ณผ, ์์ ์ ์ ์ธ ๊ด์ธก(์จ๋๊ฐ 5๋ฐฐ๋ฅผ ์ข์ฐํ๋ค ยท ๋ฐ์ดํธ ์กฐ๋ฆฝ ๋๋ฌธ์ ํํ์ด 0 ์ด ์๋๋ค ยท ๊ฐ์ ๋ ์ํผ๊ฐ 0.8B ์์ ์ฌํ๋์ง ์๋๋ค)์ ๋๋ค.
๊ด๋ จ: SASFT (ICLR 2026) ยท Korean token pruning ยท TLPO (ACL 2026)
๋ค๋ฅธ ์ธ์ด
๊ฐ์ ๊ธฐ๋ฒ์ ํ๊น ์ธ์ด๋ณ๋ก ๋ค์ ์ค๊ณํ ์ ์ฅ์๋ค์ ๋๋ค. โ ๏ธ ํ๊ตญ์ดํ๋ง ์ธก์ ์ด ๋๋ฌ์ต๋๋ค โ ๋๋จธ์ง๋ ๋ง์คํฌ ์ค๊ณ์ ํ ํฌ๋์ด์ ํ๋ก๋ธ๊น์ง๋ง ๊ฒ์ฆ๋์ต๋๋ค.
| ์ธ์ด | ์ ์ฅ์ | ํ์ ๊ธฐ์ค | ์ธก์ |
|---|---|---|---|
| ํ๊ตญ์ด | (์ด ์ ์ฅ์) | ๊ฐ์ฒดยท๊ฐ๋ + 2์โ ์์ํ์ | โ 3,369 ํ๋กฌํํธ |
| ์ผ๋ณธ์ด | ja | Shift-JIS ๋ ํผํ ๋ฆฌ | โฌ |
| ๋ฒ์ฒด ์ค๊ตญ์ด | zh-TW | Big5 ๋ ํผํ ๋ฆฌ | โฌ |
| ๊ด๋ฅ์ด | yue | Big5-HKSCS ๋ ํผํ ๋ฆฌ | โฌ |
| ๋ฒ ํธ๋จ์ด | vi | CJK ์ ๋ฉด (์ ๋น ์ฌ์ฉ 0) | โฌ |
| ์๋์ด | ar | iso8859-6 + ํ์ํฌยท์ซ์ ์์ธ | โฌ |
โ ์ด ์ ์ฅ์์ ๋ง์คํฌ๋ฅผ ๋ค๋ฅธ ์ธ์ด์ ๊ทธ๋๋ก ์ฐ์ง ๋ง์ธ์. ์ผ๋ณธ์ด ์์ฉ์ด 12๊ฐ ์ค 11๊ฐ๊ฐ
์ฌ๊ธฐ M2 ์ ์๋ฆฝ๋๋ค โ "2์ ์ด์ ์์ํ์ = ์ค๊ตญ์ด ๋จ์ด" ๊ท์น์ ํ๊ตญ์ด ์ ์๋ฒ์์๋ง
์ฑ๋ฆฝํฉ๋๋ค. build_masks_multi.py ๊ฐ ์ธ์ด๋ณ ๊ท์น์ ๋ด๊ณ ์์ต๋๋ค.
๋ผ์ด์ ์ค
apache-2.0 โ ๋ฒ ์ด์ค ๋ชจ๋ธ Qwen/Qwen3.8-27B ์ ๋์ผํฉ๋๋ค. ์ด ์ ์ฅ์๋ ๋ง์คํฌยท์คํฌ๋ฆฝํธ๋ง
๋ฐฐํฌํ๋ฉฐ ๊ฐ์ค์น๋ฅผ ์ฌ๋ฐฐํฌํ์ง ์์ต๋๋ค.
Model tree for ThakiCloud/Qwen3.8-27B-ko-cjk-suppressed
Base model
Qwen/Qwen3.8-27B